printf(\输出地址i=06E4*/ printf(\输出浮点数f=3.141593*/
printf(\输出6位其中小数点后4位的浮点数 f=3.1416*/
printf(\输出长浮点数x=0.123457*/ printf(\输出18位其中小数点后16位的长浮点
数x=0.1234567898765432*/ printf(\输出字符c=A*/
printf(\输出字符的ASCII码值c=41*/ printf(\输出数组字符串s[]=Hello, Comrade*/
printf(\输出最多9个字符的字符串s[]=Hello, Co*/
printf(\输出数组字符串首字符地址s=FFBE*/ printf(\输出指针字符串p=How do you do*/ printf(\输出指针的值p=0194*/ getch(); retunr 0; }
上面结果中的地址值在不同计算机上可能不同。
例1.中第一条语句#include<stdio.h>的含义是调用另一个文件stdio.h, 这
是一个头文件, 其中包括全部标准输入输出库函数的数据类型定义和函数说明。
Turbo C2.0对每个库函数便用的变量及函数类型都已作了定义与说明, 放在相应
头文件\中, 用户用到这些函数时必须要用#include<*.h>或#include\
语句调用相应的头文件, 以供连接。若没有用此语句说明, 则连接时将会出现错 误。
二、scanf()函数
scanf()函数是格式化输入函数, 它从标准输入设备(键盘) 读取输入的信息。 其调用格式为:
scanf(\格式化字符串>\地址表>); 格式化字符串包括以下三类不同的字符;
1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。
2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多 个空白字符。
3. 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非 空白字符相同的字符。
地址表是需要读入的所有变量的地址, 而不是变量本身。这与printf()函数
完全不同, 要特别注意。各个变量的地址之间同\分开。 例2: main() { int i, j;
printf(\
scanf(\ }
上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最
后读入另一个整型数。如果\这一特定字符没有找到, scanf()函数就终止。若
参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。 说明:
(1). 对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就
是地址, 因此使用scanf()函数时, 不需要在它们前面加上\操作符。 例3 mian() {
char *p, str[20];
scanf(\从健盘输入字符串*/ scanf(\
printf(\向屏幕输出字符串*/ printf(\ }
(2). 可以在格式化字符串中的\各格式化规定符之间加入一个整数, 表示
任何读操作中的最大位数。
如例3中若规定只能输入10字符给字符串指针p, 则第一条scanf() 函数语句 变为
scanf(\
程序运行时一旦输入字符个数大于10, p就不再继续读入, 而后面的一个读
入函数即scanf(\就会从第11个字符开始读入。 实际使用scanf()函数时存在一个问题, 下面举例进行说明:
当使用多个scanf()函数连续给多个字符变量输入时, 例如: main() {
char c1, c2;
scanf(\ scanf(\
printf(\ }
运行该程序, 输入一个字符A后回车 (要完成输入必须回车), 在执行scanf
(\时, 给变量c1赋值\但回车符仍然留在缓冲区内, 执行输入语句
scanf(\时, 变量c2输出的是一空行, 如果输入AB后回车, 那么输出结 果为: c1 is A, c2 is B。
要解决以上问题, 可以在输入函数前加入清除函数fflush()( 这个函数的使
用方法将在本节最后讲述)。修改以上程序变成: #include<stdio.h> main() {
char c1, c2;