使用1D数组和for循环的C语言字符猜游戏

问题描述 投票:0回答:3

如果要进行迭代(“ i == [index]”),我打算使用“ continue statement”跳过特定字符。我想跳过索引5处的字符。请在下面是代码。虽然是新手。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char guess[10]="Programmer";
    char choice;
    printf("Welcome to my guessing game\n");
    printf("===============================\n");
    int i;
    for(i=0;i<10;i++)
    {
         printf("%c", guess[i]);
          if(i==guess[5])
            continue;
    }

    printf("\n\n");
    printf("Guess which letter is missing\n");
    scanf(" %c",&choice);

    if(choice==guess[5])
    {
        printf("Excellent! Good point");
    }else
    {
       printf("Ooops! Wrong answer\n");
    }

    return 0;
}
c arrays for-loop continue
3个回答
1
投票

这里是解决方法:

还如上所述更新了数组大小(在任何地方都不会将其视为字符串,但是比后悔更安全)。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char guess[12]="Programmer";
    char choice;
    printf("Welcome to my guessing game\n");
    printf("===============================\n");
    int i;
    for(i=0;i<10;i++)
    {
        if( i != 5 )
        {
            printf("%c", guess[i]);
        }
    }

    printf("\n\n");
    printf("Guess which letter is missing\n");
    scanf(" %c",&choice);

    if(choice==guess[5])
    {
        printf("Excellent! Good point");
    }else
    {
       printf("Ooops! Wrong answer\n");
    }

    return 0;
}

这里是输出:

Output


1
投票

首先,您需要在要跳过的指令之前编写继续语句。您要跳过在guess [5]中相同的每个字符还是要跳过索引5?

如果跳过所有与索引5的字母相同的字母:

for(i=0;i<10;i++)
{
    if(guess[i]==guess[5]) continue;
    printf("%c", guess[i]);
}

如果您只想跳过索引5处的字母,请尝试:

for(i=0;i<10;i++)
{
    if(i==5) continue;
    printf("%c", guess[i]);
}

1
投票

您不应该与数组的元素进行比较,只需与要跳过的索引进行比较。

并且您需要将continue放在要跳过的语句之前。否则,该信件已被打印,继续操作无济于事。

    for(i=0;i<10;i++)
    {
        if(i==5) {
            continue;
        }
        printf("%c", guess[i]);
    }
© www.soinside.com 2019 - 2024. All rights reserved.