c课程设计题目小学生测验

更新时间:2023-04-09 23:06:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

c课程设计题目小学生

测验

Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

《C++语言程序课程设计》

班级:11电信1班姓名:谢远忠学号:110703***

指导老师:胡珏

第一类题目应用类:

题目2:小学生测验

面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。

功能要求:

(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;

(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;

(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;

(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;

(5)总成绩90以上显示“SMART(优秀!)”,80-90显示“GOOD(良好!)”,70-80显示“OK(中等!)”,60-70显示“PASS(及格!)”,60以下“TRY AGAIN (不及格!重测!)”。

I.设计思路:

由系统函数产生两个随机数a、b并计算两数之和为t ,显示两个随机数a、b的加减法运算,学生通过键盘输入答案num与t进行匹配,第1次匹配正确给10分;第2次匹配正确给7分;第3次匹配正确给5分,每道题至多3次输入机会,3次机会用尽后仍未匹配成功由系统输出正确答案t ,累计得分score并进入下一道题。以此类推,直至10道题答完止输出总得分score,判断等级SMART、GOOD、OK、PASS还是TRY AGAIN。

II.流程图:

III.C++(含class类,面向对象)程序代码:

#include

#include

#include //标准库头文件

class Display_biaoti //Display_biaoti[标题]类,标题显示

{

public:

Display_biaoti()

{

cout<<"===============欢迎使用小学生整数50以内加减法测验评测系统

==============="<

cout<<"*************************************************************************"<

cout<<"* ********************************************************************* *"<

cout<<"* * 共10道题,每道题3次作答机会 * *"<

cout<<"* *第1次作答正确——10分;第2次作答正确——7分;第3次作答正确——5分;*

*"<

cout<<"* * 三次作答不正确——此题得分:0分,进入下一题 * *"<

cout<<"* ********************************************************************* *"<

cout<<"*************************************************************************"<

}

~Display_biaoti(){}

};

/******************************************************************************************/

class Suijishu //Suijishu[随机数]类,产生两个运算数

{

public:

int a,b,n,t;

Suijishu()

{

a=rand()%50; //rand()是一个随机函数,a=rand()%50是在0-50内取随机值赋给a

b=rand()%50; //b=rand()%50是在0-50内取随机值赋给b

n=rand()%6; //n的范围大些出现加法和减法的概率就越接近(加法:减法=5:5),故n取6 if((n==0||n==1||n==2)&&(a+b)>50) //如果产生随机数a、b之和大于50时

{if(a>25&&b>25) //a、b同时大于25时

{ a=a-25;

b=b-25;} //a、b同时减小25

if(a>25) //仅是a大于25时

a=a-25; //a减小25

if(b>25) //仅是b大于25时

b=b-25;} //b减小25

}

~Suijishu(){}

};

/*******************************************************************************************/

class Display_timu:public Suijishu //Display_timu[题目]类,对单一道题目显示给学生

{

public:

int i,t;

Display_timu()

{

}

void xianshi()

{

switch(n)

{

case 0: //n为0、1、2时进行加法运算

case 1:

case 2:cout<<"##########"<

##########"<t=a+b; i++;

break;

case 3: //n为3、4、5时进行减法运算

case 4:

case 5:cout<<"##########第"<

if(a>b){cout<

else {cout<break;

}

}

~Display_timu(){}

};

/********************************************************************************/

class Ceshi:public Display_timu

{

public:

int num,cnt,score; //测试者输入答案次数cnt

Ceshi()

{

cnt=1;

score=0;

}

int xunhuan()

{

do

{

cin>>num; //测试者输入答案num

if (num==t) //答案正确时

{

cout<<"正确!o(≧v≦)o~~好棒~"<

}

else

{

if (cnt<3) //答案输入少于3次

cout<<"答案不正确?在试试吧!"<

cout<<"你还有"<<3-cnt<<"次答题机会"<

++cnt;

}

}while(cnt<=3&&num!=t); //答案输入少于3次且输入答案不正确时继续输入(3次答题机会)

if (num!=t) //3次为输入正确答案,由系统给出正确答案

cout<<"答案不正确!正确答案是:"<

switch (cnt) //累计答题得分情况

{

case 1:score+=10;break; //第1次答对得10分

case 2:score+=7;break; //第2次答对得7分

case 3:score+=5;break; //第3次答对得5分

}

return score;

}

~Ceshi(){}

};

/********************************************************************************/

class Display_zongping:public Ceshi //Display_zongping[总评]类,对答完10道题给出总评

{

public:

int score;

Display_zongping()

{

}

void pandduan()

{

if (score>90) //如果总分大于90

{

cout<<"优秀!"<

}

else if (score>80) //如果总分大于80

{

cout<<"良好!"<

}

else if (score>70) //如果总分大于70

{

cout<<"中等!"<

}

else if (score>=60) //如果总分大于60

{

cout<<"及格!"<

}

else cout<<"不及格!重测!"<

cout<<"\n";

}

~Display_zongping(){}

};

/********************************************************************************/

void main()

{

int all_score=0;

Display_biaoti aa; //定义Display_biaoti[标题]类对象aa,标题显示

srand(time(NULL)); //srand函数是以现在系统时间作为时间种子产生随机数

int j; //定义整形j计数10道题

for(j=1;j<11;j++)

{

Suijishu bb; //定义随机数Suijishu类对象bb

Display_timu cc; //定义Display_timu类对象cc

cc.i=j;

cc.xianshi(); //调用对象cc的方法xianshi()

Ceshi dd; // 定义Ceshi类对象dd

dd.t=cc.t; //对象cc的数据t赋值给对象dd的数据t

all_score+=dd.xunhuan(); //调用对象dd的方法xunhuan()

cout<<"-------------------------当前分数为"<

Display_zongping ee; //定义Display_zongping类对象ee

ee.score=all_score;

cout<<"最后得分为"<

ee.pandduan(); //调用对象ee的方法pandduan()

}

IV.运行结果:

①(良好!)

②(优秀!)

③(不及格!重测!)

④(及格!)

⑤(中等!)

IV.C++(不含class类)程序代码:

#include

#include

#include //标准库头文件

void main()

{

int t, num, a,n, i, b; //定义变量t(系统正确答案),num(测试者输入答案),a(参与运算的数),

//n(决定加法还是减法运算),i(题号),b(参与运算的另一个数)

int score=0; //定义变量score存放得分

cout<<"==============欢迎使用小学生整数50以内加减法测验评测系统=============="<

srand(time(NULL)); //srand函数是以现在系统时间作为时间种子产生随机数

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

{

loop: a=rand()%50; //rand()是一个随机函数,a=rand()%50是在0-50内取随机值赋给a b=rand()%50; //b=rand()%50是在0-50内取随机值赋给b

n=rand()%6; //n的范围大些出现加法和减法的概率就越接近(加法:减法=5:5),故n取6 if((n==0||n==1||n==2)&&(a+b)>50) //如果产生随机数a、b之和大于50时

{if(a>25&&b>25) //a、b同时大于25时

{ a=a-25;

b=b-25;} //a、b同时减小25

if(a>25) //仅是a大于25时

a=a-25; //a减小25

if(b>25) //仅是b大于25时

b=b-25;} //b减小25

switch(n)

{

case 0: //n为0、1、2时进行加法运算

case 1:

case 2:cout<<"*********第"<t=a+b;

break;

case 3: //n为3、4、5时进行减法运算

case 4:

case 5:cout<<"*********第"<

if(a>b){cout<

else {cout<break;

goto loop;

}

int cnt=1; //测试者输入答案次数cnt

do

{

cin>>num; //测试者输入答案num

if (num==t) //答案正确时

{

cout<<"正确!o(≧v≦)o~~好棒~"<

}

else

{

if (cnt<3) //答案输入少于3次

cout<<"答案不正确?在试试吧!"<

cout<<"你还有"<<3-cnt<<"次答题机会"<

++cnt;

}

}while(cnt<=3&&num!=t); //答案输入少于3次且输入答案不正确时继续输入(3次答题机会) if (num!=t) //3次为输入正确答案,由系统给出正确答案

cout<<"答案不正确!正确答案是:"<

switch (cnt) //累计答题得分情况

{

case 1:score+=10;break; //第1次答对得10分

case 2:score+=7;break; //第2次答对得7分

case 3:score+=5;break; //第3次答对得5分

}

cout<<"-------------------------当前分数为"<

}

cout<<"最后得分为"<

if (score>90) //如果总分大于90

{

cout<<"SMART!"<

}

else if (score>80) //如果总分大于80

{

cout<<"GOOD!"<

}

else if (score>70) //如果总分大于70

{

cout<<"OK!"<

}

else if (score>=60) //如果总分大于60

{

cout<<"PASS!"<

}

else cout<<"TRY AGAIN!"<

cout<<"\n";

}

VI.运行结果:

①(SMART!)

②(GOOD!)

③(OK!)

④(PASS!)

⑤(TRY AGAIN!)

本文来源:https://www.bwwdw.com/article/w9al.html

Top