C Quizz有2个问题不起作用?

时间:2017-02-09 17:21:47

标签: c boolean

我目前正在学习C,而且我已经有一段时间没有这个问题了。如果它运行,它不起作用它应该如何工作,有时它只是不运行。 如果你给出正确的答案,你应该得到一个观点,但即使你弄错了,它仍然说它是正确的,并给你一个观点。有人可以帮我吗? 这是代码:

这很好用

char name[50], answer;
int point;
printf("Enter your name!\n");
scanf("%s", &name);
printf("\t \t \t Welcome to the game, %s! \n", name);
point = 0;
printf("\t \t \t POINTS: %d \n", point);

这就是问题和答案......不能很好地运作

printf("2+2? \n");
printf("a) 4 \n");
printf("b) 5 \n");
scanf("%s", &answer);
if (answer = "a") {
    printf("Correct\n");
    point++;
    printf("\t \t \t POINTS: %d \n", point);
}
else {
    printf("Not correct");
}
printf("2+3? \n");
printf("a) 5 \n");
printf("b) 4 \n");
scanf("%s", &answer);
if (answer = "a") {
    printf("Correct\n");
    point++;
    printf("\t \t \t POINTS: %d \n", point);
}
else {
    printf("Not correct");
}

1 个答案:

答案 0 :(得分:1)

您使用answer%s中阅读。但是,它是char。因此,您应该使用scanf("%c", &answer);阅读答案 接下来:如果您有一个if - 语句,并且想要比较两个值,则可以使用==来完成。 注意 =是一个赋值运算符并为某个值赋值,在您的情况下,它将"a"分配给answer==检查是否相等。
比较字符时,例如if (answer == "a")不使用" "。这些表示以const char *字符(NULL)终止的\0。相反,要检查单个字符,请使用' ',例如if (answer == 'a'
修改: 而不是使用

point++;
printf("\t \t \t POINTS: %d \n", point);   

你可以在一行中做到这一点:

printf("\t \t \t POINTS: %d \n", ++point);

您使用了postfix-notation point++。这会在命令之后增加变量。使用++point在同一命令中递增变量。有关后缀/前缀的更多信息,请单击here