利用C语言开发一个“小学生算术四则运算测试系统”

合集下载

帮助小学生学习四则运算的CAI系统的开发

帮助小学生学习四则运算的CAI系统的开发

帮助小学生学习四则运算的CAI系统的开发一、实验目的1、实践小型软件的开发过程;2、熟练掌握C语言,提高程序设计能力。

3、养成良好的程序设计习惯,遵从好的程序设计风格。

二、实验内容1、计算机在教育中的作用越来越大。

把计算机用在教育上称为“计算机辅助教学(CAI)”。

编制一个小型软件,帮助小学生学习四则运算。

2、随机产生四则运算表达式,学生然后键入答案,程序接着检查学生输入的答案。

如果答案正确,程序打印出“very good!”,然后给出另一道四则运算题。

如果答案不正确,程序打印出“No. Please try again.”,然后让学生重做这道题,直到答案正确为止。

3、开发CAI环境碰到的问题之一是避免学生的厌倦情绪。

解决该问题的方法是通过改变计算机的对话来吸引学生的注意力。

修改2的程序使新的程序能够为每一个正确的答案和不正确的答案打印出各种注释。

例如:对正确答案的响应为:V ery good!Excellent!Keep up the good work!对不正确答案的响应为:No. Please try again.Wrong. Try once more.No. Keep trying.4、更复杂的计算机辅助教学系统可监视学生在一段期间内的表现。

通常根据学生前一段期间内的表现确定是否开始新问题的学习。

修改3的程序,计算学生回答正确和不正确的次数。

在学生键入了10个答案后,程序计算出学生回答的正确率。

如果正确率低于75%,程序打印出“Please ask your instructor for extra help.”后终止。

三、实验要求1、根据实验内容用C语言编制相应的计算机程序;2、在用C语言编制程序之前,必须进行软件设计,并画出模块结构图和IPO图以及程序流程图。

四、实验步骤1、模块划分(这一步是系统的设计阶段,考虑的问题是该系统划分为多少个模块(函数))(1)模块结构图(2)IPO图(描述每个模块输入/输出数据、处理功能及模块调用的详细情况)2、重要函数的程序流程图(最难实现的、关键的函数,如四则运算表达式随机发生器)3、源程序(程序语言实现阶段,禁止使用goto语句)4、测试数据及结果五、心得体会六、参考文献说明:此文件为实验报告的格式和内容,实验者请将四、五、六中的相关内容补充完整。

linux系统下用C语言实现小学算术运算测试程序

linux系统下用C语言实现小学算术运算测试程序

在linux系统下用C语言实现小学算术运算测试程序XX大学软件学院小学算术运算测试程序1、题目与要求我计划编写的题目是:小学算术运算测试程序。

制作一个可供小学数学运算的程序:10 以内加减法,能根据输入题数出题,判断题是否正确,最后计算分数。

并用 make 工程管理器编译,编写 makefile 文件。

2、内容及主要任务小学算术运算测试程序:要求完成 10 以内的加减运算。

能根据用户输入的想要练习的题目数自行出题。

用户输入答案后可以判断正误,并能给出算对及算错的题目数,最后计算出分数。

同时,对于用户算错的题目会发出报警声,提示用户注意,同时给出正确结果。

做完一次测试后用户可决定是否继续进行下一次测试。

3、题目设计意义通过本课题的毕业设计,熟悉了关于 linux 下 C 语言的系统软件程序设计,可以比较深入的了解和掌握 WINSOCK 控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。

并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

随着计算机网络技术的快速发展,人们的交流方式越来越多,传统的通信方式在速度和可靠性方面已经很难满足人们的需要,即时通信系统已成为人们的新宠。

同时,即时通信系统对现代企业也有着重大意义,它为诸企业开拓了网络应用的新领域。

自从它诞生以来,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。

本着学以致用的原则,本人开发了这套多点聊天系统,以满足网络用户的通讯需求。

该系统具有操作简单、界面友好、功能专一等特点。

本报告就系统的开发过程做了详细的介绍,并对系统的原理、总体设计等方面做了深入细致的讨论。

4、主要内容本程序共分为五个模块:出题模块、答题模块、检查计分模块、评分模块和评价模块;下面分别对这五个模块的算法做一下介绍。

(1)出题模块:一个答题系统自然而然首先就是要有题目且能够根据条件出题;在本模块中,首先设了一个含有 15 个指针的指针数组,指针数组里的每个指针都指向了相应题号的 1 选择题,这样就实现了对题目的储存;然后用 scanf 函数来实现从键盘上输入题号,用 if 语句控制输题的范围;题号不在 1--15 的范围内就提示选题出错;在输入题号的过程中输入相同题号是在所难免的;但是在答题系统中输入相同题号显然没有意义,所以另外设了一个静态一维数组来储存已输过的题号;且数组的第一个元素初始化为 0,然后每输入一个题号就赋给这个数组,同时用 for 语句来使当前的题号一一与储存在一维数组中已输过的题号进行比较,如题号有相同,就提示重答,重答的功能是通过对出题模块函数的递归调用来实现的,如题号没有相同,就通过输入的题号借助指针数组里的指针找到与题号对应的选择题, puts 函数来实现对选择题的输出;用最后用 return 语句将其他模块返回来每道题的小分数返回到主函数中(在主函数中调用出题模块函数)。

C语言课程设计小学生四则运算

C语言课程设计小学生四则运算

#include"stdio.h"#include"stdlib.h"void main(){int a,b,c,d,e,f,g,t;printf("****************************欢迎使用!************************\n");printf("\n");printf("1.加法运算\n");printf("2.减法运算\n");printf("3.乘法运算\n");printf("4.除法运算\n");printf("*****************************请选择运算类型:");scanf("%d",&a);while(a<1||a>4){printf("输入错误,请重新输入");scanf("%d",&a);}if(a==1){printf("5,一位数加一位数\n");printf("6,一位数加两位数\n");printf("7,两位数加两位数\n");printf("*********************************请输入题型:");scanf("%d",&a);while(a<5||a>7){printf("输入错误,请重新输入");scanf("%d",&a);}if(a==5){loop:b=rand()%10;c=rand()%10;d=b+c;printf("%d+%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d+%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto loop;if(f==1)printf("欢迎再次使用!");}if(a==6){loo: b=rand()%10;c=rand()%100;if (c<10) c=c+10;d=b+c;printf("%d+%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d+%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto loo;if(f==1)printf("欢迎再次使用!");}if(a==7){loog:b=rand()%100;c=rand()%100;if(c<10) c=c+10;if(b<10) b=b+10;d=b+c;printf("%d+%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d+%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto loog;if(f==1)printf("欢迎再次使用!");}}if(a==2){printf("5,一位数减一位数\n");printf("6,两位数减一位数\n");printf("7,两位数减两位数\n");printf("请输入题型:");scanf("%d",&a);while(a<5||a>7){printf("输入错误,请重新输入");scanf("%d",&a);}if(a==5){car: b=rand()%10;c=rand()%10;d=b-c;printf("%d-%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d-%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto car;if(f==1)printf("欢迎再次使用!");}if(a==6){truck:b=rand()%100;if(b<10) b=b+10;c=rand()%10;d=b-c;printf("%d-%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d-%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto truck;if(f==1)printf("欢迎再次使用!");}if(a==7){boat:b=rand()%100;if(b<10) b=b+10;c=rand()%100;if(c<10) c=c+10;d=b-c;printf("%d-%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d-%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto boat;if(f==1)printf("欢迎再次使用!");}}if(a==3){printf("5,一位数乘一位数\n");printf("6,一位数乘两位数\n");printf("7,两位数乘两位数\n");printf("请输入题型:");scanf("%d",&a);while(a<5||a>7){printf("输入错误,请重新输入");scanf("%d",&a);}if(a==5){life:b=rand()%10;c=rand()%10;d=b*c;printf("%d*%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d*%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto life;if(f==1)printf("欢迎再次使用!");}if(a==6){shame:b=rand()%100;if(b<10) b=b+10;c=rand()%10;d=b*c;printf("%d*%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d*%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto shame;if(f==1)printf("欢迎再次使用!");}if(a==7){yeah:b=rand()%100;c=rand()%100;if(b<10) b=b+10;if(c<10) c=c+10;d=b*c;printf("%d*%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d*%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto yeah;if(f==1)printf("欢迎再次使用!");}}if(a==4){printf("5,一位数除一位数\n");printf("6,两位数除一位数\n");printf("7,两位数除两位数\n");printf("请输入题型:");scanf("%d",&a);while(a<5||a>7){printf("输入错误,请重新输入");scanf("%d",&a);}if(a==5){hit: b=rand()%10;c=rand()%10;{if (b>c){g=b%c;if (g!=0){b=b-g;d=b/c;printf("%d/%d=?\n",b,c);}else d=b/c;printf("%d/%d=?\n",b,c);}if (c>b){g=c%b;if (g!=0){c=c-g;t=c;c=b;b=t;d=b/c;printf("%d/%d=?\n",b,c);}elset=c;c=b;b=t;d=b/c;printf("%d/%d=?\n",b,c);}printf("请输入答案:");scanf("%d",&e);}while(e!=d){printf("回答错误,请重做");printf("%d/%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto hit;if(f==1)printf("欢迎再次使用!");}if(a==6){haha:b=rand()%100;c=rand()%10;if(b<10)b=b+10;g=b%c;if (g!=0)b=b-g;d=b/c;printf("%d/%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d/%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto haha;if(f==1)printf("欢迎再次使用!");}if(a==7){over:b=rand()%100;c=rand()%100;if(b<10) b=b+10;if(c<10) c=c+10;if (b>c){g=b%c;if (g!=0){b=b-g;d=b/c;printf("%d/%d=?\n",b,c);}else{d=b/c;printf("%d/%d=?\n",b,c);}}if (c>b){g=c%b;if (g!=0){c=c-g;t=c;c=b;b=t;d=b/c;printf("%d/%d=?\n",b,c);}else{t=c;c=b;b=t;d=b/c;printf("%d/%d=?\n",b,c);}}scanf("%d",&e);while(e!=d){printf("回答错误,请重做");printf("%d/%d=?\n",b,c);printf("请输入答案:");scanf("%d",&e);}printf("回答正确!是否做下一题?\n");printf("输入0表示是,输入1表示否\n");scanf("%d",&f);if(f==0)goto over;if(f==1)printf("欢迎再次使用!");}}}。

四则运算训练器软件C语言开发(软件代码+软件说明)

四则运算训练器软件C语言开发(软件代码+软件说明)

软件名称:四则运算训练器软件功能介绍:该软件主要用于训练并测试使用者的四则运算能力。

进入软件主界面,界面上会显示3 个选项,分别是:1.10以内的四则运算训练。

2.20以内的四则运算训练。

0.退出。

使用者根据自己的需要选择不同的选项:按“ 1”进入10 以内的四则运算训练;按“ 2”进入20 以内的四则运算训练;按“ 0”退出程序主界面。

10以内的四则运算和20以内的四则运算均为10题一组;在这10 个题中,加减乘除均有,操作数均为整数,且加减乘除出现的顺序不定,除法给出的两个操作数能除尽。

对于给出的题目,当操作者计算正确时,操作界面上无特殊显示;当操作者计算错误时,操作界面上会显示“ FAULT! ” 提示操作者该题计算错误并同时进入下一题。

操作者每做完10 道题,界面上会显示此轮计算的正确率,并询问操作者是否继续。

此时操作者可根据自己的需要,按“ 1”进入10 以内的四则运算训练;按“ 2”进入20 以内的四则运算训练;按“ 0”退出程序主界面。

程序代码:#include <stdio.h>#include <stdlib.h>#include <time.h>void calculation1();void calculation2();void main(){int number;char m;redo:printf("\t\t\t 欢迎进入四则运算训练营!\n\n\n\n");printf("<1>.10 以内的四则运算系列.\n");printf("<2>.20 以内的四则运算训练.\n");printf("<0>. 退出.\n\n");printf("请选择功能号(1 / 2 / 0 ):");scanf("%d",&number);srand((unsigned)time(0));loop: if(number==1) calculation1();else if(number==2) calculation2();else exit(0);printf("\n\n");printf("继续吗?( Y/N ):");getchar();scanf("%c",&m);if(m=='Y') goto loop;if(m=='N') goto redo;}void calculation1(){int i,j,n=0;int a1,a2,result;float rate;char c='%';printf(" 您选择的是10 以内的四则运算。

四则运算训练器软件C语言开发(软件代码+软件说明书)

四则运算训练器软件C语言开发(软件代码+软件说明书)

软件名称:四则运算训练器软件功能介绍:该软件主要用于训练并测试使用者的四则运算能力。

进入软件主界面,界面上会显示3个选项,分别是:1.10以的四则运算训练。

2.20以的四则运算训练。

0.退出。

使用者根据自己的需要选择不同的选项:按“1”进入10以的四则运算训练;按“2”进入20以的四则运算训练;按“0”退出程序主界面。

10以的四则运算和20以的四则运算均为10题一组;在这10个题中,加减乘除均有,操作数均为整数,且加减乘除出现的顺序不定,除法给出的两个操作数能除尽。

对于给出的题目,当操作者计算正确时,操作界面上无特殊显示;当操作者计算错误时,操作界面上会显示“FAULT!”,提示操作者该题计算错误并同时进入下一题。

操作者每做完10道题,界面上会显示此轮计算的正确率,并询问操作者是否继续。

此时操作者可根据自己的需要,按“1”进入10以的四则运算训练;按“2”进入20以的四则运算训练;按“0”退出程序主界面。

程序代码:#include <stdio.h>#include <stdlib.h>#include <time.h>void calculation1();void calculation2();void main(){int number;char m;redo:printf("\t\t\t欢迎进入四则运算训练营!\n\n\n\n");printf("<1>.10以的四则运算系列.\n");printf("<2>.20以的四则运算训练.\n");printf("<0>.退出.\n\n");printf("请选择功能号( 1 / 2 / 0 ):");scanf("%d",&number);srand((unsigned)time(0));loop: if(number==1) calculation1();else if(number==2) calculation2();else exit(0);printf("\n\n");printf("继续吗?(Y/N):");getchar();scanf("%c",&m);if(m=='Y') goto loop;if(m=='N') goto redo;}void calculation1(){int i,j,n=0;int a1,a2,result;float rate;char c='%';printf("您选择的是10以的四则运算。

c++课程设计-小学生四则运算练习系统

c++课程设计-小学生四则运算练习系统

radioButton1 radioButton2 radioButton3 续表: 控件
Font Text -
属性

说明
radioButton4 实现计时功能所用到的控件如表3。
表 3 计时器所用控件
控件 label6
属性 Font Text
值 小三 计时器 宋体,10.5pt 确定,停止 1000
值 宋体,10.5pt;登录 宋体,10.5pt 空 宋体,10.5pt 用户名,密码
说明 字体,字号,文本 字体,字号 用户输入的文本 字体,字号 文本
运算窗口所涉及到的控件如表 2。
表 2 运算窗口所用控件
控件 button1 button2 textBox1 textBox2 textBox3 groupBox1
属性 Font Text Font Text Font Text
值 宋体,10.5pt 确定,关闭 宋体,10.5pt 空 宋体,10.5pt 计算 宋体,10.5pt +、-、*、/、= Button1 Button2 小学生四则运算练 习 根据图片设置 StrethImage 宋体,10.5pt +、-、*、/ -
this->label1->Text=RBtn->Text; (2)将多个事件连接到单个事件处理程序: 在应用程序设计过程中, 可能需要将单个事件处理程序用于多个事件或者说需 要让不同控件的同一事件相应同一个事件处理程序。在窗体上有一组RadioButton 控件,可创建单个Click事件处理程序,并将每个控件的Click事件都绑定到该事件 处理程序上。具体过程如下: 1)配合Ctrl键,用鼠标选中所有要将事件处理程序连接到的RadioButton控件。 2)在【属性】窗口中,单击【事件按钮】,切换到事件操作界面。 3)单击要处理的事件名称Click。 4)在事件名称旁边的值区域中,输入事件处理程序名称Operator_Clicked。然 后双击该事件, 切换到 【代码】 编辑窗口。 将设计的代码添加到该事件处理程序中。 5)若要将该事件绑定到现有事件处理程序,则在事件名称旁边的值区域中单 击下拉按钮, 显示现有事件处理程序列表, 这些事件处理程序与要处理的要处理的 事件的方法签名匹配。 从该列表中选择适当的事件处理程序, 将该事件绑定到现有 的事件处理程序。 (3)实现四则运算的主要代码: 首先定义 3 个 Double 型的变量 a、b 和 c,a 和 b 用于显示随机生成的两个数 据,c 表示用户输入的数据。 Double a,b,c,t; a=System::Convert::ToDouble(textBox1->Text); b=System::Convert::ToDouble(textBox2->Text); c=System::Convert::ToDouble(textBox3->Text); 我们以加法为例,对 if-else 循环结构进行说明。 if(label1->Text=="+") { if(a+b==c) {if(MessageBox::Show(" 回 答 正 确 , 是 否 继 续 ?","Information",MessageBoxButtons::YesNo)==System::Windows::Forms::DialogR esult::Yes) { Random^ r=gcnew Random(System::DateTime::lisecond); textBox1->Text=r->Next(100).ToString(); textBox2->Text=r->Next(100).ToString(); textBox3->Text=""; } else

C语言小学生四则运算考试系统课程设计

C语言小学生四则运算考试系统课程设计

C语言小学生四则运算考试系统课程设计代码部分:#include"stdio.h"#include "windows.h"#include<time.h>#include<stdlib.h>#include<conio.h>#define N 3struct stu{int num;char name[12];int score;}em[N],max;void input();void menu_admin();void search();void search_num();void search_name();void cal_score();void sort();void del();int *p;void mune_admin(){int k=0;printf("请根据提示选择:\n");printf("1.查询系统\n");printf("2.删除系统\n");printf("3.排序\n");scanf("%d",&k);switch(k){case 1:search();break;case 2:del();break;case 3:sort();break;}}void input(){int i;printf("请输入你的信息:\n");for(i=0;i<N;i++){printf("请输入学生的学号:\n");scanf("%d",&em[i].num);printf("请输入学生姓名:\n");scanf("%s",&em[i].name);printf("请完成下列题目得出你的成绩:\n");cal_score();em[i].score=*p;getchar();}mune_admin();}void cal_score(){int a[10],b[10],d[10],c[10],num=0,result,score=0;double va1;char fa[5]={'+','-','*','/'};p = &score;srand((unsigned)time(NULL)); // 出10道题10while(1) { d[num]=abs(rand())%4;// 保证出题算法的随机性while(1) // 保证出题成功{c[num]=-1; //保存计算结果a[num]=abs(rand())%100;b[num]=abs(rand())%100;if(d[num]==0) c[num]=a[num]+b[num];else if(d[num]==1) c[num]=a[num]-b[num];else if(d[num]==2) c[num]=a[num]*b[num];else if(d[num]==3){ if(b[num]>0){va1=1.0*a[num]/b[num]; }else { va1=-1; } }if(d[num]<=2){if(c[num]>=0 && c[num]<=100) // 保证计算结果在0-100之间27break;}else{if(a[num]==va1*b[num] && va1>=0){c[num]=va1; break;}}}num++;if(num==10) break;}num=0; //回答41while(1){printf("%d %c %d= ",a[num],fa[d[num]],b[num]);scanf("%d",&result);if(result==c[num]){printf("回答正确!\n");score+=10; }else printf("错误,正确答案: %d\n",c[num]);num++;if(num==10) break;}printf("\n成绩:%d\n",score);}void sort(){int i,j;printf("排序前:\n");for(i=0;i<N;i++){printf("学号\t姓名\t成绩\n");printf("%d\t%s\t%d\n",em[i].num,em[i].name,em[i].score);}for(i=0;i<N;i++){for(j=0;j<N-1;j++){if(em[j].score<em[j+1].score){max=em[j];em[j]=em[j+1];em[j+1]=max;}}}printf("排序后:\n");for(i=0;i<N;i++){printf("学号\t姓名\t成绩\n");printf("%d\t%s\t%d\n",em[i].num,em[i].name,em[i].score);}mune_admin();}void search(){int t=0;printf("请根据提示选择:\n");printf("1.学号查询\n");printf("2.姓名查询\n");printf("请输入你的选择1/2\n");scanf("%d",&t);switch(t){case 1:search_num();break;case 2:search_name();break;}mune_admin();}void search_num(){int num,i;printf("请输入你要查找的学号:");scanf("%d",&num);for(i=0;i<N;i++){if(num==em[i].num){printf("找到此人\n");printf("学号\t姓名\t成绩\n");printf("%d\t%s\t%d\n",em[i].num,em[i].name,em[i].score);break;}if(i==N-1){printf("查无此人\n");}}}void search_name(){char name[12];int i;printf("请输入你要查找的姓名:");scanf("%s",&name);for(i=0;i<N;i++){if(strcmp(em[i].name,name)==0){printf("找到此人\n");printf("学号\t姓名\t成绩\n");printf("%d\t%s\t%d\n",em[i].num,em[i].name,em[i].score);break;}if(i==N-1) {printf("查无此人\n");}}}void del(){int i,k,j,num;char a = '\0';printf("请输入你要删除的学号:");scanf("%d",&num);for(i=0;i<N;i++){if(num==em[i].num){printf("找到此人\n");printf("学号\t姓名\t成绩\n");printf("%d\t%s\t%d\n",em[i].num,em[i].name,em[i].score);printf("确认删除输入1 ,取消删除输入2\n");scanf("%s",&k);if(k==1){/* em[i].num=0;strcpy(em[i].name,a);em[i].score=0;*/for(j=i;j<N-1;j++){em[j].num=em[j+1].num;strcpy(em[j].name,em[j+1].name);em[j].score=em[j+1].score;}}else if(!k==1){break;}}}printf("删除后:\n");printf("学号\t姓名\t成绩\n");printf("%d\t%s\t%d\n",em[i].num,em[i].name,em[i].score);search();}void main(){input();}。

C语言课程设计举例--小学生算术自测

C语言课程设计举例--小学生算术自测
break;}
printf("%d-%d=",a,b);
scanf("%d",&c);
if (a-b==c) printf("right!\n");
else printf("error!\n");
break;
case3: goto end;
(2)作三位或三位以上的整数除法运算练习
(3)返回主菜单
请选择(1,2,3):
2.接收子菜单选择项
如果选择项的值为1,随机出一道两位整数的除法练习题,根据小学生的回答,输出表示“正确”或“错误”的提示信息,然后再显示子菜单。
如果选择项的值为2,随机出一道三位或三位以上的整数除法练习题,根据小学生的回答,输出表示“计算正确”或“计算错误”的提示信息,然后再显示子菜单。
(略)
(2)软件配置
操作系统:windows2000;
C语言编译系统:WIN-TC。
3.系统结构
(1)系统结构图
小学生算术练习管理系统的系统结构图如下所示,总共由7个模块组成,其中一个是总控模块,另外七个是分别实现不同功能的子模块:
(2)模块说明书
A.小学生算术练习管理系统总控模块的模块说明书
模块名称:小学生算术练习管理系统总控模块
输入:主菜单选择项
输出:
处理:
1.按以下格式显示主菜单和提示小学生选择:
小学生算术练习管理系统
(1)加法运算练习
(2)减法运算练习
(3)乘法运算练习
(4)除法运算练习
(5)四则混合运算练习
(6)模拟考试练习
(7)结束练习,退出本系统
请选择(1,2,3,4,5,6,7):

(完整版)C++小学生四则运算测验(附代码和程序结果)

(完整版)C++小学生四则运算测验(附代码和程序结果)
if (num!=t)
cout<<"答案不正确!正确答案是:"<<t<<endl;
switch (cnt)
{
case 1:score+=10;break;
case 2:score+=7;break;
case 3:score+=5;break;
}
cout<<"-------------------------当前分数为"<<score<<endl; //输出当前的得分
1.程序功能介绍
电脑随机出10道加减乘除的题(允许随机给出的数在100以内),每题总分10分,程序结束时显示学生得分及学生的等级。并且每道题学生有三次机会输入答案,当学生一次就答对是直接进入下一道题,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案最后,程序的最后给出学生的分数及其答案。
case 1:cout<<"*********第"<<i<<"题*********"<<endl;cout<<a<<"-"<<b<<"="; t=a-b; break;
case 2:cout<<"*********第"<<i<<"题*********"<<endl;cout<<a<<"*"<<b<<"="; t=a*b; break;
case 3:cout<<"*********第"<<i<<"题*********"<<endl;cout<<a<<"/"<<b<<"=";

基于c++的小学四则运算练习系统

基于c++的小学四则运算练习系统

基于c++的⼩学四则运算练习系统本次结对编程我们实现了⼀个基于c++的⼩学四则运算练习系统,细则如下:⼀、实验⽬的:1、本系统是基于Dev-C++为⼩学⽼师和学⽣提供的⼀个有关于四则运算练习的系统。

2、为⽼师进⾏100以内四则运算的出题,减缓⽼师的⼯作压⼒。

3、增强同学的四则运算能⼒,是我们这个系统的最主要功能,本系统可让学⽣和⽼师进⾏实时性练习。

⼆、实验环境:通过Dev-C++进⾏编写。

三、实验内容:1、便于⼩学⽼师给学⽣出100以内的两个运算符的四则运算习题,为⽼师节省出题时间。

2、⽼师可以通过该系统将习题打印出来,对学⽣进⾏笔试,同时也可打印有答案版本,利于判断答案是否正确。

3、学⽣可进⾏交互式做题,可在线上进⾏习题的练习,解决了练习地点受限的情况,可以让学⽣随时随地进⾏习题的练习。

四、实验功能展⽰:主界⾯的实现:根据需求,进⾏功能选择,在每次功能实现后,都会让⽤户再次进⾏功能选择:倘若所输⼊数结果⼤于100,会对⽤户进⾏提醒:当选择打印题⽬功能时,会将⽤户录⼊的所有题⽬进⾏打印:也可打印有答案版本:汇总功能实现截图如下:五、实验过程中遇到的问题和解决:问题:这次实验原本只定义了⼀个数组来存放数据,然后出现了输出结果乱码的错误。

解决⽅案:找到问题所在之后,修改了代码改为两个数组。

问题:运⾏时还出现过return value 3221225477的错误,程序强制中断,但是代码并没有报错也没有warning。

解决⽅案:过两个⼈的仔细排查和⽹上搜寻资料找到了原因,原来是由于重复定义了数组导致⼀个变量没有分配内存。

最终经过修改之后,成功运⾏。

六、实验代码:代码细则如下:1 #include <iostream>2using namespace std;3int main(){4char sym[300][2];5double num[300][4];6int finish=1;7int i=0;8 cout<<"--------------四则运算模拟器----------------"<<endl;9while(finish){10 cout<<"请选择功能:"<<endl;11 cout<<"1.输⼊运算式 2.打印题⽬ 3.打印答案 4.结束程序"<<endl;12int x;13 cin>>x;14switch(x){15case1:16 {17 cout<<"请输⼊运算式:(例:4+5*7)"<<endl;18 cin>>num[i][0]>>sym[i][0]>>num[i][1]>>sym[i][1]>>num[i][2];19switch(sym[i][1]){20case'+':21switch(sym[i][0])22 {23case'+':num[i][3]=num[i][0]+num[i][1]+num[i][2];break;24case'-':num[i][3]=num[i][0]-num[i][1]+num[i][2];break;25case'*':num[i][3]=num[i][0]*num[i][1]+num[i][2];break;26case'/':num[i][3]=num[i][0]/num[i][1]+num[i][2];break;27 }break;28case'-':29switch(sym[i][0])30 {31case'+':num[i][3]=num[i][0]+num[i][1]-num[i][2];break;32case'-':num[i][3]=num[i][0]-num[i][1]-num[i][2];break;33case'*':num[i][3]=num[i][0]*num[i][1]-num[i][2];break;34case'/':num[i][3]=num[i][0]/num[i][1]-num[i][2];break;35 }break;36case'*':37switch(sym[i][0])38 {39case'+':num[i][3]=num[i][0]+num[i][1]*num[i][2];break;40case'-':num[i][3]=num[i][0]-num[i][1]*num[i][2];break;41case'*':num[i][3]=num[i][0]*num[i][1]*num[i][2];break;42case'/':num[i][3]=num[i][0]/num[i][1]*num[i][2];break;43 }break;44case'/':45switch(sym[i][0])46 {47case'+':num[i][3]=num[i][0]+num[i][1]/num[i][2];break;48case'-':num[i][3]=num[i][0]-num[i][1]/num[i][2];break;49case'*':num[i][3]=num[i][0]*num[i][1]/num[i][2];break;50case'/':num[i][3]=num[i][0]/num[i][1]/num[i][2];break;51 }break;52 }53 cout<<"="<<num[i][3]<<endl;54if(num[i][3]>=100){55 cout<<"结果超过100,是否重新输⼊"<<endl;56 cout<<"1是 2否"<<endl;57int k;58 cin>>k;59switch(k){60case1:break;61case2:{62 i++;63break;64 }65 }66 }67else {6869 i++;70 }71break;72 }73case2:{74 cout<<"打印题⽬中:"<<endl;75for(int t=0;t<i;t++){76 cout<<num[t][0]<<sym[t][0]<<num[t][1]<<sym[t][1]<<num[t][2];77 cout<<endl;78 }79break;80 }81case3:{82 cout<<"打印答案中:"<<endl;83for(int t=0;t<i;t++){84 cout<<num[t][0]<<sym[t][0]<<num[t][1]<<sym[t][1]<<num[t][2]<<"="<<num[t][3];85 cout<<endl;86 }87break;88 }89case4:{90 finish=0;91break;92 }93return0;94 }95 }96 }七、实验⼩结与体会:结对编程是⼀种程序员之间思维产⽣碰撞且相较于独⾃⼀⼈编程来说效率更⾼的⼀种编程⽅式,它可以解决独⾃⼀⼈编程所不能解决的很多问题,⽐如当编程思路遇到问题的时候,通过与同伴的交流和沟通,便可以有新的解决⽅法,可以⼤⼤节省时间。

通过C语言编写小学生数学测试软件C语言课程设计

通过C语言编写小学生数学测试软件C语言课程设计

C语言课程设计设计期限2013年 6 月 17 开始至 2013 年 6 月 21 结束系别信息管理与信息系统专业 36 班级 112030601学生姓名邓茂华学号11203060106指导教师纪钢金艳重庆理工大学[主要内容有]:问题描述、基本设计要求、系统分析、流程图、程序代码、测试数据、小结。

[问题描述]:通过C语言编写小学生数学测试软件:1) 可选择题型(+,-,*,/);2) 可选择每次答题的个数;3) 随机生成两个数进行运算;4) 每次在输入答案后应判断对错,若答案错误,应给出正确答案;5) 给出统计结果。

[基本设计要求]:利用C语言中函数的嵌套调用、全局变量、循环控制等来实现数据之间的运算,最终实现小学生数学测试软件的运行。

[系统分析]:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>int type;//定义全局变量;int j;void main(){int yunsuan();//在主函数中嵌套一个子函数,实现子后面主函数调用子函数的运行结果;int answer;int temp;int score=0,right=0;int k,i;printf("\n\n 制作人:邓茂华学号:11203060106\n\n\n");//制作系统的封面;printf("***********************************************\n");printf("**------------小学生数学测试系统-------------**\n");printf("***********************************************\n");for(;;)//设置死循环,实现测试结束后返回;{printf("\n请你选择测试题目的种类(只需输入数字代号):\n");//选择测试题目的种类;printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);while(type!=1&&type!=2&&type!=3&&type!=4)//输入错误时实现循环,直到输入正确时跳出循环;{printf("你输入错误,请重新输入\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);}printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);while(j!=1&&j!=2&&j!=3){printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);}printf("\n请输入你要答题的个数:\n");scanf("%d",&k);for(i=0;i<k;i++){answer=yunsuan();//调用子函数的结果;printf("\n请输入你的答案:\n");scanf("\n%d",&temp);if(answer==temp)//将测试者输入的结果与计算机算出的结果比较,并判断正误;printf("\n答对了,很好!\n"),right++;else printf("\n**********答错了,正确答案是%d,继续努力!\n\n",answer);}printf("\n\n--------------------------------------------------------------\n\n");score=(100*right)/k;//实现对测试者的评分;printf("**********你答对了%d道题!\n",right);if(score<60){printf("**********只考了%d分,成绩不是很理想哦!继续努力!!\n",score);continue;}if(score>=60&&score<80){printf("**********你考了%d分,成绩一般!\n",score);continue;}else if(score>=80&&score<100){printf("**********你考了%d分,不错哟!再接再励!\n",score);continue;}else{printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!\n",score);printf("\n");continue;}}}int yunsuan()//在子函数中实现加减乘除的运算并返回结果;{int a,b,c,m;m=(int)pow(10,j);if(type==1)//加法运算;{srand(time(0));a=rand()%m;b=rand()%m;printf("%d+%d=",a,b);return(a+b);}else if(type==2)//减法运算;{srand(time(0));a=rand()%m;c=m-a;c=rand()%c;printf("%d-%d",a+c,a);return(c);}else if(type==3)//乘法运算;{srand(time(0));a=rand()%m;b=rand()%100;printf("%d*%d=?",a,b);return(a*b);}else //除法运算;{srand(time(0));a=rand()%(m-1)+1;c=rand()%(m-1)+1;printf("%d/%d",a*c,a);return(c);}}[流程图]:[程序代码]:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>int type;int j;void main(){int yunsuan();int answer;int temp;int score=0,right=0;int k,i;printf("\n\n 制作人:邓茂华学号:11203060106\n\n\n");printf("***********************************************\n");printf("**------------小学生数学测试系统-------------**\n");printf("***********************************************\n");for(;;){printf("\n请你选择测试题目的种类(只需输入数字代号):\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);while(type!=1&&type!=2&&type!=3&&type!=4){printf("你输入错误,请重新输入\n");printf("\n1.加法2.减法3.乘法4.除法\n");scanf("%d",&type);}printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);while(j!=1&&j!=2&&j!=3){printf("\n请输入你想答题的难易程度:\n\n");printf("\n1.简单2.一般3.困难\n\n");scanf("%d",&j);}printf("\n请输入你要答题的个数:\n");scanf("%d",&k);for(i=0;i<k;i++){answer=yunsuan();printf("\n请输入你的答案:\n");scanf("\n%d",&temp);if(answer==temp)printf("\n答对了,很好!\n"),right++;else printf("\n**********答错了,正确答案是%d,继续努力!\n\n",answer);}printf("\n\n--------------------------------------------------------------\n\n");score=(100*right)/k;printf("**********你答对了%d道题!\n",right);if(score<60){printf("**********只考了%d分,成绩不是很理想哦!继续努力!!\n",score);continue;}if(score>=60&&score<80){printf("**********你考了%d分,成绩一般!\n",score);continue;}else if(score>=80&&score<100){printf("**********你考了%d分,不错哟!再接再励!\n",score);continue;}else{printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!\n",score);printf("\n");continue;}}}int yunsuan(){int a,b,c,m;m=(int)pow(10,j);if(type==1){srand(time(0));a=rand()%m;b=rand()%m;printf("%d+%d=",a,b);return(a+b);}else if(type==2){srand(time(0));a=rand()%m;c=m-a;c=rand()%c;printf("%d-%d",a+c,a);return(c);}else if(type==3){srand(time(0));a=rand()%m;b=rand()%100;printf("%d*%d=?",a,b);return(a*b);}else{srand(time(0));a=rand()%(m-1)+1;c=rand()%(m-1)+1;printf("%d/%d",a*c,a);return(c);}}[测试数据]:界面:加法:减法:乘法:除法:评分并返回:[小结]:原以为自己把书上的东西都弄明白了就行了,在做这次课程设计的时候就发现有些不是那么回事了,但也并不是完全没用,做这个还是需要很多的理论基础。

C语言课程设计-小学生算术四则运算测试系统

C语言课程设计-小学生算术四则运算测试系统

C语言课程设计-小学生算术四则运算测试系统#ifndef H_STUDENT_HH#define H_STUDENT_HH#include "stdio.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define numsubs 5 /*学科数目*/typedef struct message_student /*结构体定义*/{char number[6];char name[20];char sex[4];float subject[numsubs];float score;float average;int index;}student;extern int numstus; /*学生数目*/extern student *pointer; /*指向结构体数组*/extern int lens;int menu_select(); /*函数声明*/int openfile(student stu[]);int findrecord(student stud[]);int writetotext(student stud[]);void welcome();void display1();void showtable();void sort(student stu[]);void deleterecord(student stu[],int i); void addrecord(student stud[]);void display(student stud[],int n1,int n2); void amendrecord(student stud[]);void count(student stud[]);void sortnum(student stud[]);void sortnum2(student stud[]);void sortname(student stud[]);void sortname2(student stud[]);void sortcount(student stud[]);void sortcount2(student stud[]);void statistic(student stud[]);void display1();#endif//#include "head.h"int menu_select(){char c;printf("\\");printf(" | 1. 增加学生记录 5.统计信息 |\"); printf(" | 2. 查询学生记录 6.打开文件 |\"); printf(" | 3. 修改学生记录 7.保存文件 |\"); printf(" | 4. 学生纪录排序 8.显示记录 |\"); printf(" | 0. 退出系统 |\");printf("\\");printf("请选择(0-8):");c=getchar();getchar();return (c-'0');}//#include "head.h"int findrecord(student stud[]) /*查找信息*/{char str[2];int i,num;if(numstus==0){printf("没有可被查找的记录\");return -1;}else{printf("以何种方式查找?\1.学号\2.姓名\3.名次\"); gets(str); if(str[0]=='1') /*按学号查找*/{printf("请输入学号:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].number)==0) {display(stud,i,i);break;}else continue;}else if(str[0]=='2') /*按姓名查找*/ {printf("请输入姓名:");gets(str);for(i=0;i<=numstus;i++)if(strcmp(str,stud[i].name)==0) {display(stud,i,i);break;}else continue;}else if(str[0]=='3') /*按名次查找*/ {printf("请输入名次:");scanf("%d",&num);getchar();for(i=0;i<=numstus;i++)if(num==stud[i].index){display(stud,i,i);break;}else continue;}if(i>numstus){printf("没有查找所要的信息。

c语言课程设计——小学数学出题系统

c语言课程设计——小学数学出题系统

通信工程C语言强化训练实验报告学号:姓名:提交日期:成绩:评语:教师签字:小学数学出题系统1、强化训练目的a)C语言基本知识的巩固和综合运用。

基本数据类型、基本控制结构、数组、指针、函数、结构体和共用体。

b)C语言高级编程。

链表基本操作、文件的基本操作、图形和声音制作。

c)程序的结构化设计。

d)编辑、设置、编译、调试、执行。

e)C语言结合实际问题的综合设计。

2、设计题目功能为小学生教学服务,能够根据小学生的需要随机抽出两位数的数学运算题,可根据需要进行加减乘除运算。

由学生在电脑上答题,并对其判断正误和记分。

3、设计题目要求两位数四则云算的出题功能答案判断正误功能分数累积功能:4、程序流程图5、主要代码5;0;[1000]={0}[1000]={0};00;("*****************小学数学出题系统*******************\n"); (" 指导老师: \n");(" 完成学生: \n");(" 完成时间:年月日 \n");(" \n\n");("请输入题目数(1-1000)");(k<1>1000){ ("\n超出允许范围\n");("请再次输入题目数\n");("请选择出题方式:0.加法 1.减法 2.乘法 3.除法 4.随机\n");("\n********************开始答题************************\n"); (0<)()%100;()%100;(4)()%4;(00)("\n第题:"1);(""[i]);[i];(11)(a>b)("\n第题:"1); (""[i]);[i];("\n第题:"1); (""[i]);[i];(22)("\n第题:*"1); (""[i]);[i]*b;(33)(00)*b;("\n第题:"1);(""[i]);[i];()%100;(00);()%100;*b;("\n第题:"1);(""[i]);[i];("结果和正确答案:\n");(0<)([i][i])(":正确 \n"1[i]);(":错误 \n"1[i]);100*;("\n总得分(百分制):\n");(<60) ("很遗憾!你的分数不与格,继续努力\n");("恭喜!你的成绩合格\n");("*****************************************************\n");6、运行程序示例第一个图反应执行加法的结果第二个图反应执行减法的结果第三个图反应执行乘法的结果第四个图反应执行除法的结果第五个图反应执行随机的结果7、强化训练心得体会本程序在刚开始调试时有许多错误,出现过不能运行、不能随机出现四则运算、不会输出正确结果、选择乘法却出现减法等等问题。

小学生四则运算项目C++实现

小学生四则运算项目C++实现

⼩学⽣四则运算项⽬C++实现项⽬相关要求1. (完成)使⽤ -n 参数控制⽣成题⽬的个数。

2. (完成)使⽤ -r 参数控制题⽬中数值(⾃然数、真分数和真分数分母)的范围。

该参数可以设置为1或其他⾃然数。

该参数必须给定,否则程序报错并给出帮助信息。

3. (完成)⽣成的题⽬中计算过程不能产⽣负数,也就是说算术表达式中如果存在形如e1 − e2的⼦表达式,那么e1 ≥ e2。

4. (完成)⽣成的题⽬中如果存在形如e1 ÷ e2的⼦表达式,那么其结果应是真分数。

5. (完成)每道题⽬中出现的运算符个数不超过3个。

6. (完成)程序⼀次运⾏⽣成的题⽬不能重复,即任何两道题⽬不能通过有限次交换+和×左右的算术表达式变换为同⼀道题⽬。

例如,23 + 45 = 和45 + 23 = 是重复的题⽬,6 × 8 = 和8 × 6 = 也是重复的题⽬。

3+(2+1)和1+2+3这两个题⽬是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+ (2+1)。

但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,⽽3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同⼀个题⽬。

⽣成的题⽬存⼊执⾏程序的当前⽬录下的Exercises.txt⽂件。

7. (完成)在⽣成题⽬的同时,计算出所有题⽬的答案,并存⼊执⾏程序的当前⽬录下的Answers.txt⽂件。

8. (完成)程序应能⽀持⼀万道题⽬的⽣成。

9. (完成)程序⽀持对给定的题⽬⽂件和答案⽂件,判定答案中的对错并进⾏数量统计,统计结果输出到⽂件Grade.txt。

代码规范本次项⽬的代码遵循了⾕歌代码规范(C++),但由于⾕歌代码规范篇幅太多,所以我们⽬前只遵循了其中的部分规范,具体如下:1. 禁⽌使⽤宏2. 分号以前不加空格3. ⾏宽原则上不超过804. ⼀⾏只定义⼀个变量5. 左⼤括号前保留⼀个空格6. if, else前后都要⼀个空格7. for, while后要有⼀个空格8. return 后⾯的数值不加 ( )9. 每个⽂件应该含有版权信息及作者10. 左圆括号之后和右圆括号之前⽆空格11. 函数参数过多时,每⾏的参数变量对齐12. ⼀⽬运算符与变量之间不加空格符隔开13. 禁⽌使⽤ using 指⽰(using-directive)14. 禁⽌使⽤C++的流,⽽是⽤printf之类的替代15. 要么函数名与参数同⾏,要么所有参数并排分⾏16. 换⾏代码缩进2个空格,并且使⽤两个空格符取代制表符17. ⼆⽬以上的运算符与变量,常量之间⽤空格隔开(各类括号除外)18. 不论控制语句,循环语句后⾯的循环体有多少⾏,都必须使⽤花括号19. 普通函数,类型(含类与结构体,枚举类型),常量等使⽤⼤⼩写混合,不含下划线20. 除函数定义的左⼤括号可置于⾏⾸以外,包括函数/类/结构体/枚举声明,各种语句的左⼤括号必须置于⾏末,所有右⼤括号独⽴成⾏设计思路具体设计&关键代码ImproperFraction类构建⼀个ImproperFraction的类,然后重载这个类的四种运算 +-x÷ 以及以及六种逻辑关系'<' '==' '<=' '!=' '>' '>='判断,在后续的代码编写之中都是基于这个类进⾏运算class ImproperFraction {public :ImproperFraction(){}ImproperFraction (int Mole, int Deno, int Coef = 0) {int g = std::__gcd (Mole, Deno);g = std::max(g, 1);mole = (Mole + Coef * Deno) / g;deno = Deno / g;}ImproperFraction operator + (const ImproperFraction & rhs ) const {int DENO = deno * rhs.deno;int MOLE = mole * rhs.deno + rhs.mole * deno;ImproperFraction res = ImproperFraction (MOLE, DENO);return res;}ImproperFraction operator - (const ImproperFraction & rhs ) const {int DENO = deno * rhs.deno;int MOLE = mole * rhs.deno - rhs.mole * deno;ImproperFraction res = ImproperFraction (MOLE, DENO);return res;}ImproperFraction operator * (const ImproperFraction & rhs ) const {int DENO = deno * rhs.deno;int MOLE = mole * rhs.mole;ImproperFraction res = ImproperFraction (MOLE, DENO);return res;}ImproperFraction operator / (const ImproperFraction & rhs ) const {int DENO = deno * rhs.mole;int MOLE = mole * rhs.deno;ImproperFraction res = ImproperFraction (MOLE, DENO);return res;}bool operator < (const ImproperFraction & rhs ) const {return mole * rhs.deno < rhs.mole * deno;}bool operator == (const ImproperFraction & rhs ) const {return mole * rhs.deno == rhs.mole * deno;}bool operator != (const ImproperFraction & rhs ) const {return !(mole * rhs.deno == rhs.mole * deno);}bool operator <= (const ImproperFraction & rhs ) const {return (*this) < rhs || (*this) == rhs;}bool operator > (const ImproperFraction & rhs ) const {return !((*this) <= rhs);}bool operator >= (const ImproperFraction & rhs ) const {return (*this) > rhs || (*this) == rhs;}private :int mole = 0; // 分⼦int deno = 1; // 分母};题集的⽣成表达式的⽣成在这⾥选择的是rand() 随机⽣成运算符个数,类型以及每个被运算的数值。

C语言设计方案小学生数学辅助学习系统

C语言设计方案小学生数学辅助学习系统

目录一、任务书*************************************1二、总体设计***********************************2三、模块划分***********************************2四、算法说明***********************************2五、函数模块功能*******************************2六、流程图**************************************3七、源程序清单**********************************4八、程序测试***********************************17九、结论***************************************17附:参考文献资料一.任务书题目:小学生数学辅助学习系统功能:实现小学生100以内四则运算的学习和测试基本要求:1.出现欢迎界面,选择加、减、乘、除或混合运算。

2.系统随机出题,运算数及结果均在100以内,以算式显示。

3.正确打个对勾,播放一段音乐,如果错误,打个红X,播放另一个音乐。

4.能统计正确率及得分。

相关知识:图形绘制、按键操作等二.总体设计本次设计需要使用音乐函数、图形函数以及四则运算函数。

首先使用图形函数,创建出一个欢迎界面。

其次,在100以内,乘、除法应能整除,显示算式,再编写菜单练习,测试和计分及四则运算函数。

最后是打印及退出。

三.模块划分1.欢迎界面模块。

2.算式模块。

3.菜单模块。

4.四则运算模块。

5. 计分模块。

6.音乐模块。

四.算法说明step1: 先定义音乐函数,包括音符的音长、频率及初始化扬声器,再编写出两段音乐。

Step2: 定义菜单函数,并用printf输出。

Step3: 先定义compute()函数,在其中嵌套switch语句,做随机数的四则运算。

C语言四则运算

C语言四则运算

机电学部课程设计题目:小学生算术四那么运算测试程序姓名:黄超学号:202112110118班级:计算机科学与技术课程:程序设计方法学任课老师:顾保磊2021年6月28日课程设计任务书及成绩评定目录背景 (1)摘要 (1)功能要求................................................... . (2)设计流程 (3)程序执行 (4)程序 (5)程序 (6)程序 (7)程序 (8)实验结果 (9)实验结果 (10)实验心得…………………………………………....….. .11背景伴随着人类社会的进步,人们的计算工具也在不断的变化,从远古时期的结绳计数,到算筹,算盘,以及近代的机械计算机、计算尺,直至今天我们广泛运用的电子计算机。

计算工具的每一次进步,都导致科学技术发生深入的革命。

人类最初是用手指来作为记数和计算工具的。

在古代,人们还广泛地使用过筹码和结绳来作为记数和计算的工具,其中筹码可能采用石子、木棍、滑片等,每一个可以单独使用也可用工具在其刻上道使用。

我们中华民族的祖先,在公元前5世纪以前开场使用算筹。

利用算筹记数,用笔写下来就是筹算数字,当时这在世界上是非常先进的。

而作为我们的祖先对世界文明的重大奉献——四大创造之一的珠算盘,那么是人类经过设计加工,制造出来的第一种计算工具。

十六世纪以来,随着机械设计和制造程度的进步,同时也为了满足日益复杂的计算要求,许多科学家设计制造了以齿轮为主要构件的机械式计算机。

自从上个世纪四十年代电子计算机的创造,人类计算工具的开展进入了一个新纪元。

计算机以人类技术史上前所未有的高速度开展着,其主要构件由电子管、晶体管、集成电路,一直开展到运用超大规模集成电路。

计算机的计算速度也从每秒几千次算术计算,进步到每秒上万亿次算术计算。

摘要小学生四那么运算,是利用VC++软件编写的一程序,电脑可随机的出10道四那么运算题,每题非常。

答题者输入需要运算的数,其中要求算式面向小学1~2年纪,数的大小不超过50且运算的结果必须在0~50之间,答题者有三次答题时机,在这三次时机之内答出,系统会自动根据答案的正确与否,得出分数,按照相应的分数给出级别,80-90显示“GOOD〞,70-80显示“OK〞,60-70显示“PASS〞,60以下“TRY AGAIN〞功能要求题目:小学生算术四那么运算测试程序面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了修改正确,我询问了指导老师,后来才知道执行语句 scanf("%d",&temp) 时候,小学生会输入一个数字,然后在按回车键,在执行语句 scanf("%c",&flag) 时这个是回车键被赋给了变量 flag,而不是输入的字符给了变量 flag,此时语 句 flag!=y&&flag!=n 不成立,就会造成循环语句 while(flag!=y&&flag!=n) 一定会执行一次,也就造成了上述结果。后来我将定义的字符型变量 flag 改成 了整形,并且当输入 1 时继续做题,当输入 0 时退出系统,当输入的其他的数字 时候,就会被提示输入错误,且要求重新输入。这样修改后就达到了上述目的。
1、问题描述
1.1 在最开始设计此程序过程中,我定义的变量 flag 为字符型,当把原程序段 中对应于下面的程序段的程序段改为:
…… scanf("%d",&temp); while(temp!=answer) {
printf("\n 答案错误,重做\n"); printf("\n 请输入正确的答案:\n"); scanf("%d",&temp); } printf("\n 继续请按 y,退出测试请按 n \n"); scanf("%c",&flag); while(flag!=y&&flag!=n) { printf("\n 继续请按 1,退出测试请按 0 \n"); scanf("%d",&flag); } ……
我将会发现当我做完一题且做对了的时候,无论我输入的是 y 还是 n 或者是其他 的字符,printf("\n 继续请按 1,退出测试请按 0 \n")这个提示在屏幕上出现两 次,说明了在第一个 scanf("%c",&flag)语句中无论什么,flag!=y&&flag!=n 都是成立的,这说明了在第一个 scanf("%c",&flag)中输入的字符并没有赋给 flag。
int question_get();//函数声明
int answer; int temp; int flag;
开始
while(1)
提示输入题目 的种类
提示题目类型 和代号
学生输入所选 题的代号 type
main()函数和函数体
type!=1type!=2type !=3type!=4
0
调用 question_get() 函数,将返回值赋 给 answer
设计任务 (在规定的时间内完成下列任务)
任务描述:利用 C 语言开发一个“小学生算术四则运算测试系统” 该系统是让计算机充当一位给小学生布置作业的算术老师,为学生出题、阅卷 该系统应具备以下功能: 1. 为小学生出题(分别进行+、-、*、÷等不同运算) 2. 学生做题后,进行评阅; 学生每做一题后,评阅时给出“答题正确,很好”或“答题错误,重 做”等字样; 3. 加、减、乘、除运算功能可以自由选择实现; 4. 运算数值可以控制在两位(或三位)数的四则运算范围内。
具体要完成的任务是: 1 完成整个规定任务的设计及调试,得出正确结果,并经教师检查及答辩; 2. 写出规范的课程设计说明书; 3. 课程设计结束后交设计说明书等文档和设计内容。设计说明书的主要内容是详细 写出在设计过程中所用到的主要技术或方法; 4. 从 6 月 28 日起,学生每天至少要到设计教室半天以上; 5.课程设计报告按国际通用格式书写,具体格式要求请在网络上查阅
1.2 最开始我没有调用函数 srand((unsigned)time(NULL))结果发现连续做两道 相同算法的题目时,两次的题目完全一样,也就说明了此程序并不能随机的出题, 后来使用了函数 srand((unsigned)time(NULL))。srand((unsigned)time(NULL)) 这个函数调用中使用 time(NULL)函数返回值(当前时间)作实参,初始化随机 数发生器。rand()函数调用返回一个随机数,理论上说,rand()返回一个随机数, 但是每次调用时,随机数发生器返回的随机数序列都是一样的,所以,用当前时 间(time(NULL)返回值)作种子对随机数发生器进行初始化,由于每次当前时间不
printf("\n 请你选择测试题目的种类,只需输入数字代号:\n"); printf("\n1.加法 2.减法 3.乘法 4.除法\n"); scanf("%d",&type);
时间安排
6 月 28 日 上午 1-103 教室动员全体学生,给学生下任务书; 下午查阅相关资料;
6 月 29 日~7 月 1 日 完成选题的设计及报告的书写; 7 月 2 日 上午提交课程设计报告并答辩。
指 导 教 师 签 名: 教研室主任(或责任教师)签名:
2010 年 6 月 27 日 2010 年 6 月 27 日
指导教师 杨沙、王绪梅
2010 年 6 月 28 日至 2010 年 7 月 2 日
课程设计任务书
设计题目:利用 C 语言开发一个“小学生算术四则运算测试系统”
设计目的
1. 加深对《C 语言程序设计》课程所学知识的理解; 2. 掌握结构化程序设计的基本方法; 3. 学会编制结构清晰、风格良好、数据结构选择恰当的 C 语言程序; 4. 掌握多模块的 C 语言程序的调试方法。
提示重新输 入自己的答 案
输入答案 temp
flag!=1&&flag !=0
0
非0
继续测试请 按 1,退出测 试请按 0
flag==0 非0
退出
scanf("%d", &flag);
0
int a,b,c;
type==1 非0
a=rand()%999;
b=999-a;
printf("\n% d+%d=? ",a,b);
return(a+b ); 函数调用处
0
question_get()函数
type==2
b=rand()% 999; c=999-b;
c=rand()% c; printf("\n %d-%d=? ",b+c,b); return(c);
函数调用处
type==3
非0 a=rand()%500;
0
b=rand() %500;
srand((unsigned)time(NULL));/*srand((unsigned)time(NULL));这个函 数调用中使用 time(NULL)函数返回值(当前时间)作实参,初始化随机数发生 器。*/
/* rand()函数调用返回一个随机数,理论上说,rand()返回一个随机数, 但是每次调用时,随机数发生器返回的随机数序列都是一样的,所以,
a==0
b==0
0
b=1000/ a;
a=rand 0
()%50 c=1000/b;
b=rand() %b500;
printf("\n%d* %d=?",a,b);
return(a*b)
函数调用处
c=rand()%500
c!=0 0
break;
函数调用处
非 0
printf("
\n%d/%
retur
d=?",b*
n(c);
c,b);
4.心得体会
5.1 在我们设计程序时候,将一个大的问题分成几个模块,运用不同的函数将这 些模块分别设计出来,然后运用函数调用,我们就可以将这些功能不同的模块联 系在一起。 5.2 在设计程序过程中,我原先定义的变量 flag 为字符型,当输入 y 时继续做 下题,输入 n 时退出系统,我发现无论按哪个字母,在看结果时候发现有两条继 续测试请按 1,退出测试请按 0 :语句输出,后来经过老师的讲解我明白了,在 连续的 2 个 scanf 函数中,以字符形式输入第一个 scanf 函数时候,回车键会以 字符形式存储在第二个 scanf 函数中。 5.3 要使计算机自动为学生出题,使用了函数 srand((unsigned)time(NULL)); 这个函数调用中使用 time(NULL)函数返回值(当前时间)作实参,初始化随机 数发生器。rand()函数调用返回一个随机数,理论上说,rand()返回一个随机数, 但是每次调用时,随机数发生器返回的随机数序列都是一样的,所以,用当前时 间(time(NULL)返回值)作种子对随机数发生器进行初始化,由于每次当前时间不 一样,所以随机数发生器产生的随机数序列不一样,即 rand()函数调用的返回 值不一样,就达到了得到真随机数而不是伪随机数的目的。 5.4 深知自己技术水平还不高,编这样的程序遇到了很多困难,但我相信经过今 后的不断学习,我的变成能力会有很大的提高。
武汉理工大学华夏学院
课 程设计
课程名称 C 语言程序设计

目 利用 C 语言开发一个“小学生算术四则运算测试系统”
专 业 ____电子商务_____
班 级 ______1091_______

号 _____20510809105_____
姓 名 ______张宇_______
成 绩 _________________
3.实验环境
Microsoft visual c++
4.程序调试
源程序: #include<stdio.h> #include<stdlib.h> #include<time.h>//用到了 time()函数,所以要包含 time.h 头文件
相关文档
最新文档