zoukankan      html  css  js  c++  java
  • C语言程序设计——小学生口算刷题系统


    仅使用 C 语言数组之前的知识编写。

    程序函数关系图

    函数功能及全局变量介绍

    • 代码中已有详细注释的地方不再进行解释。

    全局变量

    Cut( )函数

    • 此函数用于分割界面,使界面更为美观。

    Start( )函数

    • 此函数集成了开始菜单,年级的输入,为了营造一个快乐而刺激的刷题体验,程序与用户有很多互动。

    Number( )函数

    • 由于出题时要非常注重题目的难度,因此控制随机数的位数极其重要,因此单独封装成一个函数处理。

    myRand( )函数

    • 同上,很多时候生成的随机数需要控制范围,为了提高准确性,简化判断机制,单独封装函数来达成生成随机数的目的。

    correctMessage( )函数

    incorrectMessage( )函数

    Questions( )函数

    • 此函数是出题的中枢函数,集成了我设置的所有题型,并且出口对接着其他函数共同完成出题。

    出题注意:

    1. 所有的题目中不能出现答案的得数是负数;
    2. 三年级之前的小学生还没有学习交换律、结合律和分配律,命题的时候不能考查这些,及运算过程不能存在负数中间量;
    3. 涉及除法运算时,除数不能为0;
    4. 除法运算的得数不能出现小数,三年级前的普通学生并不能很好地进行这种运算;
    5. 出题时需要注意控制得数的位数,不能将题目搞得太难;
    6. 出含有乘法、除法运算的题目时,必须显示数学符号“×”“÷”,否则小学生看不懂。

    Game( )函数

    • 此函数集成了题目量控制、判断答案正误及超时作答、中途退出的功能。

    judgment( )函数

    • 此函数用于分析用户的作答情况,并给出一些提示和建议,并确认是否开启下一轮练习。

    Timer( )函数

    • 此函数用于获取现在的时间。

    outTime( )函数

    Prepare( )函数

    • 此函数用于确认用户的习题量,并给出温馨提示,做好答题准备。

    Ending( )函数

    Addition( )函数

    Subtraction( )函数

    Multiplication( )函数

    Division( )函数

    Remainder( )函数

    fourOperations( )函数

    主函数

    • 集成了菜单函数、准备函数、题量控制及裁判函数、结算函数和结束函数。

    运行效果,测试用例

    开始页面

    一年级题目

    • 出题时由系统随机出题,我并没有完全按照作业要求出题,例如整十数减整十数的减法这类题,本质上是一位数加一位数,因此我对一些题型做了归并处理。

    一年级的题型有:

    1. 1/2位数 + 1位数;
    2. 1/2位数 - 1位数;
    3. 3个1位数的加减法运算。

    二年级题目

    • 出题时由系统随机出题,我并没有完全按照作业要求出题,例如尾数是0三位数加法(和在一千以内的)这类题,本质上是二位数加二位数,因此我对一些题型做了归并处理。

    二年级的题型有:

    1. 九九乘法表及其逆运算;
    2. 2位数与2位数的加减运算;
    3. 求余运算;
    4. 简易的四则运算。

    三年级题目

    • 出题时由系统随机出题,我并没有完全按照作业要求出题,例如一位数乘一位这类题,本质上是九九乘法表,因此我对一些题型做了归并处理。

    三年级的题型有:

    1. 3位数与两位数加减法运算(含连续进/退位);
    2. 两位数乘一位数;
    3. 被除数是三位数求余运算;
    4. 考虑优先级的四则运算。

    非法输入

    随机给出习题量

    • 生成习题量的方式是生成一个两位的随机数。

    超时作答

    • 超时作答的判定方式为单题答题结束时间减去开始时间超过15秒。

    结算并开启下一轮练习

    • 系统将会根据正确率100%、80%、60%、60%以下四种情况进行判定,同时对超时率30%以上也有判定。

    调试碰到问题及解决办法

    Q1:有时候出题时会同时打出两道题目。
    A1:出题时,主要使用了switch多分支结构,由于该结构的特性,在缺少break语句时会继续执行下一个case,就会出现同时出了两道题的情况,补上break即可。
    Q2:四则运算题时,会出现题目的中间量为负数的情况。
    A2:利用循环生成题目,如果遇到会出现这种情况的数据,则重新生成。
    Q3:出除法题时,会出现得数含有小数的情况,然而三年级之前的学生较难处理这类题。
    A3:所有的除法题改为用乘法的逆运算出题。
    Q4:出除法题时,会出出除零运算的题。
    A4:利用我自己写的随机数函数,就不会出现数字0。
    Q5:出题时,最后一种题型的题目不出现。
    A5:我忘记了我自己的随机数函数的生成范围是开区间,修改上即可。
    Q6:非法数据作答时,系统会直接跑完所有循环。
    A6:由于这种情况系统不会崩溃,并且也可以实现强行退出,再加上实力问题,所以暂时没有处理。
    Q7:如何实现计时功能?
    A7:原计划是判断作答时间如果超过15秒就直接判错,但是由于实力问题暂时不能实现,只能做到用户作答之后判断是否超时。
    Q8:如何做到重开一轮练习?
    A8:原计划是想使用“goto”语句,但是后来想一想,只需要在主函数套个循环即可,因此重构了菜单函数,重新定义一个准备函数将原本的题量输入的部分放进去。
    Q9:在不利用bug的情况下如何实现强退?
    A9:原计划是想使用“goto”语句,但是后来想一想,只需要操作习题量,如果输入负数,就直接让题号加到习题量的上限,让系统误以为题目出完了即可。
    Q10:为了避免猝不及防的开始,想要在开始练习之前设置倒计时。
    A10:与舍友讨论之后,学习了Sleep函数实现这个功能。
    Q11:出题函数被老师指出代码重复率很高。
    A11:将不同的题型分别用函数封装,通过控制传入的参数达到控制难度的效果。

  • 相关阅读:
    iOS开发官方文档汇总
    Hadoop安装配置手册
    访问.Net程序集、COM和WMI
    UML用例图教程详解
    JIRA的详细安装和破解
    [转]编程经典好书分类
    走向资深架构师的旅程
    12款响应式 Lightbox(灯箱)效果插件
    ASP.NET MVC应用程序的安全性介绍总括
    MapReduce篇之InputFormat
  • 原文地址:https://www.cnblogs.com/linfangnan/p/12642379.html
Copyright © 2011-2022 走看看