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

Posted

tags:

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

可以根据以下代码进行判断:

#include<stdio.h>

int main()

char c ;

while(scanf("%c",&c)!=EOF)

   

getchar();

if(c >='0' && c<='9')

printf("%c是数字\\n",c);

else  if(c >='a' && c<='z' ||  c >='A' && c<='Z')

printf("%c是字母\\n",c);

else printf("%c是特殊字符\\n",c);

return 0;

扩展资料

判断输入字符的方式

由于每个字符通常都有一个特定的ascii码,可以通过ascii码进行判断,当满足输入的字符满足特定数值的ascii码进行判断。部分ascii码如下:

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。

其中:

0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;

通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。

65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

参考资料:百度百科-ascii码表

参考技术A 根据ascii码值判断即可。由于数字,大小写字母均分别为连续存储,所以只需要与对应的最大最小值比较即可确定字符类型。
代码如下:
#include <stdio.h>
int main()

char c;
c = getchar();//读取一个字符。
if(c >='0' && c<='9')printf("是数字\n");
else if(c >='a' && c<='z' || c >='A' && c<='Z'))printf("是字母\n");
else printf("是特殊字符\n");
return 0;

#include
<stdio.h>
void
main()

char
ch;
printf("请输入一个字符:\n");
ch=getchar();
if(ch>='a'&&ch<'z'||ch>='A'&&ch<='Z')
printf("该字符是字母");
else
if(ch>='0'&&ch<='9')
printf("该字符是数字");
else
printf("该字符是特殊字符");

C语言怎样判断用户输入的是中文?

我试过好多方法了,都不行啊。比如我想过用sizeof() 和 strlen() 我本以为strlen()如果接受一个中文文字就返回1,然后用sizeof()的返回值除以strlen()的返回值就是2,如果不是中文返回的是1,这样是不行的,因为当strlen()接受一个中文文字时返回的也是2。晕了!

判断输入的是中文还是英文很简单:
1、首先,要确认数据类型是字符型。
2、英文或一些特殊字符的ASCII码小于0x7f。
3、中文是以区位码形式出现的,ASCII码大于0xa0。
比如:
#include <stdio.h>
#include<string.h>
int main()

char* ss="hello世界";
int i;
while(*str)

if((unsigned)*str>=161) str+=2;i++;
else str++;

printf("Chinese char number is:%d\\n",i);
return 0;
参考技术A //给一个例子。希望对你有帮助#include <stdio.h>
#include <string.h>
void main()

char str[]="123abc万高超.,!";
char strBuf[20]=0;
int j=0,nCount=(int)strlen(str);
for(int i=0;i<nCount;i++)
//如果小于0则是中文,且后面一个也是中文。
if(str[i]<0)

strBuf[j++]=str[i++];
if(i<nCount)strBuf[j++]=str[i];


printf("中文字符有%d个,它们是:\"%s\"",strlen(strBuf)/2,strBuf);
参考技术B 简单判断:大于127,但是只限中文和英文两种情况下

以上是关于c语言 输入一个字符,判断是字母,数字,还是特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

字符型怎么判断是否数字和字母?

C语言怎样判断用户输入的是中文?

c语言中如何判断输入的是字符还是数字

c语言 如何判断输入的是数字还是字母

如何判断一个字符是数字还是字母

Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?