【发布时间】:2021-12-31 11:27:22
【问题描述】:
我试图解决一个关于如何将大写字母更改为下一个字母并保持小写字母不变的问题。起初我试图检查字符串中是否存在任何大写字母,然后我应该尝试将其更改为小写字母。但我认为我的代码有问题。这是我的一段代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
char alpha[100];
printf("Enter String: ");
gets(alpha);
for (int i = 0; alpha[i] != 0; i++)
{
if (alpha[i] >= 'A' && alpha[i] <= 'Z')
{
//upperL++;
if (alpha[i] >= 65 && alpha[i] <= 90)
{
printf("\n %c", alpha + 1);
}
else if (alpha[i] >= 97 && alpha[i] <= 122)
{
printf("\n %c", alpha + 1);
}
else if (alpha[i] == 90)
{
printf("\n %c", 65);
}
else if (alpha[i] == 122)
{
printf("\n %c", 122);
}
else
{
printf("\n %c", alpha);
}
}
}
getch();
return 0;
}
【问题讨论】:
-
函数顶部的
if(alpha[i] >= 'A' && alpha[i] <= 'Z')将alpha[i]置于 65 到 90 之间。因此其中的所有其他检查都是无用的。 -
你的逻辑没有道理。在内部块中,第一个条件
if (alpha[i] >= 65 && alpha[i] <= 90)将始终为真,因为它与外部if的条件完全相同。所有其他的内在条件永远不会是真的,也可能不存在。 -
你有一堆逻辑错误,例如,你正在检查
if (alpha[i] >= 65 && alpha[i] <= 90),然后在下面,你正在检查else if(alpha[i] == 90),当然这永远不会发生,因为你'已经检查过了。 -
那么,
alpha[i] >= 97 && alpha[i] <= 122是小写字母,这与您开始的问题相矛盾。 -
简而言之,关于
I think that there's something wrong in my code,下面的视频很好地总结了它:youtube.com/watch?v=TE3EZdoWIUw。