2.4 数据的输出
数据的输出通常是以显示器为处理对象的,程序向显示器输出数据。
在C语言中,数据输出主要通过以下两种函数实现:
- 字符输出函数 putchar() - 用于输出单个字符
- 格式化输出函数 printf() - 用于按指定格式输出数据
这些输出函数是C语言程序与用户交互的重要方式,能够将程序运行结果展示给用户。
2.4.1 字符输出函数 putchar()
函数 putchar() 的功能是把一个字符输出到显示器上。
函数格式:
其中,参数c可以是字符常量、变量或字符表达式,它的功能是把参数c的值作为ASCII码值,把该ASCII码值所对应的字符输出到显示器上。
示例程序:
main()
{
char c = 'A';
putchar(c); //输出字符A
putchar('\n'); //对字符进行换行
putchar('#'); //输出字符"#"
putchar('\n');
}
该程序运行时,首先在屏幕上显示字母A,换行后,再显示字符"#"。
2.4.2 格式化输出函数 printf()
格式化输出函数是按指定的格式完成输出过程,printf()的功能是向显示器输出信息。
函数格式:
其中,"输出格式串"包含格式符或非格式符。"格式符"是以"%"开头且后面跟一个字母。
输出格式符:
| 格式符 | 功能说明 |
|---|---|
| %c | 按字符形式输出 |
| %d | 按十进制整数形式输出 |
| %o | 按八进制整数形式输出 |
| %x | 按十六进制整数形式输出 |
| %f (%e) | 按浮点形式输出,默认为6位小数(科学记数法) |
| %m.nf | 按浮点形式输出,显示宽度不小于m,n位小数 |
printf()的功能是只要遇到格式符,就将对应的表达式的值按指定格式输出到显示器上;只要遇到非格式符,就原样输出。
2.5 数据的输入
数据的输入一般是以键盘为处理对象的,从键盘接收字符和数值。
在C语言中,数据输入主要通过以下两种函数实现:
- 字符输入函数 getchar() - 用于输入单个字符
- 格式化输入函数 scanf() - 用于按指定格式输入数据
在程序中使用输入函数时,要求在程序开头包含头文件 stdio.h:
2.5.1 字符输入函数 getchar()
函数 getchar() 的功能是接收从键盘上输入的字符。
使用示例:
执行上面的语句时,程序等待用户输入,当用户按下某个键时,变量c就得到了该键的ASCII码值。
示例程序:
main()
{
char ch;
ch = getchar();
printf("ch=%c, ch=%d\n", ch, ch);
}
执行此程序,当执行到语句 ch=getchar(); 时,计算机会等待用户按键。若用户按了'A'键,就会在屏幕上显示:
2.5.2 格式化输入函数 scanf()
getchar()函数只能输入一个字符,要想输入其他类型的数据,就需要使用格式化输入函数scanf()。
函数格式:
与printf()函数一样,"格式串"中既可以含格式符,也可以含非格式符。
输入格式符:
| 格式符 | 功能说明 |
|---|---|
| %c | 接收一个字符型数据 |
| %d | 接收一个整型数据,直到遇到空格、Tab或回车符 |
| %f | 接收一个浮点型数据(float) |
| %lf | 接收一个浮点型数据(double) |
输入时,只要遇到非格式符,就要按原样输入;只要遇到格式符,就要按指定格式输入数据。
综合应用实例
下面是一个综合应用数据输入和输出的示例程序:
例2-11:从键盘上输入直径的值,然后计算圆的面积和周长
main()
{
float d, r;
double len, area;
printf("请输入直径的值:");
scanf("%f", &d);
r = d / 2;
area = PI * r * r;
len = 2 * PI * r;
printf("半径R=%f,面积S=%f,周长L=%f\n", r, area, len);
}
程序中使用了符号常量PI。使用符号常量的意义在于当符号常量被多次引用时,既可简化程序的数据输入,又可以在修改同一个常量时只需修改一处即可。
知识点总结与易错点
本节课知识点总结:
- 数据的输出通常是以显示器为处理对象
- putchar()函数用于输出单个字符
- printf()函数用于格式化输出,支持多种格式符
- 数据的输入一般是以键盘为处理对象
- getchar()函数用于输入单个字符
- scanf()函数用于格式化输入,需要注意地址符&的使用
易错点:
- 忘记在scanf()函数的变量前加地址符&
- 混淆printf()和scanf()的格式符用法
- 输入数据时格式与scanf()格式串不匹配
- 使用getchar()时没有注意缓冲区中的换行符
- 浮点数输出时没有指定小数位数导致输出精度问题
综合练习题
1. 以下程序的输出结果是什么?
main()
{
printf("%c,%d", 'A', 'A');
}
解析:%c格式输出字符'A',%d格式输出字符'A'的ASCII码值65。