2.4 数据的输出

数据的输出通常是以显示器为处理对象的,程序向显示器输出数据。

在C语言中,数据输出主要通过以下两种函数实现:

  • 字符输出函数 putchar() - 用于输出单个字符
  • 格式化输出函数 printf() - 用于按指定格式输出数据

这些输出函数是C语言程序与用户交互的重要方式,能够将程序运行结果展示给用户。

2.4.1 字符输出函数 putchar()

函数 putchar() 的功能是把一个字符输出到显示器上。

函数格式:

putchar(c);

其中,参数c可以是字符常量、变量或字符表达式,它的功能是把参数c的值作为ASCII码值,把该ASCII码值所对应的字符输出到显示器上。

示例程序:

#include <stdio.h>
main()
{
    char c = 'A';
    putchar(c); //输出字符A
    putchar('\n'); //对字符进行换行
    putchar('#'); //输出字符"#"
    putchar('\n');
}

该程序运行时,首先在屏幕上显示字母A,换行后,再显示字符"#"。

2.4.2 格式化输出函数 printf()

格式化输出函数是按指定的格式完成输出过程,printf()的功能是向显示器输出信息。

函数格式:

printf("输出格式串", 表达式表);

其中,"输出格式串"包含格式符或非格式符。"格式符"是以"%"开头且后面跟一个字母。

输出格式符:

格式符 功能说明
%c 按字符形式输出
%d 按十进制整数形式输出
%o 按八进制整数形式输出
%x 按十六进制整数形式输出
%f (%e) 按浮点形式输出,默认为6位小数(科学记数法)
%m.nf 按浮点形式输出,显示宽度不小于m,n位小数

printf()的功能是只要遇到格式符,就将对应的表达式的值按指定格式输出到显示器上;只要遇到非格式符,就原样输出。

2.5 数据的输入

数据的输入一般是以键盘为处理对象的,从键盘接收字符和数值。

在C语言中,数据输入主要通过以下两种函数实现:

  • 字符输入函数 getchar() - 用于输入单个字符
  • 格式化输入函数 scanf() - 用于按指定格式输入数据

在程序中使用输入函数时,要求在程序开头包含头文件 stdio.h:

#include <stdio.h>

2.5.1 字符输入函数 getchar()

函数 getchar() 的功能是接收从键盘上输入的字符。

使用示例:

c = getchar();

执行上面的语句时,程序等待用户输入,当用户按下某个键时,变量c就得到了该键的ASCII码值。

示例程序:

#include <stdio.h>
main()
{
    char ch;
    ch = getchar();
    printf("ch=%c, ch=%d\n", ch, ch);
}

执行此程序,当执行到语句 ch=getchar(); 时,计算机会等待用户按键。若用户按了'A'键,就会在屏幕上显示:

ch=A, ch=65

2.5.2 格式化输入函数 scanf()

getchar()函数只能输入一个字符,要想输入其他类型的数据,就需要使用格式化输入函数scanf()。

函数格式:

scanf("格式串", 地址表);

与printf()函数一样,"格式串"中既可以含格式符,也可以含非格式符。

输入格式符:

格式符 功能说明
%c 接收一个字符型数据
%d 接收一个整型数据,直到遇到空格、Tab或回车符
%f 接收一个浮点型数据(float)
%lf 接收一个浮点型数据(double)

输入时,只要遇到非格式符,就要按原样输入;只要遇到格式符,就要按指定格式输入数据。

综合应用实例

下面是一个综合应用数据输入和输出的示例程序:

例2-11:从键盘上输入直径的值,然后计算圆的面积和周长

#define PI 3.1415926
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. 以下程序的输出结果是什么?

#include <stdio.h>
main()
{
    printf("%c,%d", 'A', 'A');
}
A. A,65
B. 65,A
C. A,A
D. 65,65
答案:A. A,65
解析:%c格式输出字符'A',%d格式输出字符'A'的ASCII码值65。