针对这个问题,其实很好处理,但是多多少少也需要用户的配合,AS we all know, 任何程序都不可能是绝对完美的,废话不多说直接上代码。
#include "stdio.h"
int main(){
int temp;
printf("\nplease input the value of temp(int):");
printf("\n 求求您啦,输入个正常的整数把!");
scanf("%d",&temp);
/*
****
**
**
** balalalalal
*/
return 520;
}
你在写代码的时候让用户输入是不是总是这样子?求爷爷喊奶奶,一旦输入的数字不合格或者根本不是数字的时候,将会面临“灾难性的后果”,这样的代码显然是非常糟糕的,学过数据结构的同学肯定都知道,一个好的算法必须要满足五个特性,而这串代码显然已经不满足健壮性了,可见他是非常脆弱的,用户的轻轻一击便会让算法结果产生翻天覆地的变化。
有没有什么装备给这串代码武装自己呢? 显然是有的,否则也不会有这篇文章了,废话不多说,直接上代码。
#include "stdio.h"
int main(){
int temp;
char ch;
printf("\nplease input the value of temp(int):");
printf("\n 你随便输入,搞不定算我输!");
while((scanf("%d",&temp))!=1){
printf("\n你小子的数值类型输入错误,请按回车键之后重新输入!");
while((ch=getchar())!=' ') continue;
}
return 520;
很容易看出这段代码与上述代码的不同,C语言的初学者可能很难想到scanf还是可以有返回值的,当返回值为1时代表着输入内容一切无误,一旦不为1则说明了输入的内容是违规的。这样就可以防止在错误的情况下继续放任代码往下面执行。
可能细心的同学会发现,内部为什么还有一层循环呢?这是为了防止这个循环会无限的进行下去,有兴趣的小伙伴可以尝试删去内部循环试一下。
优化到此为止嘛? 当然不是,这就让我们考虑到了这个循环的其他用途,当我们想要的temp值在某个区间怎么办嘛?这就需要我们灵活的加判别条件啦, 举个栗子;
#include "stdio.h"
int main(){
int temp;
char ch;
printf("\nplease input the value of temp(int):");
printf("\n 你随便输入,搞不定算我输!");
while((scanf("%d",&temp))!=1 || temp<=0){
//这里 我还想让temp的输入值为整数, 就也可以这样子
printf("\n你小子的数值类型输入错误,请按回车键之后重新输入!");
while((ch=getchar())!=' ') continue;
}
return 520;
讲到这里不知道大家接下来的编程生活中会不会有一丝丝改变呢? 当然,我也是一个C语言进阶者,如果有不足的地方欢迎大家多多指正,多多补充,大家一起进步!!!!!
淦