c语言判断输入的是不是是数字(不止一位)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言判断输入的是不是是数字(不止一位)相关的知识,希望对你有一定的参考价值。

c语言判断输入的是否是数字(不止一位),帮忙看一下我的程序错在哪儿,为什么输入一个非数字字符并按下回车后程序一直输出input error!please iput again! 的信息(死循环了),而不是像我预期的那样继续等待重新输入?
#include <stdio.h>

void main()

int i ;
int a[10] ;
int r ;

for(i = 0 ; i < 10 ; )

r = scanf("%d", &a[i]) ;
if(r==1)
i++ ;
else
printf("input error!please input again!\n") ;


for(i = 0 ; i < 10 ; i++)
printf("%d\n",a[i]) ;

#include<stdio.h>

intmain()

charc;

c=getchar();

//来判断是否为数字,如果是数字那么会返回非0

if(is digit(c)!=0)

printf("是数字\\n");

//来判断是否为字母,如果是字母那么返回非0

elseif (is alpha(c)!=0)

printf("是字母\\n");

else

printf("是特殊字符\\n");

扩展资料

输入一个字符判断其是字母字符还是数字字符

#include<stdio.h>

int  main()

char ch;

printf("Input ch:");

ch=getchar();

if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))//判断是不是字母

printf("字母\\n");

else if(ch>='0'&&ch<='9')//判断是不是数字

printf("数字\\n");

else

printf("其他\\n");

return 0;

参考技术A

写出一个宏定义,用于判断输入的一个字符是否是数字,若是得1,否则得0。

代码如下:

#include <stdio.h>

#define P(x) x>‘0’&&x<‘9’? 1:0

void main()

char ch;

printf(“请输入一个字符:\\n”);

scanf("%c",&ch);

printf("%d\\n",P(ch));

扩展资料

宏定义的优点:

方便程序的修改

使用简单宏定义可用宏代替一个在程序中经常使用的常量,这样在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时, 我们可以用较短的有意义的标识符来写程序,这样更方便一些。

相对于==全局变量==两者的区别如下:

1、宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以。

2、宏定义的只是一段字符,在编译的时候被替换到引用的位置。在运行中是没有宏定义的概念的。而变量在运行时要为其分配内存。

3、宏定义不可以被赋值,即其值一旦定义不可修改,而变量在运行过程中可以被修改。

4、宏定义只有在定义所在文件,或引用所在文件的其它文件中使用。 而全局变量可以在工程所有文件中使用,只要再使用前加一个声明就可以了。换句话说,宏定义不需要extern。

参考技术B

1、使用 if(scanf("%d",&h)!=1) 来判断
printf("it's not a number!\\n");
因为scanf是从缓存中读取输入的数据如果输入的不是数字,就会返回0,如果是数字就会返回1;一般人不知道scanf还有返回值,就可以看看头文件中scanf的定义了。
2、例程:

#include <stdio.h>
int main()

int h;
while(!scanf("%d",&h))

fflush(stdin);
printf("\\n输入错误,请重新输入:\\n");

//其中fflush(stdin)是清理缓存,就像我上面说的scanf是从缓存取数的,

参考技术C 不能这么做的,你输入了不是数字的东西,输入就已经错误了.
应该用字符串判断
#include <stdio.h>
bool ok(char s[])

int i;
for(i=0;s[i];i++)

if(s[i]>='0'&&s[i]<='9')//是数字,继续判断
continue;
else return false;//不是数字,就返回假

return true;//都是是数字返回真

int getVal(char s[])

int ret=0,i;
for(i=0;s[i];i++)

ret=ret*10+s[i]-'0';

return ret;

void main()

int i ;
int a[10] ;
int r ;
char s[100];
for(i = 0 ; i < 10 ; )

scanf("%s", s) ;
if(ok(s))

a[i]=getVal(s);//获得S的值
i++ ;

else
printf("input error!please input again!\n") ;


for(i = 0 ; i < 10 ; i++)
printf("%d\n",a[i]) ;
参考技术D #include <stdio.h>
void main()

int i ;
int a[10] ;
int r ;

for(i = 0 ; i < 10 ; )

r = scanf("%d", &a[i]) ;
if(r==1)
i++ ;
else

printf("input error!please input again!\n") ;
flushall(); //加上这行试试!加上这行试试!加上这行试试!



for(i = 0 ; i < 10 ; i++)
printf("%d\n",a[i]) ;
本回答被提问者采纳

急,急,急!!!!C语言判断输入的两个操作数数是不是是数字。(可以为负数),望高手赐教,不胜感激!!!

C语言判断输入的两个操作数数是否是数字。(可以为负数)

比如
#include "stdio.h"
void main()

double num1,num2,result;
char op;
printf("Please input an expression.Ex:1+2");
input:scanf("%f%c%f",&num1,&op,&num2);
if(//就是这里如何判断呢?判断它如果是数字,就进行运算,可以为负数)

switch(op)

case '+': result=num1+num2;
break;
case '-':result=num1-num2;

break;
case '*':result=num1*num2;

break;
case '/':
if(num2!=0)

result=num1/num2;

else
printf("error,input again:");
fflush(stdin);
goto input;
break;
case '%': if(num2!=0)

result=(int)num1%(int)num2;

else
printf("error,input again:");
fflush(stdin);
goto input;
break;

printf("%.2lf%c%.2lf=%.2lf",num1,op,num2,result);
goto input; //让程序可以不断执行

else

printf("Error expression,the operator must be numbers!,try again:");
fflush(stdin);
goto input;

加上库函数包含文件#include<ctype.h>
判断函数是这个isdigit(),括号内为变量,是数字返回值为真,不是则为假

应该不能,抱歉。这个函数是字符判断函数,分析其ascii码是否在48到57之间,也就是0到9.

如果要实现你所说的,还要再多写一些函数。
对了,用数字转字符串函数,然后在一一判断书不是数字一级负号。
参考技术A 这里的num1和num2是双精度数据类型的变量,你按照%f格式读入数据,无论你输入的数据是什么,系统都是按数值读进来的,只是如果你给的数据类型不对,读进来的数据值是错误的,但是在num1,num2变量当中的内容一定数值,这是不用判断的。
可能你可以判断一下op中的内容是不是+-*/?
参考技术B //判断输入的函数
int keyinput()

char input[20]; //定义字符串接收输入,输入字符也不会错
int i=0;

scanf("%s",input); //接收输入

for(i;i<strlen(input);i++) //strlen 函数在 string.h
//isdigit 函数在 ctype.h 在vc++6.0中 isdigit() 如果是数字返回4
if(isdigit(input[i])!=4)
return 9999;//如果不是数字返回 9999 (这个自己定)

return atoi(input);//返回输入的值


说明:以上代码为代码段,如果使用的引用 (在文件最上方加上:#include “ctype.h” #include"string.h");
引用此函数,只用 调用 " 定义的int 型变量=keyint() "即可;

参考资料:自产

以上是关于c语言判断输入的是不是是数字(不止一位)的主要内容,如果未能解决你的问题,请参考以下文章

急,急,急!!!!C语言判断输入的两个操作数数是不是是数字。(可以为负数),望高手赐教,不胜感激!!!

C语言如何判断输入数字的个数

C语言,输入一个整数,从高位开始逐位分割并输出它的各位数字

c语言 输入一个字符,判断是字母,数字,还是特殊字符?

c语言 怎么判断输入的是否数字?

C语言输入一个整数,判断是不是是质数?