分享好友 天南地北首页 网站导航

猜数字C语言

网友发布 2023-06-29 03:50 · 头闻号游戏应用

其实这个程序很简单,思路很清晰

首先产生一个随机的四位数,且每位都不相同

int a[10]={0,1,2,3,4,5,6,7,8,9};

int b,c,i,t;

for(i=0;i<100;i++) //思路就是产生两个10以内的随机数,交换a中这两个下标的数值,

{ //经过多次交换后,着a中的这10个数就打乱了次序,就像是随机数了

b=rand()%10; //这个交换多少次,随便了,只要打乱就可以

c=rand()%10;

if(b!=c)

{t=a[b];a[b]=a[c];a[c]=t;}

}

接着取出连续的a中的4个数,这样就是那个随机数

int suiji[4];

for(i=0;i<4;i++)

suiji[i]=a[i]; //这样随即中就是四个要猜的数,

要是想要第一位不是0,可以这么计算

int j;

for(i=0,j=0;j<4;i++)

{

if(a[0]==0)

continue;

suiji[j++]=a[i];

}

接下来就是输入数据,

int shuru,shr[4],s;

while(1)

{

scanf("%d",&shuru);

s=shuru;

i=3;

while(s)

{

shr[i--]=s%10;

s/=10;

}

if(shuru>1000&&shuru<9999&&shr[0]!=shr[1]&&shr[0]!=shr[1]&&shr[0]!=shr[2]&&shr[0]!=shr[3]&&shr[1]!=shr[2]&&shr[1]!=shr[3]&&shr[2]!=shr[3])

//shuru在1000~9999之间并且各各位不相等,就跳出,否则继续输入

break;

else

printf("Error");

}

接着这个输入的数据和这个随机数的比较了,其实很简单

m是位置和数字都对的。n是数字对,但位置不对的

int m=0,n=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

if(shr[i]==suiji[j])

n++;

for(i=0;i<4;i++)

if(shr[i]==suiji[i])

m++;

n-=m;

接着是打印输入的数和mn(这个就是判断的结果)这个我就不用再写了吧

清屏用system("cls");

最后是总装,先产生四位的随机数,接着用一个大循环把输入和比较还有打印判断结果包含进去。

退出这个循环的条件有两个,一个是m=4,一个是到了规定的次数

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞