栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言课题1:猜数字游戏【从基础开始手把手教你】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言课题1:猜数字游戏【从基础开始手把手教你】

        你们好呀!这里是@小梁coding~欢迎你们来到我的博客,这是我的第一篇文章,很高兴能够与大家在CSDN上进行学术交流(有问题欢迎在我的评论区下留言,嘿嘿),要想掌握一样技能,就一定要动手动脑实践,并要求我们要将输入输  出相结合,好了话不多数,开始我们的游戏吧!

游戏简介:该游戏可以由程序随机产生四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。当A为4时,即四个数字都猜对即为挑战成功。

输入输出要求:玩家一次性输入四个(0~9)不重复的数字,输出A,B个数判断的结果,若成功则提前输出游戏成功,若八次机会用完还未猜出,则游戏失败,并显示正确答。

(利用数组解题) 我们所需要思考的问题是:1.如何让系统产生随机数2.如何实现一次性输入四个数并将其分开存入数组3.如何实现A.B的计数

1.利用srand()函数及rand()函数实现四个随机数的产生time(NULL)

{srand(time(NULL));

    int i,x[4];

    while(1)
    {for(i=0; i<4; i++)
        x[i]=rand()%10;   
        if((x[0]!=x[1])&&(x[0]!=x[2])&&(x[0]!=x[3])&&(x[1]!=x[2])
&&(x[1]!=x[3])&&(x[2]!=x[3]))      
            break;}

2.利用取余%实现一次性输入四个0~9的数并将四个数字分开存入数组

 scanf("%d",&num);
        for(i=0;i<4;i++)
        {
            guess[i]=num%10;
            num=num/10;
        }

是不是发现解决这个问题很简单呢!有许多同学的输入方式都不是一次性输入四个数(但是题目要求我们一次输入4个数),有的打一个数字按一下空格,接着再打一个数字按一下空格最后回车才对AB进行判断,还有的要打一个数字按一次回车,按5次后才进行AB判断

3.利用for循环语句if条件判断语句实现八次循环输入判断与AB计数

  A=0;
for(i=0; i<4; i++)
 {
   if(guess[i]==x[i])
   A++; //数字正确且位置正确,A加1
 }
   B=0;
 for(i=0; i<4; i++)
 for(j=0; j<4; j++)
 {
   if((guess[j]==x[i])&&(i!=j)) //数字正确而位置不正确,B加1
   B++;
        }

4.源代码如下

#include 
#include 
#include 
#include 

int main()
{
    srand(time(NULL));

    int i,h,j,x[4],guess[4],A,B,num;

    while(1)
    {for(i=0; i<4; i++)
        x[i]=rand()%10;
        if((x[0]!=x[1])&&(x[0]!=x[2])&&(x[0]!=x[3])&&(x[1]!=x[2])&&(x[1]!=x[3])&&(x[2]!=x[3]))
            break;
    }
printf("正确答案为:%d%d%d%dn",x[3],x[2],x[1],x[0]);
    printf("游戏规则:nn该游戏可以由程序随机产生四个不重复的数字n要求一次性输入这四个数n玩家可通过提示A.B提示进行八次猜测nA表示位置正确且数字正确nB表示数字正确而位置不正确n");
    printf("只要A为4个则游戏挑战成功n违反游戏规则游戏提前结束n");
    printf("祝你顺利!!游戏开始!!nn");
    for(h=0; h<8; h++)
    {
        printf("第%d次输入(每输入一次回车):n",h+1);
        scanf("%d",&num);

        for(i=0;i<4;i++)
        {
            guess[i]=num%10;
            num=num/10;

        }
        if((guess[0]==guess[1])&&(guess[0]==guess[2])&&(guess[0]==guess[3])&&(guess[1]==guess[2])
               &&(guess[1]==guess[3])&&(guess[2]==guess[3])){h--;break;}

        A=0;
        for(i=0; i<4; i++)
        {
            if(guess[i]==x[i])
                A++;
        }
        B=0;
        for(i=0; i<4; i++)
        for(j=0; j<4; j++)
        {
           if((guess[j]==x[i])&&(i!=j))
                B++;

        }
        printf("%dA%dBn",A,B);
        if(A==4)
        {
            printf("恭喜您!游戏成功!!ngame overn");
            h--;
            break;
        }

    }
    if(h==8)
    {
        printf("八次机会已用完,游戏失败ngame overn");
        printf("正确答案为:%d%d%d%dn",x[3],x[2],x[1],x[0]);
    }
printf("违反游戏规则,游戏结束!n");
    return 0;
}


5.运行结果如下

成功

失败

 重复提前结束程序(若有更好的解决方法评论区留言)

        解题方式如上,可供参考,有很好方法,欢迎评论区留言,这里是@小梁coding,一个励志要将输入与输出相结合的成长型学生!!

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号