如题所述
//当scanf接收到不匹配的输入时会返回0
#include<stdio.h>
void main()
{
int n=0;
while(n!=99999)
{
if((scanf("%d",&n)==0))
{
printf("错误!!请重新输入\n");
fflush(stdin);
continue;
}
else
printf("OK!!!\n");
}
}
运行结果:
1234
OK!!!
abcd
错误!!请重新输入
a
错误!!请重新输入
12345678
OK!!!
aaa
错误!!请重新输入
99999
OK!!!
请按任意键继续. . .
#include<stdio.h>
void main()
{
int n=0;
while(n!=99999)
{
if((scanf("%d",&n)==0))
{
printf("错误!!请重新输入\n");
fflush(stdin);
continue;
}
else
printf("OK!!!\n");
}
}
运行结果:
1234
OK!!!
abcd
错误!!请重新输入
a
错误!!请重新输入
12345678
OK!!!
aaa
错误!!请重新输入
99999
OK!!!
请按任意键继续. . .
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2016-07-10
不知道你指的是输入一个数字或字符还是一串
下面是输入一个数字或字符的
#include<stdio.h>
int main()
{
char c,c1;
while(1)
{
c=getchar();
c1=getchar(); //你打一个非数字时要按回车,回车本身也是一个字符,
用c1接收回车,以免打一个字符输出两个error
if(c>='0'&&c<='9')
break;
printf("error!\n");
}
}追问
下面是输入一个数字或字符的
#include<stdio.h>
int main()
{
char c,c1;
while(1)
{
c=getchar();
c1=getchar(); //你打一个非数字时要按回车,回车本身也是一个字符,
用c1接收回车,以免打一个字符输出两个error
if(c>='0'&&c<='9')
break;
printf("error!\n");
}
}追问
我输入两位数或三位数呢?
追答这个程序最大可以输入100位,因为c数组为100位。只要有一个字符不是数字,就报错。
#include
int main()
{
char c[100];
int t,i;
while(1)
{
t=0;
gets(c);
for(i=0;c[i]!='\0';i++)
{
if(!(c[i]>='0'&&c[i]<='9'))
{
t=1;
break;
}
}
if(t==1)
printf("error!\n");
else
break;
}
}
第2个回答 2012-04-22
#include <stdio.h> void main() {int i; char m; for (i=0;i>=0;i++) {printf("shu<0-9>;\n"); scanf("%c",&m); if(m>='0'&&m<='9') {printf("%d",(int)m); brack;} else printf("cuo Wu"); } system ("PAUSE"); }追问
那我要是输入12呢?