#include
#include
#include
#include
void rand_num(int v[]);
void main()
{
int math[4],guess[4];int result[4]; //math用来装产生的随机的4位数,guess用来装玩家猜的4位数,result用来放映匹配的结果
int i,j,n=0,b,a,d;//n用来标志是否还有竞猜的机会,b位玩家输入的4位数
int c;//用于检验每一位都配对正确
rand_num(math);//装数字不相同的4个数进入math
printf("竞猜不同数字的4位数开始!(共10次机会)
");
while(n!=10){
scanf("%d",&b);//玩家输入猜的4位数
d=1;
while(d){
for(i=0;i9876||b<0123){//如果输入的不是4位数,重新输入
d=1;
}
if(d){
printf("请输入不同数字的4位数
");
scanf("%d",&b);//玩家输入猜的4位数
}
}
for(i=0;i<4;i ){//初始化result
result[i]=0;
}
for(i=0;i<4;i ){ //系统对输入的数与抽到的数进行匹配。
并装放映结果入result中
for(j=0;j<4;j ){
if (guess[i]==math[i]){
result[i]='A';
break;
}
else if (guess[i]==math[j]){//扫描guess中的每一位的数是否有与math某一位相同的数
result[i]='B';
break;
}
else result[i]='*';
}
}
printf("匹配结果提示如下:");
for(i=0;i<4;i ){//显示配对结果。
printf("%c",result[i]);
}
printf("
");
c=0;//初始化C。不然的话之前c可能为1、 2、 3
for(i=0;i<4;i ){//如果匹配完全正确,退出竞猜循环
if(result[i]=='A'){
c ;
}
}
if(c==4){
n=10;
}
else {
n ;
printf("错误!请重新竞猜
");
}
}
printf("系统随机抽到的4位数结果如下:
");
for(i=0;i<4;i ){ //输出随机的4位数
printf("%d",math[i]);
}
printf("
");
}
//产生数字不相同的4位数
void rand_num(int v[])//产生数字不相同的4位数
{
int a,i; //用来装暂时产生的随机数的个位数
srand((unsigned)time(0));
for(i=0;i<4;i ){ //给4个位装随机值
a=rand();
while(a==v[i-1]||a==v[i-2]||a==v[i-3]){//数组下标是负数的话就是上一个单元的值。
一般不是个位数
a=rand();
}
v[i]=a;//产生随机数,取其个位数
}
}。
全部