C++课设第30题自动出题20以内退位减法课设电子文档.docx

上传人:b****8 文档编号:9687700 上传时间:2023-05-20 格式:DOCX 页数:10 大小:104.58KB
下载 相关 举报
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第1页
第1页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第2页
第2页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第3页
第3页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第4页
第4页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第5页
第5页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第6页
第6页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第7页
第7页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第8页
第8页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第9页
第9页 / 共10页
C++课设第30题自动出题20以内退位减法课设电子文档.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++课设第30题自动出题20以内退位减法课设电子文档.docx

《C++课设第30题自动出题20以内退位减法课设电子文档.docx》由会员分享,可在线阅读,更多相关《C++课设第30题自动出题20以内退位减法课设电子文档.docx(10页珍藏版)》请在冰点文库上搜索。

C++课设第30题自动出题20以内退位减法课设电子文档.docx

C++课设第30题自动出题20以内退位减法课设电子文档

C++课设第30题自动出题20以内退位减法-课设电子文档

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

河北工业大学计算机软件技术基础(VC)2015年课程设计报告

学院机械工程学院班级机电141班姓名杨纳川学号140584成绩____

一、题目:

自动出题20以内退位减法(30)

二、设计思路

1、总体设计

1)分析程序的功能

让计算机随机输出100个20以内的退位减法,其中1~50题为诸如15-6=?

形式的退位减法;51~75题为1?

-4=7形式的退位减法;76~100题为:

16-?

=7形式的退位减法。

利用随机函数生成运算数,然后获取符合范围的运算数,生成算式并保存正确答案。

 使用循环语句把所需要使用的数字用数组记录下来,由于每个算式中要出现两个随机的数字,所以应采用二位数组。

算式的格式有一定的要求,即每个算式中不能出现两个两位数的数字,即每个算式中只能出现两个一位数的数字和一个两位数的数字。

算式的种类分为三种,每种算式不同,所存储的数字也不一样。

在输出的过程中随机输出,所以要采用随机函数。

2)系统总体结构:

首先利用二维数组把三种情况下可能出现的使用数字记录下来,然后利用随机函数随机生成符合要求和数目的数字,然后在用正确的表达形式让系统输出,从而达到预期的效果。

由计算机随即输出100个20以内的退位减法,并且退位减法是形势不一样,分为三种形势第一种15-6=这种输出50个,第二种1?

-5=8这种形势随机出现25个,第三种17-?

=9这种形势随机输出25个。

2、各功能模块的设计:

说明各功能模块的实现方法

设计分为两大模块

模块

函数名称

存储阶段

使用for循环

输出阶段

srand(time(NULL));

1)利用数组把三种不同情况下的退位减法算式中所需要的数字记录下来,记录过程分为三个小模块,没个模块记录不同形式的算式所需要的数字。

算式一共有145中可能,而且需要使用二维数组所以定义e[135][2].算式一共分为三类,第一类“15-7=”,第二类“1?

-5=8”,第三类“10-?

=3”。

用e[0][0]到e[44][2]来记录第一种算式出现的所有数字,例如:

15-7=在此算式中e[k][0]代表算式中的15,e[k][1]代表算式中的7,即e[k][0]代表此类算式中出现的第一个随机数所对应的数,e[k][1]代表此类算式中出现的第二个随机所对应的数字;用e[45][0]到e[89][2]来记录第二种算式出现的所有数字,例如:

1?

-5=8在此算式中e[k][0]代表算式中的5,e[k][1]代表此类算式中出现的第二个随机所对应的数字;用e[90][0]到e[134][1]此类算式中出现的第三个随机所对应的数字;例如10-?

=3,在此算式中e[k][0]代表算式中的10,e[k][1]代表算式中的3,即e[k][0]代表此类算式中出现的第一个随机数所对应的数,e[k][1]代表此类算式中出现的第二个随机所对应的数字.算式对数字有要求,每次都只能输出一个二位数字,两个一位数字,所以被减数减减数之后必须为为一位数字,因此在数据的存储过程使用for循环语句。

第一种类型的算式第一个出现的必须为大于等于10的二位数所以“for(i=10;i<19;i++)”但是必须要求减去第二个数后的得数为一位数,因此在“for(intj=(i+1)%10;j<10;j++)”来记录所有可能出现的数字。

但是第二种和第一种不一样它随机输出的两个数字都为一位数所以用“for(i=1;i<10;i++)

for(intj=10-i;j<10;j++)”来记录第二种可能出现的数字。

第三种类型同第一种类型。

2)输出模块

利用随机函数把符合要求的算式以正确的形式输出并且保证不同形式的算式所输出的个数符合题目要求。

输出过程需要掉应随机函数,但是随机函数需要变量因子来控制每次所输出的算式不一样因此采用时间随机函数“srand(time(NULL));”这样就可以实现每次运行程序输出的结果不同。

第一种算式要求输出50个因此采用循环“for(i=0;i<50;i++)”第二种和第三种的算式需要输出25个,因此采用循环“for(i=0;i<25;i++)”。

随机函数可能不在所需要的区间之内,当不在区间内的情况下把所随机出现的数字进行减一处理“i—”直到所得的数字在所要求的区间内为止,则进行输出“cout<=0&&rand()<45)所得的随机函数会超过135,因此程序会出现越界现象,使得程序无法运行。

因此定义“b=rand()”让b进行比较,若不在区间内的情况下进行减一,直到数字在所需要的区间为止。

为了美观,每行输出5个算式“if(a%5==0)cout<

3、设计中的主要困难及解决方案

在这部分论述设计中遇到的主要困难及解决方案。

1)大量使用循环语句和if语句,随机函数有很多不懂的地方。

解决方案:

认真分析构思,在清晰的思路下进行编写,从而使循环语句和if语句变的容易一些,随机函数则需要自学,了解和掌握随机函数的简单使用方法。

随机函数的使用出现问题,直接进行“if(rand()>=0&&rand()<45)”这样的语句,导致随机出现的数字不在所定义的区间之内,使得程序无法运行。

通过与同学之间的讨论,令随机出现的数字为“b”让“b”与所需要的区间进行比较,若是不在区间之内就进行减一处理。

这样既保证的不越界,也确保了程序的正确运行和输出。

2)基础知识不牢固导致大量错误并难以修改。

解决:

重新翻书,以及请教其他成绩优秀的的同学,多交流。

3)在程序运行的过程中出现了很多问题。

解决:

有很多的错误类型一样,细心认真的改错,实在不会的找同学帮忙或者在网上XX。

4、你所设计的程序最终完成的功能

让计算机随机输出100个20以内的退位减法,其中1~50题为诸如15-6=?

形式的退位减法;51~75题为1?

-4=7形式的退位减法;76~100题为:

16-?

=7形式的退位减法。

能够由用户选择出拳,然后判断胜负并输出战果和统计信息。

运行结果

程序使用了时间随机函数,根据成寻运行时间的不同而得到不同的退位减法算式

三、程序清单

1)main函数

voidmain()

{

intk=0,i;

//声明变量i,k并且声明k的初始值

inte[135][2];

//声明在本程序中所需要的数组,以及数组元素的个数

 

for(i=10;i<19;i++)

for(intj=(i+1)%10;j<10;j++)

//对于第一种形式的算式可能出现的数据记录下来

{

e[k][0]=i;

//对于第一种情况下的算式例如:

15-6=把15定义为e[k][0]

e[k][1]=j;

//对于第一种情况下的算式例如:

15-6=把6定义为e[k][1]

k++;

//k有45中可能每次加1把所有的可能都输入数组中。

下同

}

for(i=1;i<10;i++)

for(intj=10-i;j<10;j++)

//对于第二种形式的算式可能出现的数据记录下来

 

{

e[k][0]=i;

//对于第二情况下的算式例如:

1?

-4=7把4定义为e[k][0]

e[k][1]=j;

//对于第二情况下的算式例如:

1?

-4=7把7义为e[k][1]

 

k++;

}

for(i=10;i<19;i++)

for(intj=(i+1)%10;j<10;j++)

//对于第三种形式的算式可能出现的数据记录下来

 

{e[k][0]=i;

//对于第三种情况下的算式例如:

12-?

=9把12定义为e[k][0]

e[k][1]=j

//对于第三种情况下的算式例如:

12-?

=9把9定义为e[k][1]

k++;

}

2)srand函数

inta=0,b;

srand(time(NULL));

//随机数发生器的初始化函数

for(i=0;i<50;i++)

//根据题目要求第一种退位减法算式出现50次

{

b=rand();

//rand()函数是产生随机数的一个随机函数

if(b>=0&&b<45)

//当随机函数出现的数值在大于等于0小于45之间进行下面的程序

{

cout<

//把随机出来的第一种可能性的算式以正确的形式输出

a++;

//每输出一个算式a加1下同

if(a%5==0)cout<

//输出5个算式进行换行下同

}

elsei--;

//如果随机出现的数字不在大于等于0小于46之间进行进行减1知道在此区间为止

}

for(i=0;i<25;i++)

//根据题目要求第二种退位减法算式出现25次

{

b=rand();

if(b>=45&b<90)

//当随机出现的数字在大于等于45小于90之间进行

{

cout<<"1?

-"<

a++;

if(a%5==0)cout<

}

elsei--;

//如果随机出现的数字不在大于等于45小于90之间进行减1知道在此区间为止

 

}

for(i=0;i<25;i++)

//根据题目要求第三种形式的退位算式出现25次

{

b=rand();

if(b>=90&&b<135)

//当随机出现的数字在大于等于90小于135之间

{

cout<

"<<"="<

a++;

if(a%5==0)cout<

}

elsei--;

//如果随机出现的数字不在大于等于90小于135之间进行减1知道在此区间为止

 

}

}

四、对该设计题目有何更完善的方案

1、对自己完成程序进行自我评价

基本实现任务书中要求的功能,但由于时间紧张等因素,该程序为实现退位减法算式的输出有些繁琐。

在使用随即函数的时候遇到的问题最多,尤其是在判断阶段刚开始的时候没有另b=rand()然后每次程序都不能够运行,问了老师才知道是在省城随机函数时数组越界,对于这种情况也问了同学,最后得出了正确的结果。

2、对课题提出更完善的方案

增添用户输入自己的计算结果,当用户输入完以后由计算机自动输出正确的运算结果,让用户进行对照,或者有计算机输出计算结果是否正确。

也可以根据使用者的需要进行输出输出使用者需要的退位减法的数量。

五、收获及心得体会

1、通过本次课程设计,自己在哪些方面的能力有所提高。

对于随即函数的使用有带提高,在程序输出的过程中由于没有掌握好随机函数的使用方法,从而使得程序经常出现错误,而却自己在随机函数方面了解比较少,所以浪费了大浪的时间。

函数的调用有待提高,函数的调用对于我来说一直是个弱项,所以在这次的编程过程中尽量避免了使用调用函数,但这也突出了知识上的不足,课下可以在这方面进行突破。

2、收获和心得体会。

课程设计加深了自己对c++这门课的理解,巩固了之前学的知识,同时也发现自己还有很多的地方要复习,还存在一些知识点的理解偏差。

提醒我学过的东西要勤学多用,拿到课题要进行深入的研究和系统的考虑,编译过程中要始终保持认真和耐心,对出现的错误进行仔细的修改,以提高程序运行的准确度。

虽然在程序的编写过程中运到了很多的困难,通过XX和问同学把问题解决了。

当程序运行出来的那一刻内心也是无比的激动,编程过程中经历的困难解决困难,当成功到来的那一刻才是最幸福的。

日期:

2015年6月29日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2