代码如下
#include <stdio.h>
int main()
{
char c;
printf("input a character: ");
c = getchar();
if(c<32)
printf("This is a control character\n");
else if(c>='0'&&c<='9')
printf("This is a digit\n");
else if(c>='A'&&c<='Z')
printf("This is a capitial letter\n");
else if(c>='a'&&c<='z')
printf("This is a small letter\n");
else
printf("This is an other character\n");
return 0;
}
无极空间 发表于 2021-5-22 22:07
那我为啥输入65,并不是输出This is a captial letter
因为getchar()接收的是你输入的第一个字符'6'
所以它会输出--》This is a digit
之所以能和32比较是因为--》char类型是特殊的整型所以是可以将char转换为int类型进行比较的 无极空间 发表于 2021-5-22 22:14
所以这个程序没有错误,但不能实现输入数值准确匹配输出结果
嗯 只能准确匹配0-9 无极空间 发表于 2021-5-22 22:18
好的吧,那足下觉得怎样就可以实现我程序中的要求呢?
我觉得用getchar()来判断你输入的两位数不合适
用scanf("%d",&nun);这种吧
然后前面定义int num;
然后判断,然后输出你想输出的内容就行了。
我的意思是说:
用geichar()判断输入的字符是什么
用scanf()判断输入的数据是什么
即可 取每个位的数 + 30h呗 无极空间 发表于 2021-5-22 22:32
可是这要怎么实现数据到字符的转换呢
你如果想输入一个多位的整数型的字符
然后判断这个多位整数型字符在什么范围的话,也可以不用转为整型我感觉
我觉得用一个字符型的数组即可
用下标的方式来判断即可啊
我写了一个差不多的输出的代码,我觉得是可行的
代码如下
#include <stdio.h>
int main()
{
char num;
int i=0;
do{
num=getchar();
}while(num!='\n');
i=0;
while(num!='\0')
{
putchar(num);
}
return 0;
}
页:
[1]