有两个问题的C小测验不起作用?

有两个问题的C小测验不起作用?,c,boolean,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,

我目前正在学习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");
}

你用
%s
读入
答案
。但是,它是一个
字符
。因此,您应该使用
scanf(“%c”和&answer)阅读答案
下一件事:如果您有一个
If
-语句,并且希望比较两个值,那么可以使用
=
来进行比较请注意,
=
是赋值运算符,为某个对象赋值,在您的情况下,它将
“a”
赋值给
答案
,并检查是否相等。
比较字符时,例如,
if(answer==“a”)
不要使用
”。这些表示一个以
NULL
字符(
\0
)结尾的
const char*
)。相反,要检查单个字符,请使用
'
,例如
if(answer==“a”

编辑: 而不是使用

point++;
printf("\t \t \t POINTS: %d \n", point);   
您可以在一行中完成此操作:

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

您使用了后缀表示法
point++
。它在命令之后增加变量。在同一命令中使用
++point
增加变量。有关后缀/前缀的更多信息,请单击。

请定义“不太好用”
scanf(%s),&answer);
如果答案是多个字符(包括nul),您将写入未分配的内存,并且行为将是未定义的。@xing-error-
strcmp
是需要的,然后
scanf(“%s”,&answer);
是wrong@EdHeal是的,它将调用UB。