丢的FC 发表于 2024-4-14 16:07:33

为什么我这段代码和答案一样但只能将小写转换成大写,不能将大写转换成小写

#include<stdio.h>
int main()
{
        int ch;
        printf("请输入一行英文:");
        while((ch=getchar())!='\n')
        {
                if(ch>='A' && ch<='Z')
                {
                        ch=ch-'A'+'a';
                }
                else if (ch>='a' && ch<='z');
                {
                        ch=ch-'a'+'A';
                }
                putchar(ch);
       }
       putchar('\n');
       return 0;
}

FishC 发表于 2024-4-14 16:07:46

你的代码中有两个问题导致无法将大写字母转换为小写字母。

第一个问题是在条件判断部分,你使用了赋值运算符`=`而不是比较运算符`==`。正确的比较运算符应该是`ch == 'a'`。

第二个问题是你只考虑了将小写字母转换为大写字母的情况,没有考虑将大写字母转换为小写字母。

下面是修改后的代码,能够将大写字母转换为小写字母:
#include <stdio.h>

int main()
{
    int ch;
    printf("请输入一行英文:");
    while ((ch = getchar()) != '\n')
    {
      if (ch >= 'A' && ch <= 'Z')// 将大写字母转换为小写字母
      {
            ch = ch + 'a' - 'A';
      }
      else if (ch >= 'a' && ch <= 'z')// 将小写字母转换为大写字母
      {
            ch = ch - ('a' - 'A');
      }
      putchar(ch);
    }

    return 0;
}

这样修改后,无论输入的是大写字母还是小写字母,都能正确地转换为相应的大小写形式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-4-15 11:14:58

                else if (ch>='a' && ch<='z');    // 删掉行尾的分号
页: [1]
查看完整版本: 为什么我这段代码和答案一样但只能将小写转换成大写,不能将大写转换成小写