---恢复内容开始---
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、输入函数printf()
printf函数是一个标准库函数,它的函数在头文件“stdio.h”中。其格式为:printf(“格式控制字符串”, 输出地址表列)。
格式字符串
1.类型
2.格式控制
1)输出宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
int a=5;
printf("%d\n",a);
printf("%2d\n",a);
printf("%02d",a);
2)浮点数%f精度
float的有效数字是7位,精度是小数点后6位;double的有效数字是15位,精度是小数点后6位。
int main()
{ float a=556.123456f;
printf("%f\n",a);
printf("%.2f\n",a);
printf("%6.2f\n",a);
printf("%7.2f",a);
return 0;
}
二、输入函数scanf()
scanf函数是一个标准库函数,它的函数在头文件“stdio.h”中。其格式为:scanf(“格式控制字符串”, 输入地址表列)。scanf是一个阻塞式的函数:函数执行后,会等待用户的输入,如果用户不输入任何内容,它会一直等待。
1.“*”符
用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。如:
scanf("%d %*d %d",&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。
2.宽度
用十进制整数指定输入的宽度(即字符数)。例如:
scanf("%5d",&a);
输入12345678只把12345赋予变量a,其余部分被截去。又如:
scanf("%4d%4d",&a,&b);
输入12345678将把1234赋予a,而把5678赋予b。
3.长度
长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。
使用scanf函数还必须注意以下几点:
1)scanf函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。
2)scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。
3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
scanf("%c%c%c",&a,&b,&c);
输入 d、e、f 则把'd'赋予a,' ' 赋予b,'e'赋予c。只有当输入为 def 时,才能把'd'赋于a,'e'赋予b,'f'赋予c。
#include <stdio.h>
int main(void){
char a,b;
printf("input character a,b\n");
scanf("%c%c",&a,&b);
printf("%c%c\n",a,b);
return 0;
}
由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。而输入改为MN时则可输出MN两字符。
4.如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符“ , ”作间隔符,故输入时应为:5,6,7。又如:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
则输入应为:a=5,b=6,c=7。
5.scanf运行的原理
1)用户输入的内容被存放到scanf的输入缓冲区中。之后,scanf函数会根据格式控制符串的要求,从缓冲区中依次取它想要的内容。如果冲缓冲区中取得的内容和我们的格式要求一致,则把值赋予变量,否则不会修改变量的值。
2)如果scanf缓冲区中还有内容,则scanf不会提示 我们再次输入。