凡是数字皆为字符。任何数字首先是字符,然后才能是数字。所以这个问题应该是如何在字符中识别数字。

直接将每个字符挨个提取出来,将他赋给一个整型,得到它的ASCII码值。然后根据ASCII码的范围来判断它到底是数字字符还是非数字字符。由下表可以得知,数字范围在48~57的都是数字字符。

b813856d9263e2e02dbae68a2ff61f3f.png

用isdigit()函数判断字符串是否为数字。

isdigit()函数包含在ctype.h头文件中,

原型: int isdigit(char c);

用法:#include

功能:判断字符c是否为数字

说明:当c为数字0-9时,返回非零值,否则返回零。

下面使用isdigit()实现一个判断字符串是否为数字的代码。

这个函数是判断某一个字符是否为数字,可以用一个字符数组接受输入的字符,然后循环判断每一个字符是否为数字,如果其中一个不是数字,那么返回0,否则返回非0;包含了判断小数点的个数和负数符号-。#include

#include

void main()

{

char a[10];

int i,j,flag=0;    /*flag标记小数点个数,如果超过一个,那么就不是数字*/

printf("input a number:\n");

scanf("%s",a);

for(i=0;a[i]!=0;i++)

{

if(i==0&&(a[i]=='+'||a[i]=='-'))

{

i++;

continue;

}             /*如果第一个字符为+或-,不判断为非数字,可能是符号标志,继续向下判断*/

if(a[i]=='.')

{

flag++;

if(flag>1)   /*如果小数点个数超过一个,则表示不是数字*/

{

break;

}

else if(flag==1) /*如果小数点个数为1个,则可能为小数,继续判断*/

{

continue;

}

}

j=isdigit(a[i]);

if(j==0)

{

break;

}

}

if(j!=0)

printf("%s yes",a);

else

printf("%s no",a);

getch();

}

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐