猜数字小游戏

小游戏----猜数字

游戏很小,代码数量不是很多,算法也是很简单,里面所有的步骤都已经加入注释,有兴趣的可以看一下,最好能指出需要改进的地方

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void caishu(int n);
void rule();
int main()
{
    int n,select;
    do
    {
        printf("\t\t\t欢迎来到猜数游戏!\n");
        printf("1.PlayGame\n2.Rule\n3.exit\n");
        printf("请输入你的选择!\n");
        scanf("%d",&select);
        switch(select)
        {
        case 1:
            system("cls");
            printf("\t\t\t欢迎来到猜数游戏!\n");
            printf("输入你要猜的数字位数\n");
            scanf("%d",&n);
            caishu(n);
            break;
        case 2:
            system("cls");
            rule();
            break;
        case 0:break;
        default:
            printf("请输入0~2之间的数!\n");
        }
    }while(select!=0);
}
void caishu(int n)
{
    int count=0,i=0,j,a[10],b[10];//a来存放生成的数,b用来存放玩家猜的数字
    int count1=0,count2=0;//count1是用来记录位置对并且数字也对,count2记录数字对
    int flag;
    srand((unsigned)time(NULL));//生成随机数
    do
    {
        start:;
        a[i]=rand()%10;//将生成的数放入数组中
        for(j=0;j<i;j++)//如果该数的数字中有重复的就要重新生成
            if(a[i]==a[j])
                goto start;
        i++;
        count++;//记录个数
    }while(count<n);//少于想要生成的个数的时候就要循环
    //下面的是打印生成的数的,若加入程序可以检验程序的正误
    /*printf("你生成的随机数为\n");
    for(i=0;i<n;i++)
        printf("%d",a[i]);
    printf("\n\n");
    */
    do
    {
        count1=0,count2=0;//因为count1与count2都在循环体中,所以每次循环都要将他们置零,否则提示中的A,B就是所有猜的数累计加起来的
        printf("请输入你猜的数");
            for(i=0;i<n;i++)//将猜的数字存入数组中,
                scanf("%d",&b[i]);
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                    if(a[i]==b[j])//猜的数中存在答案中的数字
                       {
                           if(i==j)//猜的数的位置和数字都吻合
                            count1++;
                           count2++;
                       }

            }
            if(count1!=n)//如果所有的数不都猜中就要继续
            {
                flag=0;//flag为0为循环的条件
                printf("clue:A %d B %d\n",count1,count2);//A表示位置对且数字对,B表示待猜数字相同的个数
            }
            else
                flag=1;//猜中,循环结束
        
    }while(flag==0);
    printf("你他娘的真是个天才!\n");
}
void rule()
{
    printf("\t\tThe rule of rhe game!\n");


    printf("step1:input the number of digits.\n");
    printf("step2:将你猜测的得数打出来每个数字之间留一个空格\n");
    printf("输入结束后按回车。clue为线索,A表示你猜的数字中位置与答案相同且数字相同,B表示你猜的数中与答案相同的个数\n");
}

下面是程序测试的图片

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值