我试图制作一个琐事游戏。 出于某种原因,在第一个答案之后,整个代码打印出来的时候它只应该打印一行。
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个警告。
答案 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 */