kk我修复了它,但仍然有一个声明我必须把我认为if (hit == length)
然后在你赢得的while
循环printf
之外。但我的问题现在应该放在if (hit == length)
#include <stdio.h>
#include <conio.h>
#include <string.h>
//function prototypes
void game(char [], char [], int);
int main()
{
char word[20] = {'d', 'u','c','k'};
char guessed[20] ={'*s', '*s','*s','*s' };
int length = strlen(word);
game(word,guessed, length);
getch();
return 0;
}
void game(char answer[], char guess[], int length)
{
int life = 5;
int x = 0;
int y = 0;
char letter;
while (x < length && life > 0){
int hit = 0;
printf("enter letter\n");
scanf(" %c",&letter);
for (y = 0; y < length; ++y) {
if (answer[y] == letter && guess[y] != letter)
{
++hit;
guess[y] = letter;
}
}
if (!hit)
{
x += hit;
printf("try again\n");
life = life - 1;
printf("%d tries remaining \n", life);
}
else {
printf("keep going\n");
}
}
}
答案 0 :(得分:0)
您的条件if (!hit)
会检查hit
是否为0。
但是,在过程开始时只将其初始化为0 - 而不是while(..)
循环的每次迭代。
因此 - 一旦hit
被设置为不为0(在某些迭代中),它将始终保持那种方式(而不是0)。
您应该在hit = 0;
循环内设置while
(可能在其开头)。
答案 1 :(得分:0)
你应该在你的while循环开始时将hit设置为0,这样它就会为for循环的每次迭代单独检查:P
答案 2 :(得分:0)
试试这个
char guessed[20] ={ '*', '*','*','*' };
....
if (!hit) {
printf("try again\n");
life = life - 1;
printf("%d tries remaining \n", life);
}
else {
x = hit;
printf("keep going\n");
}