Thursday, November 26, 2009

一个猜数字的小游戏

 

#include #include #include #include #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