C 语言基础–输入输出
1. 输入输出函数概述
- C语言标准库 提供输入/输出函数,用于处理数据输入输出。
- 标准输入设备:通常是键盘。
- 标准输出设备:通常是显示器。
2. 格式化输出:printf
用于向控制台输出数据。
函数原型:
int printf("control string", argument list);
control string
:控制字符串,由文本字符、格式命令(以%
开头)和非打印字符组成。argument list
:参数列表,需与格式命令的数量、类型、顺序匹配。
常见格式化代码:
格式代码 输出内容 %c
单字符 %d
带符号十进制整数 %u
无符号十进制整数 %f
浮点数(小数点形式) %e
浮点数(科学计数法) %s
字符串 %x
无符号十六进制整数 %o
无符号八进制整数 示例:
int a = 5, b = 10, sum = a + b; printf("%d 和 %d 的和是 %d\n", a, b, sum);
3. 格式化输入:scanf
用于从标准输入读取数据。
函数原型:
int scanf("control string", argument list);
control string
:与printf
类似。argument list
:需要传递变量的地址(通过&
获取)。
示例:
int a; float f; char ch; printf("请输入整数、小数和字符:\n"); scanf("%d %f %c", &a, &f, &ch); printf("输入的值是:%d, %.2f, %c\n", a, f, ch);
4. 单字符输入输出
getchar()
:从键盘读取一个字符。示例:
char ch = getchar(); putchar(ch); // 输出字符
putchar()
:向屏幕输出一个字符。getch()
和putch()
(需 <conio.h>):getch()
:无需按下回车即可读取一个字符。示例:
char ch = getch(); putch(ch);
5. 转义字符
转义序列 | 描述 |
---|---|
\n |
换行 |
\t |
水平制表符 |
\\ |
输出反斜杠 |
\" |
输出双引号 |
\0 |
空字符 |
6. 输入输出缓冲区
- 输入缓冲区:存储输入的数据,直到被程序读取。
- 输出缓冲区:存储待输出的数据,直到输出完成。
7. printf
修饰符
宽度修饰符:指定输出宽度(例如
%4d
)。精度修饰符:控制浮点数的精度(例如
%.2f
)。对齐修饰符:
%-d
左对齐。示例:
printf("%10d", 555); // 宽度为10,右对齐 printf("%-10d", 555); // 宽度为10,左对齐 printf("%.2f", 3.14159); // 输出两位小数
8. 注意事项
输入空格、回车处理:
scanf
遇到空格、回车会停止读取,可以用getchar()
清理缓冲区。
特殊字符输出:
printf("%%"); // 输出 %
9. 示例程序
homework2:输入两个整数并把两个数字输出,然后交换两个数字并且输出结果
homework3:输入一个double类型数据,然后输入一个整数n代表需要保留的小数位数,自己实现对输入的小数四舍五入保留n位小数。并把结果输出。
homework4:声明三个变量,要求输入这三条边,计算并显示出该三角形的周长和面积(要求周长保留两位小数,面积保留3位小数)
#include <stdio.h>
#include <stdlib.h>
#include "calculator.h"
#include <math.h>
void homework1(void);
void homework2(void);
void homework3(void);
void homework4(void);
int main()
{
int choice;
while(1)
{
printf("╔ ╗\n");
printf(" 作业选择 \n");
printf(" ================================\n");
printf(" 1. 作业一 (简易计算器修正版) \n");
printf(" 2. 作业二 (数字交换) \n");
printf(" 3. 作业三 (小数四舍五入) \n");
printf(" 4. 作业四 (计算三角形周长与面积) \n");
printf(" 5. 退出 \n");
printf("╚ ╝\n");
printf("请选择: \n");
scanf("%d", &choice);
switch(choice)
{
case 1:
homework1();
break;
case 2:
homework2();
break;
case 3:
homework3();
break;
case 4:
homework4();
break;
case 5:
exit(0);
default:
printf("无效选择,请重试。\n");
}
}
}
void homework1(void)
{
caculator_menu();//调用计算器菜单,可以有效避免别的作业直接调用 add()等计算器功能
}
void homework2(void)
{
int a , b , c;
printf("请输入第一个整数:\n");
scanf("%d", &a);
printf("请输入第二个整数:\n");
scanf("%d", &b);
printf("交换前的结果为:%d %d\n",a, b);
c = a;
a = b;
b = c;
printf("交换后的结果为:%d %d\n", a, b);
}
void homework3(void)
{
double a;
int n;
printf("请输入一个小数:\n");
scanf("%lf",&a);
printf("请输入需要保留的小数位数:\n");
scanf("%d", &n);
printf("保留 %d 位小数的数字为:%.*f\n", n, n, a);
}
void homework4(void)
{
double a, b, c;
printf("请输入三角形三条边的长:\n");
scanf("%lf %lf %lf",&a,&b,&c);
if(a + b > c && a + c > b && b + c > a)
{
double perimeter = a + b + c;
double p = perimeter / 2;
double area = sqrt(p * (p - a) * (p - b) * (p - c));
printf("三角形的周长为:%lf\n", perimeter);
printf("三角形的面积为:%lf\n", area);
}else
{
printf("这三条边不能构成三角形!\n");
}
}