c - 我的代码有什么问题吗? C

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

}

有什么想法吗? :( 顺便说一句,我的代码中出现此错误: block

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

总共收到 6 条警告。

最佳答案

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

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

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

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

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

关于c - 我的代码有什么问题吗? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284880/

相关文章:

c - Valgrind 提示 inet_pton()

C 预处理器删除尾随逗号

c - (void*) ptr == ptr 总是为真吗?

c++ - Arduino 字符串比较不起作用

c - 如何获取目录中的目录数?

c - "formatted"C语言

c - 我需要在 C 中拆分代码以实现高斯消除法

c - 这样的代码合法吗?

c - 如何只检查一次输入,而不是挂起等待输入

c - 如何在 C 中清除此数组指针?