在 C 中计算破折号以退出 While 循环

Posted

技术标签:

【中文标题】在 C 中计算破折号以退出 While 循环【英文标题】:Counting Dashes to Exit a While Loop in C 【发布时间】:2020-09-28 06:14:25 【问题描述】:

我使用 while 循环制作了一个刽子手游戏。我想使用破折号的数量 == 0 来打破循环,这样玩家就知道他们赢了。这个词隐藏在“-”后面。我的词是编码,所以它有 6 个破折号。

当我运行程序时,对这个词的第一个猜测是准确的破折号数。但是在第二次猜测之后,以此类推,它将所有猜测中的所有破折号加在一起,而不仅仅是那一回合。到第三回合,它说我有 9 个破折号,因为这就是所有回合中剩下的数量。关于如何解决的任何想法?

char word[] =  "Coding" ;
char dash[] = "------";
char guess;

int numguesses = 10; 
int count;
int loopcount;
int i;
int dashcount;

int main()

printf("Your Word Is: %s", &dash);
//printf("\nWord: %c", &dash);

loopcount = 10;
count = 1;
while (count <= loopcount)

    printf("\n\nPick a letter to guess: ");
    scanf(" %c", &guess);

    printf("\n\nYour Guess Was %c. ", guess);
    count = count + 1;

    if (guess == 'c')
    
        dash[0] = 'c';
        printf("\n\n %s", dash);
    
    else if (guess == 'o')
    
        dash[1] = 'o';
        printf("\n\n %s", dash);
    
    else if (guess == 'd')
    
        dash[2] = 'd';
        printf("\n\n %s", dash);
    
    else if (guess == 'i')
    
        dash[3] = 'i';
        printf("\n\n %s", dash);
    
    else if (guess == 'n')
    
        dash[4] = 'n';
        printf("\n\n %s", dash);
    
    else if (guess == 'g')
    
        dash[5] = 'g';
        printf("\n\n %s", dash);
    
    else
        printf("That Letter Is Not Apart of this Word");
    
    printf("\n\nYou are at Guess Number %d, Your word is at %s", count, dash);
    
    for (i = 0; dash[i]; i++)
    
        if (dash[i] == '-')
        
            dashcount++;
        
    
    printf("\n\nDoes it work ?: %d", dashcount);


if (count < numguesses)

    printf("\n\n\nYou Won the Game, Your Awesome!!");

else

    printf("\n\n\nI'm Sorry, the word was %s.", word);


printf("\n\n");
return 0;

【问题讨论】:

printf("Your Word Is: %s", &amp;dash);阅读手册。 @Sourav Ghosh 什么手册? printf() 手册,并注意类型! 【参考方案1】:

问题在于您没有重置 dashcount 变量,因此每次它都从以前的值开始并在左侧添加破折号

for (i = 0; dash[i]; i++)

    if (dash[i] == '-')
    
        dashcount++;
    

您可以通过这种方式轻松解决此问题

dashcount=0;
for (i = 0; dash[i]; i++)

    if (dash[i] == '-')
    
        dashcount++;
    

【讨论】:

非常感谢!

以上是关于在 C 中计算破折号以退出 While 循环的主要内容,如果未能解决你的问题,请参考以下文章

为啥while循环不退出?

带有 Paramiko 的嵌套 SSH 退出 while 循环

用户输入退出以中断while循环

退出循环break,在whilefordo...while循环中使用break语句退出当前循环,直接执行后面的代码。

如何在 Java 中退出 while 循环?

使用外部事件退出 while 循环