数组的趣味应用-文曲星猜数游戏

本文介绍如何使用C语言设计一个文曲星猜数游戏,包括生成四位数、验证用户输入、计算数字正确性和位置正确性的方法,通过程序调试逐步完善功能。
摘要由CSDN通过智能技术生成

1. 如何让计算机生成一个各位相异的四位数(MakeDigit函数):

[方法1]

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void MakeDigit(short []);
void Show(short []);
int main()
{
    short X[4];
    MakeDigit(X);
    Show(X);
    /* */
    return 0;
}
/* 随机生成一个各位相异的四位数 */
void MakeDigit(short a[])
{
    srand(time(NULL));
    /* 先生成个位数字 */
    a[0] = rand() % 10;
    /* 接着生成十位数字 */
    do
    {
        a[1] = rand() % 10;
        /* 如果生成的十位数字和个位数字相同, 须重新生成十位数字, 直到二者不相等为止 */
    }while(a[0] == a[1]);
    /* 然后生成百位数字 */
    do
    {
        a[2] = rand() % 10;
        /* 至此个位数字和十位数字一定不同 */
        /* 须确保生成的百位数字和个位数字、十位数字都不相同 */
    }while(a[0] == a[2] || a[1] == a[2]);
    /* 最后生成千位数字 */
    do
    {
        a[3] =rand() % 10;
        /* 至此个位数字、十位数字和百位数字均不相同 */
        /* 须确保生成的千位数字和个位数字、十位数字、百位数字均不相同 */
    }while(a[0] == a[3] || a[1] == a[3] || a[2] == a[3]);
}
/* 从高位开始输出生成的4位随机数字 */
void Show(short b[])
{
    short i = 3;
    while(i >= 0)
    {
        printf("%hd", b[i]);
        i --;
    }
}

 

 

[方法2]

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void MakeDigit(short []);
void Swap(short *, short *);
void Show(short []);
int main()
{
    short X[10];
    MakeDigit(X);
    Show(X);
    /* */
    return 0;
}
/* 随机生成一个各位相异的四位数 */
void MakeDigit(short a[])
{
    short i, j;
    srand(time(NULL));
    /* 将0~9共十个数字顺序放入数组a中 */
    for(i = 0; i < 10; i ++)
    {
        a[i] = i;
    }
    for(i = 0; i < 10; i ++)
    {
        /* 随机生成一个下标值j */
        j = rand() % 10;
        /* 交换数组元素a[i]与a[j]的值 */
        Swap(a + i, a + j);
    }
    /* 10次循环后, 数组a中的数已打乱顺序 */
    /* 接着在主函数中调用Show函数只显示数组的前四个元素, 即可达到预期效果 */
}
/* 交换两变量的值 */
void Swap(short *a, short *b)
{
    short temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
/* 从高位开始输出生成的4位随机数字 */
void Show(short b[])
{
    short i = 3;
    while(i >= 0)
    {
        printf("%hd", b[i]);
        i --;
    }
}

 

2. 如何判断用户输入的数据是否合法(InputG

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好梦成真Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值