"西蒙说"是一个记忆游戏,其中"西蒙"输出10个字符(R,G,B,Y)的序列,用户必须重复该序列。创建一个for循环,比较从索引0开始的两个字符串。对于每个匹配,将一个点添加到userScore。在不匹配时,使用break语句退出循环。
Ex:以下模式产生的userScore为4:
simonPattern:R,R,G,B,R,Y,Y,B,G,Y
userPattern:R,R,G,B,B,R,Y,B,G,Y
#include <stdio.h>
#include <string.h>
int main(void) {
char simonPattern[50] = "";
char userPattern[50] = "";
int userScore = 0;
int i = 0;
userScore = 0;
strcpy(simonPattern, "RRGBRYYBGY");
strcpy(userPattern, "RRGBBRYBGY");
while (userPattern[i] = simonPattern[i]) {
userScore = userScore + 1;
++i;
if (userPattern[i] != simonPattern[i]) {
break;
}
}
printf("userScore: %d\n", userScore);
return 0;
}
我尝试运行代码,但我得到了这个
http://i.imgur.com/T7srTbb.png
有谁知道导致额外1的原因是什么?
感谢。
答案 0 :(得分:0)
更改while循环中的条件以使用==
而不是=
。现在你正在做一个作业,而不是比较两个意思,第一个字符总是相同的,得分为1.你可以从循环中删除if语句。
分配要求您使用for循环,而不是一段时间。如果你只是将我移入for循环并填写其余部分,同时将增量移动到!=检查之后它将起作用。
答案 1 :(得分:0)
while (simonPattern.at(i) == userPattern.at(i))
{
++i;
++userScore;
}
答案 2 :(得分:0)
请确保使用“ FOR”循环,我看到您正在使用“ WHILE”循环。您将要使用==比较运算符,而不是=赋值运算符。
这是我的代码,工作正常:
#include <stdio.h>
#include <string.h>
int main(void) {
char simonPattern[50];
char userPattern[50];
int userScore;
int i;
userScore = 0;
strcpy(simonPattern, "RRGBRYYBGY");
strcpy(userPattern, "RRGBBRYBGY");
i = 0;
for ( i = 0; userPattern[i] == simonPattern[i]; ++i) {
userScore = userScore +1;
if (userPattern[i] != simonPattern[i]){
break;
}
}
printf("userScore: %d\n", userScore);
return 0;
}