今天星期日,昨晚十二点睡,但还是起了个大早,复习C语言是出现了一个小问题。
下面看问题:
# include <stdio.h>
int main (void)
{
int i,j,k;
for(k = 0 ; k< 5 ;k++)
{
printf("Please input data:\n");
scanf("%d,%d",&i,&j);
printf("%d,%d\n",i,j);
}
return 0;
}
就这个题,让我费了一上午的时间来处理这个异常。
原因是 得不到变量j 的值,经过两小时的查书和反复练习,终于发现是scanf 函数的问题。
在谭浩强老师的<C语言程序设计> 中发现 scanf 的注意事项:
1、scanf 中的 “格式控制” 后面应当是变量的地址,而不是变量的地址。
scanf("%d,%d",a,b); // Error !
2.在“格式控制” 字符串中除了格式说明意外还有其他字符则在输入数据时应输入与这些字符相同的字符!
scanf("%d--%d--",&a,&b); // 输入时应当将“--” 也一起输入。
3.在用 “%c” 格式输入字符时,空格字符 和“转义字符” 都作为有效字符输入。
scanf("%c%c%c",&c1,%c2,%c3);
//输入时a b c ,程序默认将a 赋值给c1, 空格赋值给c2.....
4.scanf 判断输入结束。
遇到空格。 回车、Tab
按指定宽度 %3d 只取三列。
与非法输入 scanf("%d%c%f",&a,&b,&c); //不多说。
5.高质量的代码: printf("请输入 i, j值 中间用逗号隔开");
scanf("%d,%d",&i,&j);
printf("i = %d ,j = %d",i,j); //程序是给别人写的,所以尽量要有说明
6.不好的代码:scanf("%d,%d\n",&i,&j); // 这样的话在输入数据时要连 \n 输入到屏幕中!
7.应该编写代码对用户的非法输入进行处理!(第十六行)
#include <stdio.h> int main (void) { int i; char ch; printf("请输入i值:"); scanf("%d",&i); printf("i = %d\n",i); /* .... ... .... */ while ((ch = getchar()) != '\n') //清楚键盘上次输入的垃圾字符! continue; int j; printf("请输入j值:"); scanf("%d",&j); printf("j = %d\n",j); return 0; }
心得:细节呀!害死人呀!好了,c语言的顺序程序设计 就此结束,感学郝斌老师的教学视频,至少在我的
枯燥的学习当中增添了些许绿色。谢谢!