#include \"stdio.h\"
#include \"conio.h\"
#include \"stdlib.h\"
#include \"time.h\"
/*生成4位不重复的数字组*/
void answer(int x[5][10])
{
int n,m,ran;
srand(time(NULL));/*时间种子*/
/*存放1-9之间的数用于不重复取数*/
for(n=1;n<10;n++)
{
x[0][n]=n;
}
for(m=1;m<5;m++)
{
do
{
ran=rand()%10; /*随机位置*/
}
while(x[0][ran]==0);
x[m][0]=x[0][ran];
x[0][ran]=0;
}
}
/*处理用户输入返回全对的数字个数*/
int handle(int x[5][10])
{
int n[5]; /*用户输入的整形量*/
int qd=0,zd=0;/*qd-位置正确数字正确的个数zd-数字正确位置不对的个数*/
int i,j,c,c1,c2;
char mid[5];/*用于接收用户的输入的字符中间量*/
mid[0]=0;
printf(\"please input the numbers which you guess:\\n\");
for(c=1;c<5;c++)
{
do
{
mid[c]=getch();
if(mid[c]>='1'&&mid[c]<='9') /*控制用户输入的是1-9之间的数字*/
{
c2=0;
for(c1=c;c1>=1;c1--)
{
if(mid[c]!=mid[c1-1]) /*判断用户的输入的4个数字是否重复*/
c2++;
}
if(c2==c)
{
putchar(mid[c]);break;
}
}
/*实现回退修改*/
if(mid[c]=='\\b')
{
mid[c-1]='\\b';
putchar(mid[c-1]);
c--;
}
}
while(1);
}
/*用户输入的字符量转化为整型量*/
for(c=1;c<5;c++)
{
switch(mid[c])
{
case '1':n[c]=1;break;
case '2':n[c]=2;break;
case '3':n[c]=3;break;
case '4':n[c]=4;break;
case '5':n[c]=5;break;
case '6':n[c]=6;break;
case '7':n[c]=7;break;
case '8':n[c]=8;break;
case '9':n[c]=9;break;
}
}
/*处理用户猜数字的结果*/
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
if(n[i]==x[j][0])
{
zd=zd+1;
if(i==j)
{
zd=zd-1;
qd=qd+1;
}
}
}
}
printf(\"\%dA%dB\\n\
if(qd==4)
{printf(\"congratulation!you win!\\n\");}
return qd;
}
/*输出数字组*/
void put(int x[5][10])
{
printf(\"sorry for is%d%d%d%d\\n\
}
you!The answer
/*主函数*/
main()
{ int a[5][10];
int p,r;
char c;
do
{
clrscr(); /*清屏函数*/
r=0;
answer(a[5][10]);
for(p=0;p<10;p++)
{
r=handle(a[5][10]);
if(r==4)
break;
}
if(p==10&&r!=4)
{
put(a[5][10]);
}
printf(\"continue?(y-yes/else-exit)\\n\");
c=getch();
putchar(c);
putchar('\\n');
}
while(c=='y');
exit(0);
getch();
}
因篇幅问题不能全部显示,请点此查看更多更全内容