⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guo.c

📁 猜数字游戏哦.很有意思的,已经在LINUX上运行成功咯
💻 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 + -