一个猜数字的游戏(源代码)

  一个猜数字的游戏的源代码

由计算机“想”一个无重复四位数,请人猜这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字中有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少为止

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include<time.h>
 
int Rnd()                                      //产生十以内的随机整数。
{
   int Rteger;
   Rteger=rand()%10;
   return Rteger;
}
void Get_b(int b[])                            //得到用户输入的四位数,存储到数组b[4]中。
{
   int i, m,n=10000;
   scanf("%d",&m);
   for(i=0;i<=3;i++)
   {
      b[i]=m/(n/10);
      m=m-b[i]*(n/10);
      n=n/10;
   }
}
  
void Iswantplay(char * wantplay)               //判断用户还想不想玩。
{
    printf("再来一局(y),我不想玩了(n)");
    scanf("%c",wantplay);
    scanf("%c",wantplay);
    printf("======================================================/n/n/n");
}
 
void Reset(int A[],int B[],int * score,int * a,int * b)                       //用来初始化一些变量。
{
    int i=0,t=0, j;
    (*score)=0;                                                               //得分清零。
    (*a)=0;                                             
    (*b)=0;                                                                   //所猜对的数字的个数的计数器清零
    
 for(j=0;j<10;j++)
       A[j]=j;                                                                //初始化数组,为产生无重复随机数做准备。
   
 while(i<4)
    {   
       t=Rnd();
       if(A[t]) B[i]=A[t],A[t]=0,i++;
                
 }                                                     //利用扑克牌中抽牌的思想,来产
                                                          //生无重复随机数,存储到B[](在main函数中为b[])中。
    printf("输入一个四位数 开始吧! /n");
    printf("-----------------------------/n");
}
void Check_ab(int a[],int b[],int * A,int * B)            //此函数用来检查用户所输入的四位数与系
{                                                         //统产生的四位数的相同情况。
    int i,j;
    for(i=0;i<=3;i++)                                     //用两个嵌套的for循环来逐个比较a[]与b[]
 {
       for(j=0;j<=3;j++)
    {
           if(a[i]==b[j])                                 //如果数字相同。
     {
               if(i==j)                                   //如果位置也相同。
                 (*A)++;                                  //A自加。
               if(!(i==j))                                //如果位置不同。
                 (*B)++;                                  //B自加。                   
           }                             
       }
    }
}
 
void Welcome()                                            //打印程序的开始界面。
{
     printf("   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/n");
     printf("   @              -----------------                      @/n");        
     printf("   @      ===================猜数字游戏==============             @/n");
     printf("   @               -----------------                        @/n");
     printf("   @                                ----programed by Star621       @/n");
     printf("   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/n/n/n/n");
}
 
void Usage()                                              //显示程序的用法。
{
     printf("===============用法================================ /n");
     printf("   1.计算机随机产生一个无重复数字的四位数由你来猜./n");
     printf("   2.若所猜的数位置与数字均正确,会显示一个A,若数字对位置不对,会显示一个B./n");
     printf("===========================================================================/n/n");
 
}
 
void Printscore(int n)                                    //显示用户的得分。
{
     switch(n)
     {
       case 0: printf("你真是撞大运了!! 恭喜!! 恭喜!!  加十分!/n");break;
       case 1: printf("恭喜你 !猜对了! 你真是天才! 加九分!/n");break;
       case 2: printf("不错! 不错! 猜对了! 你真够聪明! 加八分!/n");break;
       case 3: printf("恭喜! 猜对了!  加七分!/n");break;
       case 4: printf("猜对了! 及格. 加六分!/n");
       default : printf("猜对了,但不够快啊,继续努力!/n");
}
       printf("=========================================================/n/n");
}
 
void Printresult(int b[],int * A,int * B)                  //显示每次用户所猜的结果,供其思考判断。
{
     int i;
     printf("              ");
     for(i=0;i<=3;i++)
     {
         printf("%d",b[i]);
     }
     printf("       ");
 
     for(i=0;i<(*A);i++)
        printf("A");
     for(i=0;i<(*B);i++)
        printf("B");
     printf("/n");
}
 
void main()
{
     int i=0,a[4],b[4],c[10],A=0,B=0,score=0;
     char wantplay='y';
     srand((unsigned int)time(NULL));                                 //初始化随机数生成器。
     Welcome();
     Usage();
     while(wantplay=='y'||wantplay=='Y')                              //如果还想玩。
  {
          Reset(c,a,&score,&A,&B);                                    //初始化变量。 
          while(A!=4)                                                 //只要还没猜对,继续猜。
          {
                Get_b(b);                                             //输入所猜的数。
                Check_ab(a,b,&A,&B);                                  //电脑判断。
                Printresult(b,&A,&B);                                 //输出结果。
                if(A!=4) A=0,B=0;
                   score++;                                           //累计用户总共猜的次数。
          }
          Printscore(score/3);                                        //打印得分。
          Iswantplay(&wantplay);                                      //还要不要玩。
                             
  }
 
}
  一个猜数字的游戏的源代码
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值