大小写转换问题
#include <stdio.h>int main()
{
char a;
printf("请输入一个字母:");
scanf_s("%c", &a);
if (a >= 'a' && a <= 'z')
{
a = a - 32;
}
if (a >= 'A' && a <= 'Z')
{
a = a + 32;
}
printf("%c\n", a);
return 0;
}
为什么只能把大写转化为小写,却不能把小写转化为大写呢 #include <stdio.h>
int main()
{
char a;
printf("请输入一个字母:");
scanf_s("%c", &a);
if (a >= 'a' && a <= 'z')
{
a = a - 32;
}
if (a <= 'A' && a >= 'Z')
{
a = a + 32;
}
printf("%c\n", a);
return 0;
}
#include <stdio.h>
int main()
{
char a;
printf("请输入一个字母:");
scanf_s("%c", &a);
if (a >= 'a' && a <= 'z')
{
a = a - 32;
}
//这里要加个else,否则,你转换成大写后,下面的判断又把它转换成小写了。
else if (a <= 'A' && a >= 'Z')
{
a = a + 32;
}
printf("%c\n", a);
return 0;
}
本帖最后由 学习型motor 于 2020-8-21 13:16 编辑
你的代码在你输入小写字母比如a的时候,会进入第一个if语句进行判断转换成大写字母A,然后大写字母A会继续进入第二个if语句进行判断转换成小写字母a,所以你的小写是进行了两次转换的,修改的方法很简单,只需要在第二个if 前加上else就可以了
#include <stdio.h>
int main()
{
char a;
printf("请输入一个字母:");
scanf_s("%c", &a);
if (a >= 'a' && a <= 'z')
{
a = a - 32;
}
if (a <= 'A' && a >= 'Z')
{
a = a + 32;
}
printf("%c\n", a);
return 0;
}
学习型motor 发表于 2020-8-21 13:14
你的代码在你输入小写字母比如a的时候,会进入第一个if语句进行判断转换成大写字母A,然后大写字母A会继续 ...
醍醐灌顶啊,谢谢 livcui 发表于 2020-8-21 11:06
总感觉哪里不对劲{:10_327:} 巴巴鲁 发表于 2020-8-21 14:04
总感觉哪里不对劲
{:10_245:}
页:
[1]