C语言设计小学生数学辅助学习系统Word文档下载推荐.docx
- 文档编号:927836
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:18
- 大小:19.74KB
C语言设计小学生数学辅助学习系统Word文档下载推荐.docx
《C语言设计小学生数学辅助学习系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言设计小学生数学辅助学习系统Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。
Step2:
定义菜单函数,并用printf输出。
Step3:
先定义compute()函数,在其中嵌套switch语句,做随机数的四则运算。
Step4:
定义一个Print()函数,当使用者答对或答错时,调用linerel()函数,做出相应的图像并显示。
同时放出相应的乐曲,并做正确或错误题数的累积。
Step5:
在主函数中,调用图形函数,设置一个欢迎界面。
Step6:
调用菜单函数。
Step7:
调用compute()函数,并用switch语句选择同号运算和混合运算。
Step8:
用printf打印结果。
五.函数模块功能
1.迎界面模块
在此模块中,我首先定义了显示器及模式,然后通过setbkcolor()函数定义了背景颜色,用outtextxy()和settextstyle()函数定义了字符串输出的位置以及大小和字体。
2.声音模块
在此模块中,首先定义了音符的长短和频率。
然后通过初始化扬声器,来得到每个音符。
最后,根据自己的喜好,编写两段音乐。
3.菜单模块
在此模块中,首先用Menu()函数定义菜单。
然后输
入所需要的菜单目录,最后在主函数中调用Menu()
4.四则运算模块
在此函数中,通过调用switch语句,分成四种情况,每种运算符分别代表一种情况,而在这四种情况中,又分别调用switch语句,又分成四种情况,从而形成了三个数的四则运算。
最后在主函数中调用这些情况。
5.显示对错信息模块
在此函数中,通过调用相应的图像和音乐,给使用者提供对错信息,并累加错误题数和正确题数。
六、流程图
初始化图形显示模式
设棕色背景
输出“welcome”
输入菜单选项
读入选项m
m=1
m=2
m=3
m=4
m=5
m=6
else
直到
随机产生a;
b;
c
随机opop2
结束
输出错误提示信息
a+b+c<
=2
Op1
Op2
Op3
Op4
读入ANSWER值
OP2=1
OP2=2
OP2=3
OP2=4
result<
=a+b+c
=a-bc
=a*b*c
=a/b/c
产生随机a,b,c
计算机应result
读入answer
N
RESULT
Y
ANSWER
画错号,奏哀乐
画对号,奏欢歌
*w++
*r++
Score<
=((float)100/all)*r
printf输出对题数,错题数,总题数和分数
七.源程序清单
#include<
stdio.h>
#include<
conio.h>
stdlib.h>
graphics.h>
dos.h>
bios.h>
time.h>
#defineN164/*定义音长全音符音长*/
#defineN232/*半音符的音长*/
#defineN416/*4分音符的音长*/
#defineN88/*8分音符的音长*/
#defineN164/*16分音符的音长*/
#defineEND0/*结束标志*/
enumNDTES
{
C10=131,D10=147,E10=165,F10=175,G10=196,
A10=220,B10=247,C0=262,D0=296,E0=330,F0=349,G0=392,
A0=440,B0=494,C1=523,D1=587,E1=659,F1=698,
G1=784,A1=880,B1=988,C2=1047,D2=1175,
E2=1319,F2=1397,G2=1568,A2=1760,B2=1976
};
/*定义音符与频率的对应关系*/
song1[]={C0,N8,C0,N8,G0,N8,G0,N8,A0,N8,A0,N8,G0,N4,
F0,N8,F0,N8,E0,N8,E0,N8,D0,N8,D0,N8,C0,N4,
G0,N8,G0,N8,F0,N4,E0,N8,E0,N8,D0,N4,
G0,N8,G0,N8,F0,N8,F0,N8,E0,N8,E0,N8,D0,N4,
C0,N8,E0,N8,G0,N4,A0,N8,C1,N8,G0,N4,
F0,N8,F0,N8,E0,N8,E0,N8,D0,N8,D0,N8,C0,N4,END,END};
/*形成乐谱*/
song2[]={C0,N8,D0,N8,E0,N8,F0,N8,G0,N8,A0,N8,B0,N8,
C1,N8,D1,N8,E1,N8,F1,N8,G1,N8,A1,N8,B1,N8,END,END};
voidMenu(void)
printf("
1.+\n"
);
2.-\n"
3.*\n"
4./\n"
5.Mixed\n"
6.Exit\n"
Pleaseenteryourchoice:
"
}
SONG1()
intnote=0,fre,dur,control;
clock_tgoal;
while(song1[note]!
=0)
{
fre=song1[note];
/*取出乐谱数组中的频率*/
dur=song1[note+1];
/*取出乐谱数组中的音长*/
if(kbhit())break;
/*如果有按键,则推出音乐播放*/
if(fre)
outportb(0x43,0xb6);
/*初始化扬声器端口*/
fre=(unsigned)(1193180L/fre);
outportb(0x42,(char)(fre>
>
8));
/*往扬声器端口送出声音频率值*/
outportb(0x42,(char)(fre>
control=inportb(0x61);
outportb(0x61,(control)|0x3);
/*开始发音*/
}
goal=(clock_t)dur+clock();
/*设定延迟时间*/
while(goal>
clock());
/*如果时间未到,等待;
时间超出则退出*/
outportb(0x61,control);
/*停止发音*/
goal=(clock_t)0;
note=note+2;
/*移到下一个音符*/
SONG2()
while(song2[note]!
fre=song2[note];
dur=song2[note+1];
intCompute2(inta,intb,intc,intop,intop2)/*定义一个新的运算符*/
intanswer,result;
switch(op)
case1:
switch(op2)/*当OP为加号时,OP2为四种运算符*/
{
case1:
printf("
%d+%d+%d="
a,b,c);
result=a+b+c;
break;
case2:
%d+%d-%d="
result=a+b-c;
case3:
%d+%d*%d="
result=a+b*c;
break;
case4:
printf("
%d+%d/%d="
result=a+b/c;
}
break;
case2:
switch(op2)/*当OP为减号时,OP2为四种运算符*/
case1:
%d-%d+%d="
result=a-b+c;
case2:
printf("
%d-%d-%d="
result=a-b-c;
case3:
%d-%d*%d="
result=a-b*c;
case4:
printf("
%d-%d/%d="
result=a-b/c;
case3:
/*当OP为乘号时,OP2为四种运算符*/
switch(op2)
%d*%d+%d="
result=a*b+c;
%d*%d-%d="
result=a*b-c;
%d*%d*%d="
result=a*b*c;
result=a*b/c;
case4:
/*当OP为除号时,OP2为四种运算符*/
switch(op2)
{
result=a+b+c;
result=a+b-c;
result=a+b*c;
result=a+b/c;
}
scanf("
%d"
&
answer);
if(result==answer)
return1;
/*如果正确,返回值为1*/
else
return0;
/*如果错误,返回值为0*/
voidPrint(intflag,int*r,int*w,int*all)
if(flag)
setcolor(RED);
/*定义颜色*/
linerel(10,20);
/*从当前点到相对增量点画一条线段*/
linerel(20,-20);
++(*r);
/*正确题数加1*/
SONG1();
/*放第一首歌*/
linerel(30,20);
moverel(-30,0);
/*光标从当前位置移动到指定位置处,移动过程中不画点*/
linerel(30,-20);
++(*w);
/*错误题数加1*/
SONG2();
moverel(-30,16);
++(*all);
/*总数加1*/
main()
floatscore;
charm;
inta,b,c,op,d,r=0,w=0,all=0,i;
intresult,answer;
intgdriver=VGA;
/*选择VGA显示器*/
intgmode=VGAHI;
/*选择VGAHI显示模式*/
intheight,width;
intexit_flag=0;
unsignedchar*temp1="
WELCOME\n"
;
initgraph(&
gdriver,&
gmode,"
/*初始化显示适配器*/
cleardevice();
/*清屏*/
setcolor(10);
setbkcolor(BROWN);
/*设置背景颜色*/
settextstyle(3,0,4);
width=textwidth(temp1);
width=textwidth(temp2);
height=textheight(temp1);
height=textheight(temp2);
outtextxy((639-width)/2,150-height/2,temp1);
/*设置字符串输出的位置*/
settextstyle(3,0,2);
/*设置输出字符的字型,输出方向和字符大小*/
outtextxy((800-width)/2,400-height/2,temp2);
getch();
/*获得一个字符*/
Menu();
/*调用菜单函数*/
m=getchar();
/*获得一个字符并赋值给C*/
srand(time(NULL));
/*设置一个随机数*/
moveto(108,112);
/*设置光标起始位置*/
switch(m)
case'
1'
:
for(i=0;
i<
10;
i++)/*设置问题数小于等于10*/
do
a=rand()%100+1;
/*随机产生一个小于100的数*/
b=rand()%100+1;
c=rand()%100+1;
}while(a+b+c>
100);
/*当结果在100之外,再次进入循环*/
d=1;
d=0;
Print(d,&
r,&
w,&
all);
2'
i++)
{do
/*系统随机产生一个小于100的数*/
}while(a-b-c>
100||a-b-c<
0);
/*当结果在100之外,0以下,再次进入循环*/
result=a-b-c;
Print(d,&
3'
{do
a=rand()%30+1;
/*系统随机产生一个小于30的数*/
b=rand()%30+1;
c=rand()%30+1;
}while(a*b*c>
result=a*b*c;
/*如果错误,返回值为0*/
4'
{
a=rand()%100+1;
b=rand()%100+1;
c=rand()%100+1;
%d/%d/%d="
result=a/b/c;
5'
charop2;
/*进入混合运算*/
op=rand()%4+1;
/*产生第一个随机运算符*/
op2=rand()%4+1;
/*产生第二个随机运算符*/
d=Compute2(a,b,c,op,op2);
6'
exit_flag=1;
default:
Inputerror!
\n"
if(exit_flag==0)
score=((float)100/all)*r;
/*计算所的所得分数*/
Therightnumber:
%d\n"
r);
Thewrongnumbre:
w);
Theallnumber:
all);
printf("
Thescoreis:
%f\n"
score);
getch();
八.程序测试
1.已完成出现欢迎界面,可以选择加、减、乘、除或混合运算
2.系统可以随机出题,以算式显示。
但满足不了运算数及结果均在100以内。
3.已完成正确打个对勾,播放一段音乐,错误,打个红X,播放另一个音乐。
4.已完成能统计正确率及得分
参考文献
苏小红等.C语言大学实用教程习题与实验指导.电子工业出版社.2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 设计 小学生 数学 辅助 学习 系统