#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;
int main()
{
char S[100];
gets(S);
for (int i = 0; S[i] != '\0'; i++) {
if (S[i] == isupper(S[i])) {
S[i] = tolower(S[i]);
}
else {
S[i] = toupper(S[i]);
}
}
puts(S);
return 0;
}
这是输出:
Input abcdE
Your Code's Output ABCDE
Expected Correct Output ABCDe
答案 0 :(得分:1)
在您的代码检查中:S[i] == isupper(S[i])
不正确,因为您正在检查s [i]是否具有bool值:true或false !?
上面的行可以翻译为:
if(S[i] == 1) or if(S[i] == 0)
如果要正确检查:
if(isupper(s [i]))... //这里如果字符是大写,则isupper返回true,否则返回false。
你可以简单地使用三元运算符将任何大写字母转换为较低的和反向的:
char S[100];
gets(S);
for (int i = 0; i < strlen(S); i++)
(isupper(S[i]) ) ? S[i] = tolower(S[i]) : S[i] = toupper(S[i]);
puts(S);