#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#defineCOUNT 2008 /*宏定义一个计算机内定数,可由编程改*/
voidmain()
{
intstime,a,z,t,i,c,m,g,s,j,k,l[4]; /*j:数字正确的位数k:位置正确的位置*/
longltime;
ltime=time(NULL);/*l:数字相同时,人所猜中数字的正确位置*/
stime=(unsignedint)ltime/2;
srand(stime);
z=COUNT; /*计算机内定数*/
printf(" 欢迎进入猜数字游戏\n");
printf(" 游戏帮助\n");
printf("用户从键盘输入一个4位数,来匹配计算机内定的4位随机数,若数字和位数均等同,表示用户赢了。\n");
printf("每猜一次,计算机均给出提示信息(k,j),k表示数字、位置都匹配的个数,j表示数字匹配但位置不匹配的个数。\n");
for(c=1;;c++);/*c: 猜数次数计数器*/
{ printf("请输入你猜的数字:");
scanf("%d",&g);/*请人猜*/
a=z;j=0;k=0;l[0]=l[1]=l[2]=l[3]=0;
for(i=1;i<5;i++)/*i:原数中的第i位数。个位为第一位,千位为第4位*/
{ s=g;m=1;
for(t=1;t<5;t++)/*人所猜想的数*/
{ if(a%10==s%10) /*若第i位与人猜的第t位相同*/
{ if(m&&t!=l[0]&&t!=l[1]&&t!=l[2]&&t!=l[3])
{ j++;m=0;l[j-1]=t; /*若该位置上的数字尚未与其它数字“相同”*/ } /*记录相同数字时,该数字在所猜数字中的位置*/
if(i==t)
k++; /*若位置也相同,则计数器k加1*/ }
s/=10; }
a/=10;}
printf("提示信息(%d,%d)\n",k,j);
printf("你猜对了%d个数字!\n",j);
printf("其中位置也正确的有%d 个.\n",k);
if(k==4); /*若位置全部正确,则人猜对了,退出*/
else
printf("请继续努力!\n"); }
printf("经过%d 次努力,你已经猜中了全部的数字,恭喜你.\n",c); }