通过C语言编写小学生数学测试软件C语言课程设计.docx
《通过C语言编写小学生数学测试软件C语言课程设计.docx》由会员分享,可在线阅读,更多相关《通过C语言编写小学生数学测试软件C语言课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
通过C语言编写小学生数学测试软件C语言课程设计
C语言课程设计
设计期限20XX年6月17开始
至2013年6月21结束
系别信息管理与信息系统
专业36班级112030601
学生姓名邓茂华学号11203060106
指导教师纪钢金艳
重庆理工大学
[主要内容有]:
问题描述、基本设计要求、系统分析、流程图、程序代码、测试数据、小结。
[问题描述]:
通过C语言编写小学生数学测试软件:
1)可选择题型(+,-,*,/);
2)可选择每次答题的个数;
3)随机生成两个数进行运算;
4)每次在输入答案后应判断对错,若答案错误,应给出正确答案;
5)给出统计结果。
[基本设计要求]:
利用C语言中函数的嵌套调用、全局变量、循环控制等来实现数据之间的运算,最终实现小学生数学测试软件的运行。
[系统分析]:
#include
#include
#include
#include
inttype;//定义全局变量;
intj;
voidmain()
{
intyunsuan();//在主函数中嵌套一个子函数,实现子后面主函数调用子函数的运行结果;
intanswer;
inttemp;
intscore=0,right=0;
intk,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{
answer=yunsuan();//调用子函数的结果;
printf("\n请输入你的答案:
\n");
scanf("\n%d",&temp);
if(answer==temp)//将测试者输入的结果与计算机算出的结果比较,并判断正误;
printf("\n答对了,很好!
\n"),right++;
elseprintf("\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;
}
elseif(score>=80&&score<100)
{
printf("**********你考了%d分,不错哟!
再接再励!
\n",score);
continue;
}
else
{
printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!
\n",score);
printf("\n");
continue;
}
}
}
intyunsuan()//在子函数中实现加减乘除的运算并返回结果;
{
inta,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);
}
elseif(type==2)//减法运算;
{
srand(time(0));
a=rand()%m;
c=m-a;
c=rand()%c;
printf("%d-%d",a+c,a);
return(c);
}
elseif(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
#include
#include
#include
inttype;
intj;
voidmain()
{
intyunsuan();
intanswer;
inttemp;
intscore=0,right=0;
intk,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{
answer=yunsuan();
printf("\n请输入你的答案:
\n");
scanf("\n%d",&temp);
if(answer==temp)
printf("\n答对了,很好!
\n"),right++;
elseprintf("\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;
}
elseif(score>=80&&score<100)
{
printf("**********你考了%d分,不错哟!
再接再励!
\n",score);
continue;
}
else
{
printf("**********哇,你真是太棒啦,居然考了%d分,说不定是未来的数学家哦!
\n",score);
printf("\n");
continue;
}
}
}
intyunsuan()
{
inta,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);
}
elseif(type==2)
{
srand(time(0));
a=rand()%m;
c=m-a;
c=rand()%c;
printf("%d-%d",a+c,a);
return(c);
}
elseif(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);
}
}
[测试数据]:
界面:
加法:
减法:
乘法:
除法:
评分并返回:
[小结]:
原以为自己把书上的东西都弄明白了就行了,在做这次课程设计的时候就发现有些不是那么回事了,但也并不是完全没用,做这个还是需要很多的理论基础。
开始在编出程序后感觉没有什么错误了,但在运行的时候总能检测出几个错误,始终不知道怎么解决,后来询问老师才发现一些很小的细节错误,但就是这个小的细节错误让这个程序不能运行,知道了以后在编写程序时应该注重各个小的细节,在生活中也应该如此。
这次课程设计业让我对计算机编程产生了浓厚的兴趣,虽然接触编程不久,但我觉得以后自己能做得更好。