首先,scanf即输入函数,printf即输出函数。
一.printf
向终端输出若干个任意类型的数据
printf(控制格式,输出表列)
printf("a=%d,b=%c \n",i,c);
其中,a,b为普通字符,%d,%c为格式声明,二者合为"格式控制"。i,c则为输出列表。
注:
1.格式声明:由%和格式字符构成,作用是将输出的数据转换为指定的格式后输出。
2.普通字符:即需要在输出时原样输出的字符。
输出表列是程序需要输出的一些数据,可以是常量、变量、或表达式。
例如输入程序:
#include<stdio.h>
int main()
{
int x=65,y=10;
int a,b;
printf("a=%d,b=%d",x,y);
}
运行结果如下:
可见,a,b作为普通字符是原样输出的,真正需要输出的数据是输出列表中的数,也就是上述程序中x,y对应的值。(所以说printf是规行矩步的输出语句)
二.scanf
按照规定的格式规范输入数据
scanf(格式控制,地址表列)
scanf("a=%f,b=%f",&a,&b)
与printf不同的是,在scanf中格式控制后是地址表列(具体不作详解)。
特别注意:scanf函数没有计算功能,所以要注意以下事项:
1.输入多个整形数据或实形数据时,可用空格、回车或制表符作间隔;
2.输入多个字符型数据时,数据间不可使用分隔符(原因是空格等本身就是一个字符);
3.若指定了输入数据的宽度,则系统自动按其截取所需数据;
4.%后加*表示跳过相应的数据接收。
下面用例子将上述部分注意事项形象化
#include<stdio.h>
int main()
{
int a,b;
printf("input two numbers:");
scanf("%d%d",&a,&b);
printf("a=%d,b=%d",a,b);
}
运行上述程序的结果为:
输入两个整数:例如输入30和50,得到如下结果:
这里我将30和50间用回车键间隔,会出现上图效果,两个数字在不同的两行;若不用任何间隔,则输出的是3050,不再是两个数30和50。
当然,也可以将scanf("%d%d",&a,&b);换为scanf("%d,%d",&a,&b);即在两个%d之间加上一个",",这样在输入数据时不使用空格等间隔,而要使用“,”(即逗号)将两个数字隔开,若不用逗号,数据将会出错。
如下:
结果无影响,只是输入数字时的方式不同。
注:
在编写程序时不要忘写库函数(不写的话有时也可以运行,但会产生警告),还有每句程序后的“;”.