无极空间 发表于 2021-5-22 21:19:46

肖-肖 发表于 2021-5-22 21:24:59

可以的

肖-肖 发表于 2021-5-22 21:30:34

我照着打了一遍,是可以的
代码如下
#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:06:36

无极空间 发表于 2021-5-22 22:07:41

无极空间 发表于 2021-5-22 22:08:54

无极空间 发表于 2021-5-22 22:09:52

肖-肖 发表于 2021-5-22 22:11:16

无极空间 发表于 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:19

肖-肖 发表于 2021-5-22 22:15:38

无极空间 发表于 2021-5-22 22:14
所以这个程序没有错误,但不能实现输入数值准确匹配输出结果

嗯 只能准确匹配0-9

无极空间 发表于 2021-5-22 22:18:27

肖-肖 发表于 2021-5-22 22:23:41

无极空间 发表于 2021-5-22 22:18
好的吧,那足下觉得怎样就可以实现我程序中的要求呢?

我觉得用getchar()来判断你输入的两位数不合适
用scanf("%d",&nun);这种吧
然后前面定义int num;
然后判断,然后输出你想输出的内容就行了。
我的意思是说:
用geichar()判断输入的字符是什么
用scanf()判断输入的数据是什么
即可

无极空间 发表于 2021-5-22 22:32:16

万千只cnm 发表于 2021-5-22 23:21:09

取每个位的数 + 30h呗

无极空间 发表于 2021-5-23 08:36:18

肖-肖 发表于 2021-5-23 10:38:59

无极空间 发表于 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]
查看完整版本: 用getchar语句能否实现?