我是一名正在制作小游戏大厅的年轻程序员,无论我做什么,if语句都不会成立,并且它会循环3次,然后继续不与循环交互。感谢所有帮助,我正在努力完成并向我的 friend 们展示。我查过 strcmp 的东西,但我仍然不知道我做错了什么。我已经为此工作了好几天,每次都从头开始,这也是我第一次使用 strcmp。
for(i = 1; i <= 3; i++)
{
do{
system("cls");
printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
printf("What Is Your Choice? Rock, Paper or Scissors\n");
printf("Enter Your Answer Here: ");
scanf("%s", choice);
}while (strcmp(choice,Rock) != 0 && strcmp(choice,Paper) != 0 && strcmp(choice,Scissors) != 0);
do
{
computer = (rand() %3) + 1;
if(computer == 1)
{
system("cls");
printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
printf("Computer Chose Rock\n");
char computerString[30] = "Rock";
}
else if(computer == 2)
{
system("cls");
printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
printf("Computer Chose Paper\n");
char computerString[30] = "Paper";
}
else
{
system("cls");
printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
printf("Computer Chose scissors\n");
char computerString[30] = "Scissors";
}
}while (thing != 0);
if(strcmp(choice, computerString) == 0)
{
printf("It Is A Draw!\n");
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
}
else if(strcmp(choice, "Rock") == 0 && strcmp(computerString, "Scissors") == 0)
{
printf("Winner, Winner Chicken Dinner!\n");
score++;
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
}
else if(strcmp(choice, "Paper") == 0 && strcmp(computerString, "Rock") == 0)
{
printf("Man Will Always Beat Machine! (You Win)\n");
score++;
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
}
else if(strcmp(choice, "Scissors") == 0 && strcmp(computerString, "Paper") == 0)
{
printf("You Win!\n");
score++;
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
}
else if(strcmp(choice, "Scissors") == 0 && strcmp(computerString, "Rock") == 0)
{
printf("Better Luck Next Time, Computer Wins!\n");
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
computerScore++;
}
else if(strcmp(choice, "Rock") == 0 && strcmp(computerString, "Paper") == 0)
{
printf("Computer Beats %s\n", name);
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
computerScore++;
}
else if(strcmp(choice, "Paper") == 0 && strcmp(computerString, "Scissors") == 0){
printf("Computer Prevails!\n");
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
computerScore++;
}
}
printf("The Final Score Is %s %d and Computer %d", name, score, computerScore);
}
最佳答案
else
{
system("cls");
printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
printf("Computer Chose scissors\n");
char computerString[30] = "Scissors";
}
}while (thing != 0);
if(strcmp(choice, computerString) == 0)
{
printf("It Is A Draw!\n");
printf("Type Anything To Continue: ");
scanf("%s", placeHolder);
}
char computerString[30] = "Scissors";
创建一个变量,其作用域是创建它的 block 。以下 }
结束该 block ,因此该变量不再存在。在代码的更下方,当您将 computerString
传递给 strcmp
时,作用域内不存在具有该名称的变量。
要修复此问题,请在代码的前面创建 computerString
,其范围包括需要访问它的所有代码。使用 strcpy
设置 computerString
的值。
您的编译器警告您,您分配了 computerString
一个值,然后让它超出范围而不使用该值。
关于C 编程 if 语句中的 strcmp 不计算 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896094/