2017-04-07 212 views
-1

我试过做一个琐事游戏。 出于某种原因,在第一次回答后,整个代码打印自己,当时它只应该只打印一行。我的代码有什么问题? C

int main() 

{

char answer; 
    int score = 16; 


    printf("Hello and welcome to Chen's trivia!\n"); 
    printf("Press ENTER to continue!\n"); 
    getchar(); 

    printf("Ready? Let's begin!\n"); 
    printf("Press ENTER to continue!\n"); 
    getchar(); 


    printf(" Who is the president of the united states?\n"); 
    printf("Barack Obama, Donald Trump, George w. Bush\n"); 
    scanf(" %c", &answer); 
     if(answer == 'Trump' || 'trump'){ 
     printf("You are correct\n"); 
     score*=2; 
     printf("your score is: %d \n", score); 
    }else{ 
     score = (score/2); 
    printf("Wrong answer!\n"); 
    printf("score: %d \n", score); 
    } 


    printf("What superhero shoots web out of his arms?\n"); 
    printf("A.Batman, B.Spiderman, C.Captain America, D.Superman\n"); 
    scanf(" %c", &answer); 
    if(answer == 'B' || 'b'){ 
     printf("That's right, Hero!\n"); 
     score*=2; 
     printf("Youre score is: %d \n", score); 
    }else{ 
    score = (score/2); 
    printf("sorry, wrong answer!\n"); 
    printf("your score is! %d\n", score); 
    } 

    printf("Who is the the main character in 'The Matrix'? \n"); 
    scanf(" %c", &answer); 
    if(answer == 'neo' || 'NEO'){ 
      score*=2; 
     printf("That's right!\n"); 
     printf("Your score is %d\n", score); 
    }else{ 
     score = (score/2); 
    printf("Sorry, Wrong answer!\n"); 
    } 

    printf("What is the capital of Israel?"); 
    scanf(" %c", &answer); 
    if(answer== ('jerusalem') || ('Jerusalem')){ 
      score*=2; 
     printf("That's right!"); 
     printf("Your score is:%d", score); 
    }else{ 
     score = (score/2); 
    printf("Sorry, wrong answer!"); 
    printf("Your score is now:%d", score); 
    } 


return 0; 

}

任何想法? :( BTW,我让我的代码此错误:块

警告:字符常量太长,其 类型的警告:多字符常量wmultichar

得到了在总共6个警告

+0

的可能的复制(http://stackoverflow.com/questions/8004237/how-do-i-properly-compare -strings-in-c) –

+0

此外,不要在C中使用单引号围绕字符串文字。 –

+0

读行...... –

回答

1
char answer; 
/* ... */ 
scanf(" %c", &answer); 

if(answer == 'Trump' || 'trump'){ /* et cetera */ 

你是混乱的字符和字符串的字符串是 字符数组%c是用于读取单个字符scanf函数的代码;。为 一个字符串你可以使用%s字符litera ls用单引号编写,如'a'。字符串文字使用双引号:"A string"。您可以使用 ==运算符来比较字符,但要比较字符串,应该使用strcmp()函数。

您对||运算符的用法不符合您的想法。你需要写两个独立的测试:?如何正确使用C比较字符串]

if ((answer == 'A') || (answer == 'a')) { /* etc */