鱼C论坛

 找回密码
 立即注册
查看: 588|回复: 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'`。

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

下面是修改后的代码,能够将大写字母转换为小写字母:
#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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 01:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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