C语言寒假大作战03

天涯浪子 提交于 2020-02-11 22:43:43

2.2.1 作业头:

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2019-2/
这个作业的要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/10271
这个作业的目标 学会并熟悉随机数的使用
作业正文 https://i-beta.cnblogs.com/posts/edit;postId=12296694
其他参考文献 https://www.cnblogs.com/czynb/p/12258780.html,https://www.cnblogs.com/abcd123456/p/12256867.html

2.2.2 设计思路和遇到的问题

在上次作业的基础上加了一个题目输出,这次作业的难点就是随机数和符号的变换,学习完rand函数后明白了随机数的产生,那接下来就是符号变换。

思路:先调用三个函数分别实现三种不同的题目类型,通过for函数实现每种题目十个,定义字符,产生随机符号,然后组合输出,接着大功告成。
问题:(1)在定义字符的时候我把rand()%2也当成一个符号,其实是一个数,所以每次输出的时候符号都是白的。
(2)在产生混合符号的时候我发现每次输出的俩个符号都相同,这显然不符合题目要求,这个时候我发现我只定义了一个字符op。
(3)在我改正第二个问题后,我又发现俩个符号很多次都是同种种类,不能实现混合。
(4)最后我发现我输出的随机数都是一个样,也就是伪随机数。

2.2.3 程序结果截图





2.2.4 程序代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int fen1 ()
{
    char ops[2]={'+','-'};
    int i, n=10, op;
    for(i=0; i<n; i++)
    {
        op= rand()%2;
        printf("%d %c %d=___\n", rand()%10, ops[op], rand()%10);
    } 
}
int fen2 ()
{
    char ops[2]={'*','/'};
    int i, n=10, op;
    for(i=0; i<n; i++)
    {
        op= rand()%2;
        printf("%d %c %d=___\n", rand()%100, ops[op], rand()%100);
    } 
}
int fen3 ()
{
    char ops1[3]={'+','*'}, ops2[3]={'-','/'};
    int i, n=10, op1, op2;
    for(i=0; i<n; i++)
    {
        op1= rand()%2;
        op2= rand()%2;
        printf("%d %c %d %c %d=___\n", rand()%100, ops1[op1], rand()%100, ops2[op2], rand()%100);
    } 
}
int help(int a) {
    printf("欢迎使用口算生成器 :\n \n \n帮助信息\n您需要输入命令代号来进行操作, 且\n");
    printf("一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
    printf("操作列表:\n1)一年级    2)二年级    3)三年级\n4)帮助      5)退出程序\n ");
    return 0;
}
int main()
{
    printf("========== 口算生成器 ==========\n");
    printf("欢迎使用口算生成器 :\n \n \n帮助信息\n您需要输入命令代号来进行操作, 且\n");
    printf("一年级题目为不超过十位的加减法;\n二年级题目为不超过百位的乘除法;\n三年级题目为不超过百位的加减乘除混合题目.\n\n\n");
    printf("操作列表:\n1)一年级    2)二年级    3)三年级\n4)帮助      5)退出程序\n ");
sr:printf("请输入操作 >\n\n");
    int a;
    time_t t;
    srand((unsigned) time(&t));
    scanf("%d", &a);
    printf("开始执行%d命令\n", a);
    switch (a) {
    case 1:fen1();goto sr;
    case 2:fen2();goto sr;
    case 3:fen3(); goto sr;
    case 4:help(a); goto sr;
    case 5:printf("程序结束, 欢迎下次使用\n任意键结束……"); return 0;
    default:printf("Error!!!\n错误操作指令, 请重新输入"); goto sr;
    }
}

2.2.5 Gitee上传截图与链接


https://gitee.com/he_bridge/xq

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