2016-11-20 5 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; 
} 

ist die Ausgabe:Warum bekomme ich nicht die richtige Ausgabe für diesen Code? Hier

Input abcdE 
Your Code's Output ABCDE 
Expected Correct Output ABCDe 
+2

Postleitzahl in Ihrer Frage richtig formatierten Text. Stellen Sie außerdem sicher, dass Sie [MCVE] und alle Eingabedaten und erwarteten Ausgabedaten bereitstellen. –

+0

Eingang ABCDE Ihres Codes Output ABCDE korrekte Ausgabe ABCDE –

+0

Beitrag hier den Code erwartet und einige Beispiel-Eingang geben und die Ausgabe, die Sie erwarten und die Ausgabe, die Sie bekommen. – root545

Antwort

1

im Code Prüfung: S[i] == isupper(S[i]) ist falsch, weil Sie, ob s sind überprüft [i] mit Bool Wert: wahr oder falsch !?

die Linie oben übersetzt werden kann als:

if(S[i] == 1) or if(S[i] == 0) 
  • wenn Sie möchten, um es überprüfen richtig:

    if (isupper (s [i])) ... // hier Wenn das Zeichen ein Großbuchstabe ist, gibt isupper wahr zurück, andernfalls false.

Sie können einfach ternären Operator Umwandlung jedes Kapital char verwenden und umge -versa zu senken: bitte

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); 
Verwandte Themen