我的代码出了什么问题? C

时间:2017-04-07 18:28:22

标签: 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;

}

有什么想法吗? :( 顺便说一句,我在我的代码上遇到了这个错误:块

警告:字符常量对于其类型而言太长 警告:多字符字符常量wmultichar

共收到6个警告。

1 个答案:

答案 0 :(得分:1)

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

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

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

您对||运算符的使用并不符合您的想法。您需要编写两个单独的测试:

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