使用一维数组和for循环的C语言字符猜谜游戏

Posted

技术标签:

【中文标题】使用一维数组和for循环的C语言字符猜谜游戏【英文标题】:Character guessing gaming in C language using 1D array and for loop 【发布时间】: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]); 【参考方案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]);
    

【讨论】:

以上是关于使用一维数组和for循环的C语言字符猜谜游戏的主要内容,如果未能解决你的问题,请参考以下文章

c语言中一个一维数组怎样去重?

用C语言如何将一个一维数组中的元素随机排序

c语言怎么把二维数组的字符串给到一维数组?

江哥带你玩转C语言| 12 -二维数组和字符串

C程中如何计算数组(一维及二维)占内存空间的大小

数组实验报告