4位数猜数字

发布时间:2012-05-27 00:54:00

#include

#include

#include

#define EXIT_SUCCESS 0

#define MANY 4 /*4位数猜数字*/

#define TIMES_OUT 9 /*9步以内就要猜出*/

int n,u,j,i,a,b;

void game ( void ); /*游戏函数原型*/

void not_same ( int arrary[] ); /*判断实参内数字是否相同*/

void ab ( int guesss[],int answer[] ); /*提示几ab*/

void prise ( int val ); /*特别奖励函数原型*/

void out ( void ); /*按任意键结束*/

main( void )

{

char choise;

printf("||************************************||\n");

printf("|| 吴浩猜数字V 1.0 ||\n");

printf("|| 程序制作者:吴浩 ||\n");

printf("|| 二○○四年四月三日||\n");

printf("||************************************||\n");

puts("\n1--开始游戏");

puts("2--查看帮助");

puts("3--退出");

while ( 1 )

{

printf("我选择 :");

scanf("%c",&choise);

fflush(stdin);

switch ( choise )

{

case '1':

{

game();

return 0;

}

case '2':

{

puts(" 猜数字 V1.0 规则\n");

printf(" %d步以内按照提示分别输入不重复的%d数字( 0 ~ 9 ) ,如果所输入的\n",TIMES_OUT,MANY);

puts("数字与答案数字位子相对则有1a,如果与答案数字相同可位置不正确则有一");

puts("b");

puts(" 如答案数字为8 3 0 4,如果您输入8 7 2 4则显示2a0b, ");

puts("输入3 0 4 8则显示0a4b,若答对了,即为4a0b");

out();

}

case '3':

{

exit ( EXIT_SUCCESS ); /*退出程序*/

}

default :

{

puts("请输入 1 2 3 ");

}

}

}

}

/*游戏部分*/

void game ( void )

{

int times;

int answer[MANY],guess[MANY];

char wantplay;

time_t t;

srand( (unsigned) time(&t)); /*以系统时间初始化随机数发生器*/

do

{

printf("\n请输入%d个数字!\n",MANY);

do

{

u=0;

for ( n = 0 ; n < MANY ; n++ )

{

answer[n]=rand()%10; /*生成随机数*/

}

not_same(answer); /*检查生成随机数是否相同*/

}while ( u ); /*如不同则循环结束*/

for ( times = 1 ; times <= 10 ; times++ )

{

if ( times == 10 )

{

printf("抱歉!已经超过 %d (你输了)\n",TIMES_OUT);

break;

}

do

{

u=0;

for ( n = 0 ; n < MANY ; n++ )

{

scanf("%1d",&guess[n]);/*只接受一个数*/

}

fflush(stdin);

not_same(guess); /*判断输入的数是否相同*/

if ( u == 1 )

{

puts("聪明!!想走捷径,没门,因为我比你聪明!^_^");

puts("一定要输入不相同的数字才给你提示!!谢谢合作!!");

printf("\n请输入%d个数字!\n",MANY);

}

}while ( u ); /*如果否则循环结束*/

printf("( %d )",times);

ab(guess,answer); /*判断几ab*/

if ( a == MANY )

{

puts(" 4a0b");

puts("恭喜!您猜对了!");

break;

}

printf(" %da%db\n",a,b);

}

if ( times <= 6 ) /*如果在6步内猜出则给予奖励*/

{

prise( times );

}

fflush(stdin);

puts("还玩吗? ( y or n )");

scanf("%c",&wantplay);

}while ( wantplay == 'Y' || wantplay == 'y' );

}

/*判断实参内数字是否相同*/

void not_same ( int arrary[] )

{

for ( i = 0 ; i < MANY-1 ; i++ )

for ( j = i+1 ; j < MANY ; j++ )

if ( arrary[i] == arrary[j] )

u = 1;

}

/*提示部分*/

void ab ( int guesss[],int answer[] )

{

a=0,b=0;

for ( i = 0 ; i < MANY ; i++ )

for ( j = 0 ; j < MANY ; j++ )

if ( guesss[i] == answer[j] )

if ( i == j )

a+=1;

else

b+=1;

}

/*输入任意键结束*/

void out ( void )

{

printf("\n\n\n按任意键离开程序");

getch();

exit(0);

}

/* 特别奖励 */

void prise ( int val )

{

fflush(stdin);

printf("厉害!%d步就猜出数字,有特别奖励\n\n\n\n\n\n\n",val);

getchar();

printf("奖励就是~~~~~~~~~回车以后告诉你\n\n\n\n\n\n\n\n");

getchar();

fflush(stdin);

printf("放心,我会告诉你的~~~~再会车就告诉你\n\n\n\n\n\n\n\n\n");

getchar();

fflush(stdin);

printf("好吧,我就告诉你一个秘密~~~~~回车你就知道\n\n\n\n\n\n\n\n");

getchar();

fflush(stdin);

printf("其实~~~~~我的QQ号码是 32353404 欢迎加入 ^_^ \n");

fflush(stdin);

}

// ->************************************************************************

// -> 全部代码结束

// ->************************************************************************

4位数猜数字

相关推荐