用C语言写猜数(喜欢挑战的人可以来看看)
//
# include & ltstdafx.h & gt
# include & ltstdlib.h & gt
# include & ltstdio.h & gt
# include & lttime.h & gt
//4位数随机生成,不需要重复位数。
void ProduceRandomNumber(int data[4])
{
int z;
/*随机选择1-九千九百九十九的号码,舍弃1-999的号码,选择1000-九千九百九十九的号码*/
做
{
srand((无符号)时间(空));
z =(rand()% 100)*(rand()% 100);/*随机选择*/
data[3]= z % 10;/*将随机数分成四份*/
data[2]= z/10% 10;
数据[1]= z/100% 10;
data[0]= z/1000% 10;
} while(z & lt;1000 | |数据[0]= =数据[1]| |数据[0]= =数据[2]| |数据[0]= =数据[3]| |数据[1]= =数据[2]| |数据[1]= =数据[3]| |数据
[2]= =数据[3]| |数据[0]= = 0);/*判断每个数字是否相同,如果相同,则再次输出*/
返回;
}
void Indata(整数,整数数据[4])
{
data[0]= number/1000% 10;
数据[1]=数字/100% 10;
data[2]= number/10% 10;
数据[3]=数字% 10;
}
int PosRight(int问题[4],int答案[4])
{
int i,count = 0;
for(I = 0;我& lt=3;i++)
{
if(问题[i]= =答案[I])
{
count++;
}
}
返回计数;
}
int NumRight(int question[4],int answer[4])
{
int i,j,count = 0;
for(I = 0;我& lt=3;i++)
{
for(j = 0;j & lt=3;j++)
{
if((问题[I]= =答案[j])& amp;& amp(我!=j))
{
count++;
}
}
}
返回计数;
}
int main(int argc,char* argv[])
{
int回答,count=0,输入[4],输出[4],m=0,n=0,choice
ProduceRandomNumber(输入);
Printf("欢迎来到猜谜游戏!\n游戏开始了!!!\ n ");
做
{
count++;
scanf("%d ",& amp回答);
Indata(答案,输出);
m=PosRight(输入,输出);
n=NumRight(输入,输出);
如果(m==4)
{
Printf("你真棒!!!\ n这个数字是%d % d % d \您已经猜了% d次了!\n ",输入[0],输入[1],输入[2],输入[3],计数);
打破;
}
其他
{
Printf("对不起,你错了!!提示:%dA%dB\n ",m,n);
}
if(count==8)
{
Printf("你已经猜了八遍了!你想继续吗?(1:是/0:假)\ n ");
scanf("%d ",& amp选择);
if(choice==1)
Printf("去吧!\ n ");
其他
{printf("结束游戏!\ n ");
打破;}
}
else if(count==15)
{
Printf("你已经猜了15次了,可能方法不对!下次继续!!!\ n ");
打破;
}
} while(1);
返回0;
}