【问题标题】:Character guessing gaming in C language using 1D array and for loop使用一维数组和for循环的C语言字符猜谜游戏
【发布时间】:2020-04-09 20:58:59
【问题描述】:

如果迭代(“i==[index]”),我打算使用“继续语句”跳过特定字符。我想跳过索引 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;
}

【问题讨论】:

  • char guess[10]="Programmer"; ==> char guess[]="Programmer"; 只是说。当您包含终止符时,Programmer 是一个 11 八位字节序列。我不太确定你认为i==guess[5] 应该做什么。将您的枚举变量 iguess[5] 中的 content 进行比较听起来不太对,是吗?即使解决了这个问题,continue 也似乎是错误的。反正你要循环了,所以.. 继续 what ?我认为这需要自我解释,因为 test+continue 应该是 before 打印。
  • 如果你想跳过那个索引,你应该说if (i == 5)。但是您需要在打印之前 进行。
  • @WhozCraig 因为他从不使用guess 作为字符串,所以不需要终止符。
  • @WhozCraig 在这种情况下它不是一个字符串,而是一个 10 个字符的数组。那里没有错。
  • 删除代码块末尾的continue 什么都不做。改为if(i != 5) printf("%c", guess[i]);

标签: c arrays for-loop continue


【解决方案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;
}

这是输出:

【讨论】:

    【解决方案2】:

    首先,您需要在要跳过的指令之前编写 continue 语句。您是要跳过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]);
    }
    

    【讨论】:

      【解决方案3】:

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

      您需要将continue 放在要跳过的语句之前。否则,这封信已经被打印出来了,继续没有用处。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多