鱼C论坛

 找回密码
 立即注册
查看: 87|回复: 2

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

[复制链接]
发表于 2024-4-14 16:07:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-14 16:07:46 | 显示全部楼层
你的代码中有两个问题导致无法将大写字母转换为小写字母。

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

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

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

  2. int main()
  3. {
  4.     int ch;
  5.     printf("请输入一行英文:");
  6.     while ((ch = getchar()) != '\n')
  7.     {
  8.         if (ch >= 'A' && ch <= 'Z')  // 将大写字母转换为小写字母
  9.         {
  10.             ch = ch + 'a' - 'A';
  11.         }
  12.         else if (ch >= 'a' && ch <= 'z')  // 将小写字母转换为大写字母
  13.         {
  14.             ch = ch - ('a' - 'A');
  15.         }
  16.         putchar(ch);
  17.     }

  18.     return 0;
  19. }
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-15 11:14:58 | 显示全部楼层
  1.                 else if (ch>='a' && ch<='z');    // 删掉行尾的分号
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表