#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define Max 4
int getrand[Max];
int scan[Max];
int main()
{
int a=0,b=0;
int sc,i=1,j,k,count,menu;
memset(getrand,0,sizeof(getrand));
memset(scan,0,sizeof(scan));
menu:{
printf("(1)随机产生数据\n(2)用户输入数据\n(3)退出游戏\n");
scanf("%d",&menu);
switch(menu)
{
case 1:
goto rand;
case 2:
goto rand;
case 3:
return 0;
default:
goto menu;
}
}
rand:
{//随机数据块
//(1)随机产生数据
srand((unsigned)time(NULL));
getrand[0] = rand()%10;
getrand[1] = rand()%10;
getrand[2] = rand()%10;
getrand[3] = rand()%10;
for(j=0;j<=3;j++)
for(k=0;k<j && k !=j;k++)
if(getrand[k] == getrand[j])
//判断随机数的四个数是否重复
goto rand;
if(menu == 2)
goto scan;
else
{
printf("%d%d%d%d\n",getrand[0],getrand[1],getrand[2],getrand[3]);
goto menu;
}
}
while(1)
{
scan:{
printf("第%d次输入",i);
scanf("%d",&sc);//第i次输入
scan[0] =sc/1000;
scan[1] =sc/100%10;
scan[2] =sc/10%10;
scan[3] =sc%10;
}
for(j=0;j<=3;j++)
for(k=0;k<j && k !=j;k++)
//判断输入的四个数是否重复
if(scan[k] == scan[j])
goto scan;
for(j=0;j<=3;j++)
for(k=0;k<=3;k++)
{
if(getrand[k] == scan[j] && k == j)
a++;
if(getrand[k] == scan[j] && k != j)
b++;
//A表示位置正确且数字正确,B表示数字正确而位置不正确
}
if(a != 4)
{
printf("%dA%dB\n",a,b);
a=0;
b=0;
}
i++;
if(sc == getrand[0]*1000+getrand[1]*100+getrand[2]*10+getrand[3])
//输入的和随机的一样
{
printf("游戏成功\n" );
goto menu;
}
if(i == 8)
{
printf("游戏失败\n");
printf("正确答案是%d%d%d%d返回菜单...\n",getrand[0],getrand[1],getrand[2],getrand[3]);
goto menu;
}
}
}
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define Max 4
int getrand[Max];
int scan[Max];
int main()
{
int a=0,b=0;
int sc,i=1,j,k,count,menu;
memset(getrand,0,sizeof(getrand));
memset(scan,0,sizeof(scan));
menu:{
printf("(1)随机产生数据\n(2)用户输入数据\n(3)退出游戏\n");
scanf("%d",&menu);
switch(menu)
{
case 1:
goto rand;
case 2:
goto rand;
case 3:
return 0;
default:
goto menu;
}
}
rand:
{//随机数据块
//(1)随机产生数据
srand((unsigned)time(NULL));
getrand[0] = rand()%10;
getrand[1] = rand()%10;
getrand[2] = rand()%10;
getrand[3] = rand()%10;
for(j=0;j<=3;j++)
for(k=0;k<j && k !=j;k++)
if(getrand[k] == getrand[j])
//判断随机数的四个数是否重复
goto rand;
if(menu == 2)
goto scan;
else
{
printf("%d%d%d%d\n",getrand[0],getrand[1],getrand[2],getrand[3]);
goto menu;
}
}
while(1)
{
scan:{
printf("第%d次输入",i);
scanf("%d",&sc);//第i次输入
scan[0] =sc/1000;
scan[1] =sc/100%10;
scan[2] =sc/10%10;
scan[3] =sc%10;
}
for(j=0;j<=3;j++)
for(k=0;k<j && k !=j;k++)
//判断输入的四个数是否重复
if(scan[k] == scan[j])
goto scan;
for(j=0;j<=3;j++)
for(k=0;k<=3;k++)
{
if(getrand[k] == scan[j] && k == j)
a++;
if(getrand[k] == scan[j] && k != j)
b++;
//A表示位置正确且数字正确,B表示数字正确而位置不正确
}
if(a != 4)
{
printf("%dA%dB\n",a,b);
a=0;
b=0;
}
i++;
if(sc == getrand[0]*1000+getrand[1]*100+getrand[2]*10+getrand[3])
//输入的和随机的一样
{
printf("游戏成功\n" );
goto menu;
}
if(i == 8)
{
printf("游戏失败\n");
printf("正确答案是%d%d%d%d返回菜单...\n",getrand[0],getrand[1],getrand[2],getrand[3]);
goto menu;
}
}
}