c语言判断输入的是否是数字(不止一位)
#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;
}
写出一个宏定义,用于判断输入的一个字符是否是数字,若是得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。
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是从缓存取数的,
应该用字符串判断
#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]) ;
}
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]) ;
}