《C语言》试卷B------智力猜字游戏 游戏规则简介: 由计算机在0-9,这10个数字中,选取4

《C语言》试卷B------智力猜字游戏
游戏规则简介:
由计算机在0-9,这10个数字中,选取4个数字组成序列,数字不能重复。由玩家来猜测这四个数字所在的位置并输入,如果位置和数字都正确,则X+1,如果仅仅是数字正确,位置不正确,则Y+1。玩家根据X、Y的值进行分析,再次输入数字,系统根据玩家输入的数字再次给出XY的值。玩家再次根据XY的值进行猜测,直到把四个数字的位置和数字都猜对。即X=4,Y=0。游戏结束。
游戏运行演示界面如下:

系统功能分析
本系统由以下几个功能模块(函数)构成:
显示模块(函数):显示指定(已知)数组中的元素。
校验模块(函数):验证指定(已知)数组的合法性,数组中的数据是否有重复?是否有超出0-9范围的数据?
选号模块(函数):将输入的整数存入数组a1,并将a1作为本模块(函数)的结果。
随机数产生模块(函数):产生随机数存入数组b1,并将b1作为本模块(函数)的结果。
比对模块(函数):将选号模块得到的数组a1与随机数产生模块得到的数组b1进行比对,看有多少个数组元素是相同的,如果元素值相同且位置也相同,则X+1,否则Y+1

目的:掌握函数(函数)的定义、调用、嵌套、递归、指针、循环、选择
要求:各个子功能模块(函数)独立实现,并能够独立测试。

主要知识点:函数的定义、调用。
知识点补充:如果将指针作为函数返回值,那么该指针所指向的变量必须是静态的,否则,指针有效,但其所指向的变量已经被释放了

//合法性判断不全,楼主自己加一下吧
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#define N 4
int a1[N];
int b1[N];
int X,Y;
void rand_array()
{
    int i=0,j;
    srand((int)time(0));
    while(i<N)
    {
        b1[i] = rand()%10;
        j = 0;
        while(j<i)
        {
            if(b1[i]==b1[j])
            {
                break;
            }
            j++;
        }
        if(i==j)
        {
            i++;
        }
    }
}
void display(int *a)
{
    int i;
    for(i=0;i<N;i++)
    {
        printf("%d",a[i]);
    }
    printf("\n");
}
void scan_array()
{
    int i;
    for(i=0;i<N;i++)
    {
        a1[i] = getchar()-48;
    }
    getchar();
}
void compile()
{
    int i,j;
    X=Y=0;
    for(i=0;i<N;i++)
    {
     if(a1[i]==b1[i])
{
X++;
}
else
{
for(j=0;j<N;j++)
{
if(a1[i]==b1[j])
{
Y++;
}
}
}
}
printf("X=%d,Y=%d\n",X,Y);
}
void main()
{
rand_array();
while(X!=4)
{
scan_array();
compile();
}
printf("恭喜您猜对了!\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-09
c语言猜数字 源代码提供
相似回答