wangzheng3056 发表于 2013-7-30 15:31

【连载】科普之---随机数的应用(猜数字游戏的实现)

本帖最后由 wangzheng3056 于 2013-7-30 15:09 编辑

上一篇:科普之-------随机数rand()的用法
上一贴我讲述了如何生成伪随机数,今天我们将难度升级,讲述随机数的应用---猜数字游戏的实现(大家自行了解游戏规则)。
程序的流程是:
1.生成一个四位数要求每一位都不同,放在数组的四个元组中
2.要求用户输入四位数
3.程序将用户输入的四位数分离,放在数组的四个元组中
4.将两个数组进行对比,记录对比结果
5.输出结果
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int judge(int *a,int *b)
{
    int i,j;
    int count_A,count_B;
    count_A = count_B = 0;
    for(i = 0;i<4 ;i++ )
    {
        if(a == b)  count_A++;
    }

    if(count_A == 4) {printf(\"%dA%dB\\n\",count_A,count_B);return 1;}
    for(i = 0; i < 4;i ++)
    {
        for(j = 0;j < 4;j ++)
        {
             if(a == b) {count_B++;j = 4;}
         }
    }
    printf(\"%dA%dB\\n\",count_A,count_B);
    return 0;
}
void main()//c语言版猜数字游戏
{
    int r_num;
    int input_num;
    srand(time(0));
    int j,i = 0,temp1,temp2 = 0;
    /*********************生成四个随机数***********************/
    while(i<4)
    {
       if(i == 0) {r_num = rand()%10;i++;}
       else
       {
           temp1 = rand()%10;
           for(j=0;j<i;j++)
           {
               if(temp1 == r_num) temp2++;      
           }
           if(temp2 == 0)
           {
               r_num = temp1;
               temp2 = 0;
               i ++;
           }
           else
           {
               temp2 = 0;
               continue;
            }
       }   
    }
    for(i = 0;i<4;i++)
    printf(\"%d\\n\",r_num);
    /************************猜数字游戏核心部分*********************/
    for(;;)
    {
        scanf(\"%d\",&j);
        input_num =  j/1000;
        input_num =  j%10;
        input_num = (j - input_num*1000)/100;
        input_num = (j - input_num*1000 - input_num*100)/10;
        /********这个地方缺一个函数判断输入的四个数是否一样,由大家自己实现********/
        if(judge(input_num,r_num)==1) break;
        else
            continue;
    }
}

发表于 1970-1-1 08:00

页: [1]
查看完整版本: 【连载】科普之---随机数的应用(猜数字游戏的实现)