c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统

程序函数关系图

201b0dc6dfe14abe9e1e40ca043bbfbc.png

函数功能及全局变量介绍

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

全局变量

cf1d2a14471ceccb56251b9497f810dd.png

Cut( )函数

4f94443818be84c032d7a181d10c0acc.png

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

Start( )函数

6ea96f55c9a5192b97ef1bbb4102ea12.png

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

Number( )函数

c347c9247e7cfbba5a9e8498eb518571.png

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

myRand( )函数

fe48760642aef49c2a252b27a6556701.png

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

correctMessage( )函数

5e4eae5764cc1b0f31bb9a3bb80902a4.png

incorrectMessage( )函数

72ce26c59e8c45e5a26eed2289bd8af6.png

Questions( )函数

6b68a9538529c6fe610a61ea511cc110.png

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

出题注意:

所有的题目中不能出现答案的得数是负数;

三年级之前的小学生还没有学习交换律、结合律和分配律,命题的时候不能考查这些,及运算过程不能存在负数中间量;

涉及除法运算时,除数不能为0;

除法运算的得数不能出现小数,三年级前的普通学生并不能很好地进行这种运算;

出题时需要注意控制得数的位数,不能将题目搞得太难;

出含有乘法、除法运算的题目时,必须显示数学符号“×”和“÷”,否则小学生看不懂。

Game( )函数

c802357e8d447c30a2b01fa6b40e018d.png

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

judgment( )函数

3a1e522339dfdb06abcf545131c33214.png

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

Timer( )函数

6f4352bd09d7561cb782251e91fd5e37.png

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

outTime( )函数

bf1e78ba97daa81f3d854af5373a609f.png

Prepare( )函数

fafc2d3023afdf2b042fad97c88b346c.png

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

Ending( )函数

eab6b8dcd6f4601446c725be76ecd062.png

Addition( )函数

97238864f2ba23cd93083303d59c606f.png

Subtraction( )函数

49560ed134dfe83e7daaa1219acb1bee.png

Multiplication( )函数

5734601530c171d38438d61b22c96540.png

Division( )函数

3dedcb3438b88b10ed8b70266d77a1ac.png

Remainder( )函数

d72a56a45f665ee6af3b69774f95afe6.png

fourOperations( )函数

73a1fdc651afffc8ccee1b19a80c352e.png

主函数

2d866108a0fd0cdf7661e8242c68c262.png

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

运行效果,测试用例

开始页面

21cdcb229b1861b5015b2923e66c15da.png

一年级题目

efbd3408783d4727a6c20c34ad08d99e.png

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

一年级的题型有:

1/2位数 + 1位数;

1/2位数 - 1位数;

3个1位数的加减法运算。

二年级题目

7582d0c0ecc9d69e90b4af44b304b04e.png

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

二年级的题型有:

九九乘法表及其逆运算;

2位数与2位数的加减运算;

求余运算;

简易的四则运算。

三年级题目

e4ace787b55eb9e7a7b26ebbe92c73d7.png

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

三年级的题型有:

3位数与两位数加减法运算(含连续进/退位);

两位数乘一位数;

被除数是三位数求余运算;

考虑优先级的四则运算。

非法输入

0d8426fbd20d8ce14e5451b360811594.png

随机给出习题量

2ca440a4ccb7de2382478d3b892a2d24.png

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

超时作答

eb8d9791d381898de1dba79d019d9ecc.png

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

结算并开启下一轮练习

8af2eb9f363685f04c57b8dcfba58221.png

系统将会根据正确率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:将不同的题型分别用函数封装,通过控制传入的参数达到控制难度的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人出魔切还是三相_工业机器人常见故障和修理方法

机械手常见故障和修理方法 1.先动口再动手对于有故障的电气设备,不应急于动手,应先询问产生故障的前后经过及故障现象。对于生疏的设备,还应先熟悉电路原理和结构特点,遵守相应规则。拆卸前要充分熟悉每个电气部件的功能、位置、连…

字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...

本帖最后由 奉聪 于 2017-1-25 14:54 编辑*******前言*******我数一下,我发了几个帖子,1、2、3?哈哈哈,没几个哈,感谢吾爱,让我学到了很多,乐于分享,共同进步!最近也是在…

matlab 图像显著性检测ft_全局对比度的图像显著性检测算法

点击上方蓝字关注我们星标或者置顶【OpenCV学堂】干货与教程第一时间送达!显著性检测概念显著性就是可以快速引起你注意的对象或者物体,在图像或者视频中显著性检测的结果往往是图像或者视频中对象,在神经学科中显著性检测被描述为注意力机制…

在c51语言的程序中 注释一般采用,【判断题】在 C51 语言的程序中,注释一般采用 /* */ 和 // 来实现。 (3.0分)...

当ab<0时,化简a2b的结果是()A.-abB.a-bC.-a-bD.ab(-5)2的化简结果为()A.25B.5C.-5D.&a…

修改所有列_哪些数据库是行存储?哪些是列存储?有什么区别?

大多数数据库系统存储一组数据记录,这些记录由表中的列和行组成。字段是列和行的交集:某种类型的单个值。属于同一列的字段通常具有相同的数据类型。例如,如果我们定义了一个包含用户数据的表,那么所有的用户名都将是相同的类型&a…

函数指针定积分C语言,急!!!利用函数指针变量编写一个求定积分的通用函数,...

急!!!利用函数指针变量编写一个求定积分的通用函数,答案:4 信息版本:手机版解决时间 2021-05-05 09:17已解决2021-05-05 02:15用它分别求5个函数的定积分:每次需要求定积分的函数是不一样的。可以编写一个求定积分的通…

cordova 更改app版本_【ios马甲包cps联运】App上架难 马甲包不知道该怎么做?

专业app代上架!解决全网IOS上包难诸多问题 ,提供多类别马甲包功能包定制服务!(直播.财务.社交.生活.游戏.电商)另外提供app加速审核及好评优化服务.长期出售白包功能包!总的来说,App Store 的上架流程,主要分为 7 大步骤:1、创建证…

须使用visual c 内联汇编语言开发,在VisualC 中使用内联汇编

在VisualC 中使用内联汇编2008-04-09 04:08:57来源:互联网 阅读 ()一、内联汇编的优缺点因为在Visual C 中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C 中不能处理的一些事情,而且可以使用在C/C 中的变量,所以非常…

dockerfile 修改文件权限_网易技术实践|Docker文件系统实战

在本文中,我们来实战构建一个Docker镜像,然后实例化容器,在Docker的生命周期中详细分析一下Docker的文件存储情况和DockerFile优化策略。在开始实战之前,我们先介绍一个概念,联合文件系统(Union File Syste…

stm32c语言写数码管定时器,使用TIM1产生1秒定时控制数码管显示0-9(STM32_10)

一、项目配置1、新建项目文件夹"TimSeg";2、通过Keil5创建新项目,保存在所创建的文件夹中(设项目名为pTimSeg),选择MCU芯片为"STM32F103ZE"(本程序使用的硬件为:STM32-PZ6806L开发板)3、在"TimSeg"…

pandas自动创建文件夹_pandas快速入门

pandas有两类数据对象:dataframe和series。Series是一个带标签的一维数组,通常索引在左,值在右。dataframe是一个带标签的二维数组,可以理解成series的字典,共用索引标签。重点记录dataframe的相关用法:一.…

小数分数转换c语言,这是把小数转换成分数的程序,可是输入0.6666无限循环

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include int main(){double a;scanf("%lf", &a);输入小数int b, c 0, d 0;double b1 a;do{b1 *10;b (int)b1;printf("%d\n", b);if(b%10!0){c;if(d>0){c d;d 0;}}else{d;}}while(d<5);printf("…

血栓清道夫机器人_血栓“清道夫”找到了!木耳排第三,排在第一很多人都并不知道...

当血液中出现大量的血栓&#xff0c;很容易堵塞血管&#xff0c;多处血栓&#xff0c;主要是由于血液中积聚了大量的脂类物质&#xff0c;沉积在血管内壁上形成的&#xff0c;而日常生活中不良的饮食习惯则会加剧我们血液的粘稠程度&#xff0c;大量的直流物质&#xff0c;更容…

for循环c语言流水灯,巧用数组与for循环为流水灯程序瘦身

数组——一种储存大量同性质数据的连续存储器空间a [6];b [] {2&#xff0c;4&#xff0c;8&#xff0c;3&#xff0c;6};c[6] {1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6};char d[6] "hello";以上方式均是数组创建的常用方式~数组是从…

java的map 使用string数组多了双引号_奥奥奥利给!!!再也不怕面试官问我String源码了!来吧...

简述字符串广泛应用 在 Java 编程中&#xff0c;在 Java 中字符串属于对象&#xff0c;Java 提供了String 类来创建和操作字符串。字符串缓冲区支持可变字符串。因为String对象是不可变的&#xff0c;因此可以共享它们。String类代表字符串&#xff0c;Java程序中的所有字符串字…

C 语言 运算符怎么使用,详解C++编程中运算符的使用

C的运算符十分丰富&#xff0c;使得C的运算十分灵活方便。例如把赋值号()也作为运算符处理&#xff0c;这样&#xff0c;abc4就是合法的表达式&#xff0c;这是与其他语言不同的。C提供了以下运算符&#xff1a;算术运算符(加) -(减) *(乘) /(除) %(整除求余) (自加) --(…

面积积分_袁颖妍:用定理积分求平面区域面积(有代表性的9个例题)

考研竞赛智慧e数学的广告&#xff1a;鸡汤所谓“理解”&#xff0c;所谓“智商”&#xff0c;本质上最终都归到"记忆",还有一点就是能够发现自己“记忆”中各个零散的知识点的关系。所谓“智商”高低的人&#xff0c;其实是强化这些“记忆”的能力的不同&#xff0c;…

vip会员管理系统c语言,路西牌会员管理系统。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼void VIP::show( Node *v){no(v);char *aVIP::sex(v);std::cout<<< "会员姓名: "<< node.item.num[1]<< endl<< "性别: "<< sex(v)<<< "手机号码: "<…

字体选择_十分钟带你掌握精准选择字体的方法!

文章序言&#xff1a;上次记得有粉丝评论需要讲讲字体&#xff0c;今天就给大家带来一期关于&#xff0c;如何快速选择合适的字体的文章&#xff0c;帮助大家以后把字体用对&#xff0c;用好&#xff0c;用准。在讲这个字体的时候会结合实际的案例操作给大家讲解&#xff0c;这…

c语言输出行末不得有多于空格,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…