📄 guo.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include<ctype.h>
#define N 4
#define MAX_TIMES 7
/* 随机出要猜的数字,四个数字都不相同 */
void create_rand_num ( int * rand_num )
{
int num[10]={0,1,2,3,4,5,6,7,8,9};/* 每位数的范围 */
int i;
int rand_n; /* 产生的随机数 */
int temp;
srand((int)time(0)); /* 随机种子发生器 */
/* 产生四个不同随机数 */
for(i=0 ;i < N; i++)
{
/* 对数组的下标来随机,而不是对它的元素,请仔细思考 */
rand_n = (int)(10.0*rand()/(RAND_MAX+1.0));
*(rand_num + i) = num[ rand_n ];
temp = num[i]; /* 随机到了的数字往前推,以后的随机中它不再出现 */
num[i] = num[ rand_n ];
num[ rand_n ] = temp;
}
}
/* 判断输入数据的合法性 */
int input_check ( int * guess )
{
int i=0;
for(;i < N; i++)
{
if(*(guess + i)>9 || *(guess + i)<0)
{
printf("Error! Input the right number!\n");
return 0;
}
}
return 1;
}
/* 判断玩家猜的数字,返回猜的次数,超过7次返回0 */
int guess_num ( int * rand_num )
{
int guess[N]; /* 玩家猜的数字 */
int times = 1;
int i, j;
int A, B; /* A表示数值且位置正确的个数,B只表示数值正确的个数 */
for(;times <= MAX_TIMES; times++)/* 最多猜可以7次 */
{
printf("\t%d:", times);
for(i=0 ;i < N; i++) /* 输入要猜的4个数字 */
scanf("%d", &guess[i]);
if( !input_check(guess) )
{ times --; continue;} /* 非法输入,重输 */
/* 判断用户所猜的数字 */
A = B = 0;
for(i=0 ;i < N; i++)
{
for(j=0 ;j < N; j++)
{
if(i==j && guess[j] == *(rand_num+i)) /* 数值和位置正确 */
{A ++; break; }
else if( guess[j] == *(rand_num+i) ) /* 数值正确 */
{B ++; break; }
}
if( i == N-1 ) /* 猜对了,返回猜的次数 */
if( A==N ) {printf("\n\t\t\tRight!\n"); return times;}
}
printf("\t\t\t%dA %dB\n", A, B);
}
return 0; /* 7次内没猜对 */
}
/* 统计结果 */
void result( int times , int * score )
{
switch( times )
{
case 1:case 2:case 3:
printf("\tVery Good!");
printf("\tScore +%d", 110-times*10 );
*score += 110-times*10; break;
case 4:case 5:case 6:
printf("\tGood!");
printf("\tScore +%d", 100-times*10 );
*score += 100-times*10; break;
case 7:
printf("\tPass!");
printf("\tScore +%d",20 );
*score += 20; break;
default: printf("\tCome On!");
}
}
/* 是否继续游戏 */
int go_on ()
{
char c;
printf("\n\n\tContinue game?(\'y\'or\'n\'):");
getchar();
if((c=getchar()) == 'y' || c == 'Y')
return 1;
return 0;
}
main()
{
int rand_num[N]; /* 产生的四个随机数 */
int times; /* 猜对结果所用的次数 */
int score = 0; /* 得分 */
int flag = 1 ; /* 继续游戏 */
while( flag )
{
system("clear");
printf("\tGUESS NUM GAME\tscore=%d\n", score);
create_rand_num ( rand_num );
times = guess_num(rand_num );
result( times , &score );
flag = go_on ();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -