......
scanf的使用
程序1
scanf的细节
// 15-1scanf的细节 #include <stdio.h> #pragma warning(disable:4996); main() { int i1, i2; long l1, l2; float f1, f2; double d1, d2; printf("请输入:\n"); scanf("%d%d", &i1, &i2); //键盘输入两个整型变量 scanf("%ld%ld", &l1, &l2); //输入两个长整型变量 scanf("%f%f",&f1,&f2); //输入单精度浮点数型到变量 scanf("%lf%lf", &d1, &d2); //输入双精度浮点型到变量 printf("以下是输出:"); printf("%d\n%d\n", i1, i2); printf("%ld\n%ld\n", l1, l2); printf("%f\n%f\n", f1, f2); printf("%lf\n%lf\n", d1, d2); }
※可以指定输入数据所占列数,系统自动按要求截取所需数据。如:
scanf(“%3d%3d”,&a,&b);
若输入:
5201314(回车)
系统自动将520赋给a,131赋给b。
※与printf不同的是,输入数据时不能规定精度,如:
scanf(“%7.2f”,&n); /*n为浮点型*/
若输入:
123456(回车)
n的值并不是1234.56,而是乱码。
※如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。如:
scanf(“%d,%d”,&a,&b);
输入时应用如下形式:
3,4
如果用:
3(回车)4
变量b将得不到数据。
如果是:
scanf(“%d□□□%d”,&a,&b); // □ 代表空格
输入时应用如下形式:
3□□□4
程序2
scanf格式输入
// 15-2scanf的格式输入 #include <stdio.h> #pragma warning(disable:4996); main() { int i1, i2; scanf("%d,%d", &i1, &i2); //如果两个%d中间加符号,输入端两个数中间也一定要加符号 scanf("i1=%d i2=%d", &i1, &i2); //输入端输入应为:i1=5 i2=8 输出结果为 5 8 printf("第一个数是:%d\n", i1); printf("第二个数是:%d\n", i2); }
※在输入数据时,遇以下情况时该数据认为结束:
(1)遇空格,或按“回车”或“跳格”(TAB)键
(2)按指定的宽度结束,如%3d,只取3列。
(3)遇非法输入。
(4)%c只取1列。
如:
scanf(“%2d%d%f”,&a,&b,&c);
若输入
12345.26 78
3个变量的结果:a为12,b为345,c为0.26
※在输入long型数据时,格式字符必须是%ld;输入double时,格式字符必须是%lf。否则得不到正确的数据