C语言课程设计报告算术练习.docx
- 文档编号:8596050
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:28
- 大小:243.85KB
C语言课程设计报告算术练习.docx
《C语言课程设计报告算术练习.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告算术练习.docx(28页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告算术练习
●课程设计目的---------------------------------------------------------------------------------------4
●课程设计要求---------------------------------------------------------------------------------------4
●课程设计内容---------------------------------------------------------------------------------------4
一、系统结构--------------------------------------------------------------5
1.1算术练习程序要求---------------------------------------------------------------------------------5
1.2程序系统结构---------------------------------------------------------5
二、程序设计说明----------------------------------------------------------6
2.1程序描述--------------------------------------------------------------6
2.2功能-----------------------------------------------------------------6
2.3性能------------------------------------------------------------------6
2.4输入项---------------------------------------------------------------7
2.5输出项---------------------------------------------------------------7
三、各模式简述------------------------------------------------------------7
3.1主函数----------------------------------------------------------------7
3.2练习模式--------------------------------------------------------------8
3.3测试模式--------------------------------------------------------------9
3.4设置模式--------------------------------------------------------------11
A难度设置--------------------------------------------------------------12
B类型设置--------------------------------------------------------------14
C题数设置--------------------------------------------------------------15
3.5查分模式--------------------------------------------------------------15
3.6写入文件----------------------------------------------------------------------------------------------16
3.7读取文件-----------------------------------------------------------------------------------------------17
3.8时间模块-----------------------------------------------------------------------------------------------17
●课程设计心得与体会------------------------------------------------------------------------------17
●附录1参考文献---------------------------------------------------------------------------------17
●附录2程序清单--------------------------------------------------------------------------------17
课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握;
2.掌握C语言编程和程序调试的基本技能;
3.利用C语言进行基本的软件设计;
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力。
课程设计要求
1.分析课程设计题目的要求;
2.写出详细设计说明;
3.编写程序代码,调试程序使其能正确运行;
4.设计完成的软件要便于操作和使用,有整齐、美观的使用界面;
5.设计完成后提交课程设计报告和源代码文件的电子文档。
课程设计内容
1.在指导书提供的课程设计题目中选则了算术练习;
2.用户提供的主操作界面应该方便用户的操作。
3.最后提交的课程设计成果包括:
1)算术练习打印稿;
2)算术练习电子稿;
3)源程序算术练习文件;
4)可执行程序算术练习文件。
一、系统结构
1.1算术练习程序要求
运行软件,进入选择菜单,显示选项,有五个选项。
如图
算术练习
1.练习
2.测验
3.设置
4.查看
0.退出
练习模式:
每答完一题,会显示是否正确,错误的话会显示正确答案,并且询问是否要继续。
若选择N则结束,并显示总答题数,正确答题数,及正确率。
测验模式:
题数为设置中的设定值(可以调节),答题全部结束时可以看到正确结果和本次测验的成绩,并将其写入文件。
设置:
1.可以选择难度,有低难度,一般难度,高难度,自定义难度(可以调节);2.可以选择是加减乘除或随机的那种运算;3.可以设定随机数值的大小(可以调节)(设置完成之后自动保存到文件)。
查看:
可以查看历史最高的测试成绩及上次的成绩,还有各种设定(从文件中读取)。
1.2程序系统结构
二、程序设计说明
2.1程序描述
本程序的主要功能为人们进行简单的加减乘除运算提供练习和测试的小程序。
并且本程序会自动记录下测验的成绩,方便使用者查询自己的成绩,以便提高成绩。
2.2功能
该程序的功能:
练习模式中会随机出一道加减乘除运算的数学题,然后要求使用者输入一个-999-1000之内的整型数(注意:
本程序的除法结果为整数,输入时请省略小数)。
如果正确,会输出正确的提示,反之,会出现错误的提示。
之后会提问是否继续。
测验模式中与联系模式大致相同,只是题数为设定的道题,测试完只后会告诉你答对几题,正确率为多少。
2.3性能
本程序的输入和输出为整形,范围为-999-1000。
小巧灵活,响应速度较快。
2.4输入项
本程序的输入项有以下三种,一是输入提问的答案,类型为整型数字字符。
二是输入选择项,类型也为整型数字字符,范围为。
三为询问是否继续时的按键,类型为任意的字符。
输入媒体为键盘和文件。
输入数据的来源为使用者的输入和以前保存在文件的信息,安全保密条件为任意。
2.5输出项
输出项为各类提示和说明,一般用字符串的方式输出,个别用其他方式输出。
不一一列举。
三、各模式简述
3.1主函数
3.11程序描述
主函数写的是主菜单,四个主要的子函数分别写的是练习、测验、设置和查看成绩的功能。
并且一些常用的重要的功能也写成了子函数,如读取、写入文件等。
3.12功能
能够输出主菜单,供用户选择。
3.13输入项
输入所要选择的菜单项目。
3.14输出项
输出主菜单列表。
3.15算法
switch等选择结构语句。
3.16流程逻辑
图一主菜单
3.2练习模式
3.21程序描述
算术练习
3.22功能
每答完一题,会显示是否正确,错误的话会显示正确答案,并且询问是否要继续。
若选择N则结束,并显示总答题数,正确答题数,及正确率。
3.23输入项
输入显示的题目的答案。
3.24输出项
判断输入的答案是否正确,若正确则输出总的题数和做对的题数,并询问是否继续答题;
若输入的答案不正确,则先输出正确答案再输出总的题数和做对的题数,并询问是否继续答题。
3.25算法
选择结构语句,循环结构语句,rand()随机数。
3.26流程逻辑
图二:
练习模式
3.3测试模式
3.31程序描述
题数为设置中的设定值(可以调节),答题全部结束时可以看到正确结果和本次测验的成绩,并将其写入文件。
3.32功能
能够输出题目,并提供准确的答案提供准确率。
3.33输入项
输入显示的题目的答案。
3.34输出项
判断答案是否正确,并在答完所有题目后输出作对题目的道数,并计算准确率。
3.35算法
选择结构语句,循环结构语句。
3.36流程逻辑
图三测试模式
3.4设置模式
3.41程序描述
1.可以选择难度,有低难度,一般难度,高难度,自定义难度(可以调节);
2.可以选择是加减乘除或随机的那种运算;
3.可以设定随机数值的大小(可以调节)(设置完成之后自动保存到文件)。
3.42功能
位数:
设置参加运算数的位数(1~3位)。
运算符:
加法,减法,乘法,除法,随即运算。
3.43输入项
结果。
3.44输出项
判断是否正确,输出答对题数和准确率。
3.45算法
3.46流程逻辑
图四:
设置模式
A难度设置
a.功能
设置题目的难易程度,分低难度(数字范围为1-9)、中等难度(数字范围为1-99)、高难度(数字范围为1-999)和自定义难度。
b.输入项
输入想选择的对应编号数字。
c.输出项
返回主菜单。
d.算法
选择结构。
e.流程逻辑
B类型设置
a.功能
设置加减乘除或随机五种选择。
b.输入项
输入相应数字编号。
c.输出项
返回主菜单。
d.算法
选择结构。
e.流程逻辑
C题数设置
a.功能
设置每次做题的量。
b.输入项
输入相应数字编号。
c.输出项
返回主菜单。
d.算法
选择结构。
e.流程逻辑
3.5查分模式
3.51程序描述
此函数进行对测验成绩的记录,并将测验的结果显示在终端。
3.52功能
查看成绩。
3.53输入项
无。
3.54输出项
用printf()输出,在屏幕上显示结果
3.6写入文件
文件1:
设置(随即数位数及运算)记录文件;每次可读取上一次的设置。
文件2:
测验成绩(成绩,测验日期,测验时间)记录文件。
文件3:
测验题数记录文件,每次测验如无设置自动读取上一次设置。
3.7读取文件
每次程序运行时可自动读取上一次的设置,如第一次运行或设置文件被删除则会提示用户要求设置。
3.8时间模块
课程设计心得与体会
通过两周的课程设计,让我对C语言有了更进一步的了解,以往不清楚的部分也通过实践有了更深的了解。
这是我第一次尝试编写比较大的程序,在很多方面依然存在着不足。
尤其在文件的存储和结构体模块,大大加强了我对概念和小细节的理解和把握。
同时也让我知道的编程的艰辛,以后的路任重而道远。
总之,这次课程设计让我收益非浅。
对我将来的学习很有帮助。
附录1
参考文献
[1]谭浩强.C程序设计北京:
清华大学出版社
[2]谭浩强.C程序设计题解与上机指导北京:
清华大学出版社
[3]林小茶C程序设计实训北京:
清华大学出版社
[4]C语言课程设计北京:
电子工业出版社
附录2
程序清单
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#defineGLN"最近得分:
%d\n最高分:
%d\n难度系数:
%d\n运算类型:
%d\n是否随机:
%d\n测试题数:
%d"
FILE*fp;//定义文件型指针变量
structbaocun
{
intnum;//测试题数
intscore;//最近一次的得分
inthighscore;//历史最高得分
intndk;//难度系数
inttype;//加减乘除类型
inttype1;//是否随机
};
structbaocunxinxi;
inttishu1,tishu2;
///////////////////////////////////////////////////////////////////////
//下列为申明函数
voidchongzhi();//重置(把所有值变成默认值)
voidtc();//退出
voidsp();//分割符号
voidf0();//主界面
voidf1();//练习模块
voidf2();//测验模块
voidf3();//设置模块
voidf4();//查分模块
voidread();//读取文件
voidwrite();//写入文件
//intnum,ndk=10,type=1,type1=1;
////////////////////////////////////////////////////////////////////////////
main()
{
f0();
}
///////////////////////////////////////////////////////////////////
voidf0()//主菜单
{
charch;
read();
lp:
intn;
printf("\n\n\n");
sp();
printf("\n\t\t\t主菜单\n\n");
printf("\t\t\t\t1.练习\n\n");
printf("\t\t\t\t2.测试\n\n");
printf("\t\t\t\t3.设置\n\n");
printf("\t\t\t\t4.查看\n\n");
printf("\t\t\t\t0.退出\n");
sp();
printf("\n\t请输入数字选择(0-4):
");
scanf("%d",&n);
switch(n)
{
case0:
tc();break;
case1:
f1();break;
case2:
f2();break;
case3:
f3();break;
case4:
f4();break;
default:
printf("\t选择错误!
");
}
ch=getchar();
gotolp;
}
///////////////////////////////////////////////////////////////////
voidf1()//练习模式
{
srand(time(NULL));//以时间做种子初始化随机数发生器
tishu1=0;
tishu2=0;
intx1,x2,x3,x4;
charb1,ch;
printf("\n");
do
{
sp();
tishu1=tishu1+1;//总题数
if(xinxi.type1==1)
xinxi.type=rand()%4+1;
x1=rand()%xinxi.ndk+1;//随机数
x2=rand()%xinxi.ndk+1;//随机数
printf("\n\t%d.%d",tishu1,x1);
switch(xinxi.type)
{
case1:
printf("+");x4=x1+x2;break;//x4为正确答案
case2:
printf("-");x4=x1-x2;break;
case3:
printf("*");x4=x1*x2;break;
case4:
printf("/");x4=x1/x2;break;
}
printf("%d=",x2);
scanf("%d",&x3);//x3为输入答案
if(x3==x4)
{
printf("\n\n\t(*^_^*)恭喜你,你做对了!
\n\n\n\n");
tishu2=tishu2+1;//答对题数
}
else
{
printf("\n\n\t(!
-_-!
)你做错了!
\n\t\t\t\t\t\t正确答案为%d\n",x4);
}
printf("\t\t\t\t\t\t共做%d道,做对%d道\n",tishu1,tishu2);
ch=getchar();
printf("\n\t请问是否继续?
(按y继续,按n返回主菜单)");
scanf("%s",&b1);
printf("\n");
}
while(b1!
='n');//当变量bl不等于n时执行
}
////////////////////////////////////////////////////////////////
voidf2()//测验模式
{
charch;
intj,x1,x2,x3,x4,zql;//zql:
正确率
srand(time(NULL));
tishu2=0;
printf("\n");
for(j=1;j<=xinxi.num;j++)
{
sp();
if(xinxi.type1==1)
xinxi.type=rand()%4+1;
x1=rand()%xinxi.ndk+1;
x2=rand()%xinxi.ndk+1;
printf("\n\t%d.%d",j,x1);
switch(xinxi.type)
{
case1:
printf("+");x4=x1+x2;break;
case2:
printf("-");x4=x1-x2;break;
case3:
printf("*");x4=x1*x2;break;
case4:
printf("/");x4=x1/x2;break;
}
printf("%d=",x2);
scanf("%d",&x3);
if(x3==x4)
{
printf("\t\t\t\t\t\t(*^_^*)你做对了!
\n\n");
tishu2=tishu2+1;
}
else
printf("\t\t\t\t\t\t(!
-_-!
)你做错了!
\n\t\t\t\t\t\t正确答案为%d\n\n",x4);
ch=getchar();
}
sp();
zql=tishu2*100/xinxi.num;
printf("\t\t\t您做对%d道,正确率为%d%%\n",tishu2,zql);
xinxi.score=zql;
if(xinxi.score>xinxi.highscore)
xinxi.highscore=xinxi.score;
write();
}
/////////////////////////////////////////////////////////////////////
voidf3()//设置模式
{
intn;
voidf31();
voidf32();
voidf33();
printf("\n\n\n");
sp();
printf("\n\t\t\t\t设置\n\n");
printf("\t\t\t\t1.设置难度\n\n");
printf("\t\t\t\t2.设置运算类型\n\n");
printf("\t\t\t\t3.设置测验题数\n\n");
printf("\t\t\t\t4.恢复默认值\n\n");
printf("\t\t\t\t0.返回主菜单\n\n");
sp();
printf("\n\t请选择(0-4):
");
scanf("%d",&n);
switch(n)
{
case0:
return;break;
case1:
f31();break;
case2:
f32();break;
case3:
f33();break;
case4:
chongzhi();write();break;
default:
printf("选择错误!
");exit
(2);//如果错误就返回
}
}
/////////////////////////////////////////////////////////////////////
voidf31()//设置中的难度设置
{
voidf311();
intn;
printf("\n\n\n");
sp();
printf("\n\t\t\t\t设置难度\n\n");
printf("\t\t\t\t1.低难度(数字范围为1-9)\n\n");
printf("\t\t\t\t2.中等难度(数字范围为1-99)\n\n");
printf("\t\t\t\t3.高难度(数字范围为1-999)\n\n");
printf("\t\t\t\t4.自定义难度\n\n");
printf("\t\t\t\t0.返回上一层\n\n");
sp();
printf("\n\t请选择(0-4):
");
scanf("%d",&n);
switch(n)
{
case0:
f3();break;
case1:
xinxi.ndk=9;break;
case2:
xinxi.ndk=99;break;
case3:
xinxi.ndk=999;break;
case4:
f311();break;//设置难度系数xinxi.ndk
default:
printf("选择错误!
");exit(3);
}
write();
}
////////////
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 算术 练习