#define random rand()%10
int a1,a2,a3,a4;
int key[5];
int input[5];
int nike,adidas;
void random_num()
{
do{
srand(time(0));
a1=random;
a2=random;
a3=random;
a4=random;
}while(a1==a2||a1==a3||a1==a4||a2==a3||a2==a4||a3==a4);//判断4个随机数不同才可以,方法不够节省CPU~
key[0]=a1;
key[1]=a2;
key[2]=a3;
key[3]=a4;
}
int input_num()// 需要检测输入的不能是相同的数字
{
do
{
printf(“\t\t按顺序输入4个数字\n\t\t注意:用逗号分开他们.\n\t\t”);
scanf(“%d,%d,%d,%d”,&input[0],&input[1],&input[2],&input[3]);
}while(input[2]==input[3]||input[0]==input[1]||input[0]==input[2]||input[0]==input[3]||input[1]==input[2]||input[1]==input[3]);
return 0;
}
void check_num()
{
int i;
for(i=0;i<4;i++)
{
if(input[i]==key[i])
nike++;//将数字对,位置也对的记录在nike这个值上
else if(input[i]==key[0])
adidas++;//将其他位置都比较一遍,记录到adidas这个值上
else if(input[i]==key[1])
adidas++;
else if(input[i]==key[2])
adidas++;
else if(input[i]==key[3])
adidas++;
}
}
void output_result()
{
int tmp;
tmp=adidas-nike;//由于数字对但位置不对的,在验证时会产生两次满足if,所以要将其相减
printf(“\t\t\t%d个数完全正确\n”,nike);//
printf(“\t\t\t%d个数是对的,但位置错了\n”,adidas);//但是输出tmp不对啊,每次都会出现负值
printf(“\t\t\t根据提示继续猜吧”);
}
void main()
{
printf(“\t\t欢迎来到数字游戏~\n”);
printf(“按顺序输入4个数字(0-9不重复的4位数),根据提示,最后猜出正确的数字组合 \n”);
printf(“提示会告诉你有几个数字完全正确,有几个数字对但位置不对\n\n”);
random_num();
/* printf(“%d%d%d%d”,key[0],key[1],key[2],key[3]); */ //测试用的命令行
while(nike!=4)
{
nike=0;
adidas=0;
input_num();
check_num();
output_result();
}
printf(“\n\t\t恭喜~猜对了 \n\t\tProgram idea from XJ’s mind..2009.11.26\n\t\tCode by Idil Mabo8954@Gmail.com\n”);
/* printf(“%d\n”,nike);
printf(“%d\n”,adidas);*/ //测试用的命令行
getch();
}
基本上无报错了,排除了一般的错误和问题。
[Via http://idil54.wordpress.com]
No comments:
Post a Comment