-
1 文字讲解
-
2 视频讲解
数据的输入一般是以键盘为处理对象的,从键盘接收字符和数值。
字符输入函数 getchar( )和输出函数 putchar( )是以一个字符为单位来完成输入/输出过程的。在程序中,使用这两个函数时,要求在程序开头包含头文件 stdio.h:
#include <stdio.h>
2.5.1 字符输getchar入函数()
函数 getchar( )的功能是接收从键盘上输入的字符。在程序中使用这个函数输入字符时,可以用一个变量来接收读取的字符,例如
c =getchar( );
执行上面的语句时,程序等待用户输入,当用户按下某个键时,变量c就得到了该键的代码值。
在进行数据输入时有一个特殊的字符,就是从键盘输入(表示将Cu键与Z键同时按下),Z称为文件尾标,表示输入过程结束,这个特殊字符的值为-1。
例2-10 字符输入函数 getchar( )的功能
#include <stdio.h>
main( )
{
char ch;
ch=getchar( );
printf("ch =%c, ch=%d \n", ch);
}
执行此程序,当执行到语句:
ch=getchar( );
时,计算机就会等待用户按键(等待输入)。此时,若用户按了A键,就会在屏幕上显示如图2-8所示内容。
图2-8中的65是大写字母A的ASC码值。
2.5.2 格式化输入函数scanf( )
getchar( )函数只能输入一个字符,要想输入其他类型的数据,就需要使用格式化输入函数scanf( ),该函数按指定的格式完成输入。scanf()函数的功能是按指定的格式从键盘接收输入信息。
格式化输入函数 scanf( )的一般使用格式如下:
scanf("格式串",地址表);
与printf( )函数一样,“格式串”中既可以含格式符,也可以含非格式符。 scanf( )中格式符的意义同 printf( ),如表2-5所示。
表2-5输入格式符
| 格式符 | 功能说明 |
| %c | 接收一个字符型数据 |
| %d | 接收一个整型数据,直到遇到空格、<Tab>或回车符 |
| %f | 接收一个浮点型数据(float) |
| %lf | 接收一个浮点型数据(double) |
输入时,只要遇到非格式符,就要求原样输入,只要遇到格式符,就要按指定格式输入数据,输入的数据存入对应地址的存储空间中。例如
scanf("x=%d, y=%d", &x, &y );
这里,scanf( )函数中的“&x"和“&y”分别是变量x和y的地址,若执行该语句后x=123,y=500, 则可按下面的格式输入:
x=123,y=500
按回车键后结束输入。此时123和500分别写入x和y所在的存储单元中。
当 scanf( )函数有多个输入项时,键盘输入的各项信息之间可以用空格、Tab键或回车键作为分隔符。比如,执行
scanf("%d %d", &x. &y )
语句时,可以输入:
123 500
注意:此时逗号、分号等标点符号不能作为分隔符,因为它们未出现在格式串中。
例2-11 从键盘上输入直径的值,然后计算圆的面积和周长。
#include <stdio.h>
# 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);
}
该程序的运行结果如图2-9所示。

图2-9 例2-11运行结果
程序中使用了符号常量PI。使用符号常量的意义在于当符号常量被多次引用时,既可简化程序的数据输入,又可以在修改同一个常量时只需修改一处即可。若在程序中多次出现某个常量,且该常量的位数较多(如3.1415926),则使用符号常量会方便得多。
用define定义符号常量,在C语言中实际上是进行宏定义。宏定义是用一个指定的标识符来代替一个字符串,它的一般形式为:
#define 标识符 字符串
这个“标识符”称为宏名,在预编译时,将宏名替换成字符串,这个过程称为“宏展开”。如将"area=PI*r*r;"展开为“area=3.1415926*r*r;”。

