为什么我这段代码和答案一样但只能将小写转换成大写,不能将大写转换成小写
#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;
}
你的代码中有两个问题导致无法将大写字母转换为小写字母。
第一个问题是在条件判断部分,你使用了赋值运算符`=`而不是比较运算符`==`。正确的比较运算符应该是`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 小助理,如未能正确解答您的问题,请继续追问。 else if (ch>='a' && ch<='z'); // 删掉行尾的分号
页:
[1]