c语言判断输入是否为数字

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:07:12
main()
{
int i,n,a[N];
int ret;
printf("请输入内容\n");
for(i=1;i<N;i++){
scanf("%d",&a[i]);
}
while(1){
printf("请输入要查的值\n");
ret=scanf("%d",&n);
printf("ret=%d\n",ret);
if(ret==0){
printf("输入错误,请重新输入\n");
continue;
}

}
}

代码如上 想用scanf的返回值来判断输入是否为数字,可是却不停的循环
请问大大们 应该如何修改呢?
#include<stdio.h>
#define N 11

你写的这个有太多的错误。至于定义数组的时候a[N]这种错误我就不讲了
还有在循环里面(i=1;i<N;i++) N没赋值就调用的错误我也不讲了
讲你的死循环问题 你没有给循环加一个限制条件 根据你continue的意思我暂时理解为 如果输入的不是数字 那么一直循环 重新输入 一直到你输入的是数字为止跳出循环 对吗?
while(1){
printf("请输入要查的值\n");
ret=scanf("%d",&n);
printf("ret=%d\n",ret);
if(ret==0){
printf("输入错误,请重新输入\n");
continue;
}
break;
}
这样就可以 如果输入的是数字 scanf的返回值为1 那么循环的第一次 不会进入if(ret==0) 也就是说 如果输入的是数字 直接执行break跳出循环
如果输入的不是数字 循环的时候执行语句if(ret==0) 然后执行continue
continue的意思是跳出当前循环继续下一次循环 即执行到continue之后从新循环而不会执行到break 以此类推 只要你输入的不是数字 则永远循环 输入的如果是数字 跳出循环 执行完毕。
大哥 如果小弟回答正常 给点分吧 多谢
=================================================================
另外对于一楼的同学 我必须有好的提醒你scanf()的用法以及返回值的相关问题
我想你肯定不知道 scanf("%d",&i) 如果你输入的是int型则返回1 否则返回0
换句话说即你输入的类型和scanf()里面预先定义的类型一致 则返回1 否则返回0
THANK YOU

让它判断是输入的是数字你就把它跳转出来,你的循环代码里差一个break

你这个程序和判断是否是数字一点都不沾边啊.