猜数字游戏


#include "stdafx.h"
#include "stdlib.h"
#include "time.h"
#include "iostream"
int _tmain(int argc, _TCHAR* argv[])
{ int a[4] = {},b[4];
    int i,j,m,x=0,y=0,wrongtime=0;
    srand((unsigned int)time(NULL));//随机数发生器的初始化函数 改变系统提供的种子值
for (i=0;i<=3;i++){
        int temp = rand()%9 + 1;//生成随机数 可以自己取定范围,利用取余
        a[i]=temp;
            for(j=0;j<i;j++)
                if(temp==a[j])
                    i--;
    }
  /* for(i=0;i<=3;i++)
        printf("a[%d]=%d
",i,a[i]);*/


    for(j=0;j<=2;j++)
        for(i=0;i<=2-j;i++)
     if(a[i]>a[i+1])
    {m=a[i];
    a[i]=a[i+1];
    a[i+1]=m;}
  /*for(i=0;i<=3;i++)
       printf("%d",a[i]);*/
  
   printf("请输入你所猜的四个数字:
");
   while(x!=4){x=0,y=0;
    for(j=0;j<=3;j++)
        scanf("%d",&b[j]);

    for(i=0;i<=3;i++)
    if(a[i]==b[i])
    x++;
    for(i=0;i<=3;i++)
        for(j=0;j<=3;j++)
            {while(i!=j)
            {if(a[i]==b[j])y++;
    break;}
    }
        printf("%dA%dB
",x,y);
   if(x==4)printf("恭喜您挑战成功!");
   else wrongtime++;
   if(wrongtime==7) {printf("很遗憾您挑战失败。");
   break;}
   }
    system("pause");
    return 0;
}
rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的"随机"。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列
 
原文地址:https://www.cnblogs.com/kinghyt/p/10014104.html