C语言寒假大作战03

纵饮孤独 提交于 2020-02-12 18:47:27

 

这个作业属于哪个课程班级链接
这个作业要求在哪里 C语言寒假大作战03
这个作业的目标 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数
作业正文 如下所示
参考文献 随机数rand还有很多比如百度百科之类的

设计思路和遇到的问题

思路

我们先把头文件加上去,然后再使用rand()函数。先从最简单的一年级开始,然后再写二年级,三年级然后作业就完成了。

问题

问题啥的还真挺多,但是也都解决了不然也完成不了这个作业。
1,刚开始我代码是这样的

for (int i = 0; i < num; i++)
    {
        int rand(void);
        {
            int a, b, c;
            srand((unsigned)time(NULL));
            for (int i = 0; i < num; i++)

            {
                
                a = rand() % 10;
                b = rand() % 10;
                c = rand() % 2;
                if (c == 0)
                    {
                        printf("%d + %d = \n", a, b);
                    }
                    else
                    {
                        printf("%d - %d = \n", a, b);
                    }
                
            }

        }

错误倒是没有,就是运行出来变成了n*n个题,比如我输个3他会出来3个题然后重复三遍...然后发现for (int i = 0; i < num; i++)重复了,然后修改完之后听取学长的建议,简化了一下代码
2,写二年级的时候,还是要用到随机数,然后题目说要两位数的乘除法,然后还要考虑除数不能为0的情况,想了好久不知道怎么改,高人的指点下顺利改好了,把printf("%d / %d = \n", a, b +);改成printf("%d / %d = \n", a, b + 1);就好了。
3,三年级就一二年级的结合版,然后我发现事情并没有那么简单。在做完之后多试了几次发现又出现了除数为0的情况。太南了。

程序结果截图





程序代码

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#include<time.h>

void help();
int menu();
void error();
void grade_1();
void grade_2();
void grade_3();

int main()
{
    int grade = 1;

    printf("========== 口算生成器 ==========\n");
    printf("欢迎使用口算生成器 :)\n");
    printf("\n\n");

    help();
    while (grade)
    {
        grade = menu();

        switch (grade)
        {
        case 1: grade_1(); break;
        case 2: grade_2(); break;
        case 3: grade_3(); break;
        case 4: help(); break;
        case 5: grade = 0; break;
        default: error(); grade = 1; break;
        }
    }
    printf("程序结束, 欢迎下次使用\n");
    printf("任意键结束……");

    _getch();
    return 0;
}

void help()
{
    printf("帮助信息:\n");
    printf("您需要输入命令代号来进行操作, 且\n");
    printf("一年级题目为不超过十位的加减法;\n");
    printf("二年级题目为不超过百位的乘除法;\n");
    printf("三年级题目为不超过百位的加减乘除混合题目.\n");
    printf("\n\n");
}

int menu()
{
    int a = 0;
    printf("操作列表:\n");
    printf("1)一年级    2)二年级    3)三年级\n");
    printf("4)帮助      5)退出程序\n");
    printf("请输入操作> ");
    scanf("%d", &a);
    printf("< 执行操作 :)\n");
    printf("\n\n");
    return a;
}

void error()
{
    printf("Error!!!报错了哦乖乖别乱按哦\n");
    printf("错误操作指令, 请重新输入\n");
    printf("\n\n");
}

void grade_1()
{
    printf("现在是一年级题目\n");
    int num = 0;
    printf("请输入所需要的题目个数>");
    scanf("%d", &num);
    printf("< 执行操作 :)\n\n");

    int a, b, c;
    srand((unsigned)time(NULL));

    printf("/*----- 一年级 -----*/\n\n");

    for (int i = 0; i < num; i++)
    {
        a = rand() % 10;
        b = rand() % 10;
        c = rand() % 2;
        if (c == 0)
        {
            printf("%d + %d = ___\n", a, b);
        }
        else
        {
            printf("%d - %d = ___\n", a, b);
        }

    }
}

void grade_2()
{
    printf("现在是二年级题目:\n");
    int num = 0;
    printf("请输入所需要的题目个数");
    scanf("%d", &num);
    printf("< 执行操作 :)\n\n");

    int a, b, c;
    srand((unsigned)time(NULL));

    printf("/*----- 二年级 -----*/\n\n");

    for (int i = 0; i < num; i++)
    {
        a = rand() % 100;
        b = rand() % 100;
        c = rand() % 2;
        if (c == 0)
        {
            printf("%d * %d = ___\n", a, b);
        }
        else
        {
            printf("%d / %d = ___\n", a, b + 1);
        }
    }
}

int num_dividend()
{
    for (int i = 0; true; i++)
    {
        if (i = rand() % 100)
            return i;
    }
}

char four_arithmetic(int num)
{
    switch (num)
    {
    case 1: return '+';
    case 2: return '-';
    case 3: return '*';
    case 0: return '/';
    }
}
void grade_3()
{
    printf("现在是三年级题目:\n");
    int num = 0;
    printf("请输入所需要的题目个数");
    scanf("%d", &num);
    printf("< 执行操作 :)\n\n");



    printf("/*----- 三年级 -----*/\n\n");

    for (int i = 0; i < num; i++)
    {
        printf("%2d %c %2d %c %2d = ___\n", num_dividend(), four_arithmetic(rand() % 4), num_dividend(), four_arithmetic(rand() % 4), num_dividend());
    }
}

Gitee上传截图与链接

https://gitee.com/li_han_lin/LHL20199433

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!