C语言的问题,为什么我在这个程序中只要输入的不是数字就会显示第二个IF中的输出语句“超出计数范围”

我本来想用‘!’做截止的但是一输入非数字就会输出语句“超出计数范围”为什么呀??
谢谢了··
#include<stdio.h>
#define n 101
void main()
{
printf("输入任意整数输入,以0为止\n");
int f[n],i,c;
for(i=0;i<=100;i++)
{
scanf("%d",&f[i]);
if(f[i]==0)
{

for(f[i]=f[0],c=0;c<=i-1;c++)
{
f[c]=f[c+1];
printf("%-3d",f[c]);
}
break;
}
if(i==99)
{
printf("超出计数范围\n");break;
}
}
printf("\n");
}

第1个回答  2013-10-12
因为第一个for循环里面的第一个if语句当你输入的数据不是为0的时候,就不会去执行,而i会一直自加,一直到99.然后输出“超出计数范围”这句话。追问

那为什么我输入的是数字的时候下次循环的scanf回执行,要是输入的是!这一类的字符时直接就变成输出超出计算范围了结束程序

第2个回答  2013-10-12
输入有返回值
scanf函数的返回值是正确读入的变量个数
如果写上
if(scanf("%d",&f[i])!=1)goto loop1;
会跳转到喜欢的地方,也可以用break来跳出循环
如果你输入!做为标记符,可以在输入以后中断循环,进入下一步
返回值用起来比较方便追问

那为什么我输入的是数字的时候下次循环的scanf回执行,要是输入的是!这一类的字符时直接就变成输出超出计算范围了,然后结束程序

追答

加上if条件,对输入的东西过滤,可以选择下一步做什么,可以是退出,也可以是做其他的响应啊

比如说用
int a=0;
while(a!=0)
if(scanf("%d",&a)==1)
printf("输入的是 %d\n",a);
else
printf("输入的不是一个数字\n");

可以循环使用,当输入0时退出循环

本回答被提问者采纳
第3个回答  2013-10-12
scanf("%d",&f[i]); 限制了只能输入整数,%d表示整数
相似回答