小羊爱吃小草 发表于 2023-11-14 21:23:44

求助

#include <stdio.h>

void Alphabet(char ch)
{
        if (ch >= 'a' && ch <= 'z')
        {
                printf("%c 在字母表中的位置是:%d\n", ch, ch - 'a' + 1);
    }
        if (ch >= 'A' && ch <= 'Z')
        {
      printf("%c 在字母表中的位置是:%d\n", ch, ch - 'A' + 1);
        }
        if ((ch <= 'A') || (ch >= 'Z' && ch <= 'a') || (ch >= 'z'))
        {
      printf("%c 不是字母\n", ch);
        }
}


int main()
{
        char ch;
        while((ch = getchar()) != EOF)
        {
                Alphabet(ch);
        }

        return 0;
}

运行出来,总是显示“不是字母”这一行,找一下原因

isdkz 发表于 2023-11-14 21:23:54

问题出在条件判断的逻辑上。在Alphabet函数中,第三个if语句的条件判断存在问题,导致即使输入的字符是字母,也会被判定为不是字母。正确的条件判断应该是排除字母的情况。下面是修正后的代码:

#include <stdio.h>

void Alphabet(char ch)
{
    if (ch >= 'a' && ch <= 'z')
    {
      printf("%c 在字母表中的位置是:%d\n", ch, ch - 'a' + 1);
    }
    else if (ch >= 'A' && ch <= 'Z')
    {
      printf("%c 在字母表中的位置是:%d\n", ch, ch - 'A' + 1);
    }
    else
    {
      printf("%c 不是字母\n", ch);
    }
}

int main()
{
    char ch;
    while((ch = getchar()) != EOF)
    {
      Alphabet(ch);
    }

    return 0;
}


修正后的代码中,使用了else if和else来确保只有一个条件会被执行。这样就能正确地判断输入的字符是否为字母,并输出相应的信息。

小羊爱吃小草 发表于 2023-11-14 21:28:03

isdkz 发表于 2023-11-14 21:23
问题出在条件判断的逻辑上。在Alphabet函数中,第三个if语句的条件判断存在问题,导致即使输入的字符是字母 ...

不对

小甲鱼 发表于 2023-11-14 21:36:50

其实每次都输出 “不是字母” 是因为把换行符也给检测进去了。

换成

printf("%d 不是字母\n", ch);
可以看出它打印了 “10 不是字母”,因为换行符的 ASCII 编码就是 10 哈~

小甲鱼 发表于 2023-11-14 23:17:42

修改后的代码如下:

#include <stdio.h>

void Alphabet(char ch)
{
      if (ch >= 'a' && ch <= 'z')
      {
                printf("%c 在字母表中的位置是:%d\n", ch, ch - 'a' + 1);
      }
      if (ch >= 'A' && ch <= 'Z')
      {
                printf("%c 在字母表中的位置是:%d\n", ch, ch - 'A' + 1);
      }
      if ((ch < 'A') || (ch > 'Z' && ch < 'a') || (ch > 'z'))
      {
                printf("%c 不是字母\n", ch);
      }
}

int main()
{
      char ch;
      while((ch = getchar()) != EOF)
      {
            if (ch != '\n') Alphabet(ch);
      }

      return 0;
}
页: [1]
查看完整版本: 求助