2016-11-20 91 views
-6
#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 
+2

邮编为正确格式化文本请。还要确保提供[MCVE]以及所有输入数据和预期输出数据。 –

+0

输入 ABCDE 代码的输出 ABCDE 这里预期的正确输出 ABCDE –

+0

后的代码,并给出一些示例输入您所期待的输出和你所得到的输出。 – root545

回答

1

在你的代码检查:S[i] == isupper(S[i])不正确,因为你正在检查是否符合S [I]与布尔值:真或假!?

线以上可以作为翻译:

if(S[i] == 1) or if(S[i] == 0) 
  • 如果你要正确地检查:

    如果(isupper(S [1]))... //这里如果字符是大写isupper则返回true,否则返回false。

,你可以简单地使用三元运算符将任何资本焦炭降低和副-versa:在你的问题

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); 
相关问题