c 语言 使用菜单选择趣味程序.docx
《c 语言 使用菜单选择趣味程序.docx》由会员分享,可在线阅读,更多相关《c 语言 使用菜单选择趣味程序.docx(20页珍藏版)》请在冰豆网上搜索。
c语言使用菜单选择趣味程序
攀枝花学院
学生课程设计(论文)
题目:
使用菜单选择趣味程序
学生姓名:
学号:
所在院(系):
计算机学院
专业:
软件工程
班级:
2010级1班
指导教师:
何春燕
2010年6月20日
攀枝花学院本科学生课程设计任务书
题 目
使用菜单选择趣味程序
1、课程设计的目的
利用菜单作为应用程序的界面,并控制程序的执行顺序,使学生掌握利用,通过对顺序结构,选择结构及循环结构实现结构化程序设计
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
一、用C实现如下功能要求:
(1)编写一函数实现确定一数字,使等式:
3□*6237=□3*3564成立。
(2)编写一函数实现求ax2+bx+c=0的根,其a,b,c的值从键盘上输入。
(3)编写一函数实现求一肇事车辆牌照号码的推论:
一辆汽车撞人后逃逸,4个目击者提供如下线索:
甲:
牌照3,4位相同;乙:
牌号为31****;丙:
牌照5,6位相同;丁:
3-6位是一个整数的平方。
(4)编写一个函数,实现下列笑话的计算:
有一只狗熊到玉米地里掰玉米,一边掰一边吃。
第一天吃了一半,又拿圤一个回去喂小狗熊。
第二天又去吃了剩下的一半,走时仍然带一个回去喂小狗熊。
以后每天都吃前一天剩下的一半,拿走一个。
到第十天时,地里只剩下一个玉米了。
求地里一共有多少玉米。
(5)编写一函数实现九九乘法表的打印输出。
(6)编写一函数实现退出整个程序。
(7)用一个简单的菜单提供上述操作。
菜单信息为:
1.FindNum
2.FindRoot
3.Detective
4.Bear
5.99MultiplicationTable
6.Goodbye
Input1-6:
二、撰写课程设计报告或课程设计总结课程设计报告要求:
总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。
3、主要参考文献
[1]谭浩强,《C程序设计》,清华大学出版社2001.2
[2]刘振安,《c语言课程设计》,机械工业出版社2004年9月1日.
[3]贾宗璞、许合利,《C语言程序设计》中国矿业大学出版社,2007.6
4、课程设计工作进度计划
课程设计时间为一周,分四个阶段完成:
1.分析设计阶段。
引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。
这一阶段前第1天完成。
2.编码调试阶段:
根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。
这一阶段在第2-3天完成。
3.总结报告阶段:
总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。
这一阶段在第4-5天完成。
4.考核阶段。
这一阶段在第5天完成。
指导教师(签字)
日期
年月日
教研室意见:
年月日
学生(签字):
接受任务时间:
2011年06月20日
注:
任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算及计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要
生活在二十一世纪的我们,我们面临着生活的挑战,社会的快速发展,时代的不断更新。
越来越来多的现代科技占有主导地位,特别是科技方面的,尤为是计算机技术,在我们生活的各个领域广泛运用,占有一席之地,所谓的后来者居上。
本次课程设计的内容就是使用菜单选择趣味程序,其主要操作就是通过编写程序来完成菜单选项,然后通过调用函数来完成小程序的编写,还要用到我们学到的选择,嵌套,循环的方法的使用。
该课程主要是将我们的所学C语言运用于实践,在实践中学习,获得成长,锻炼我们的独立思考能力,动手操作能力,完善自己。
我会努力完成此次任务,真正获得知识。
关键词:
菜单项,函数,调用
目录
摘要I
1需求分析1
1.1问题描述1
1.2需求环境1
1.3功能描述1
2概要设计2
2.1程序模块设计2
2.2程序流程图2
2.3数据结构的设计3
2.3.1选择结构3
2.3.2调用函数3
3详细设计4
3.1程序功能4
3.2趣味菜单程序4
4测试与运行程序8
5程序运行感言10
结束语11
参考文献12
1需求分析
1.1问题描述
通常程序需要有一个顶级菜单,用户选择对应的菜单进入对应的功能。
程序中不同的功能通常使用不同的函数来实现,在设计这些函数的时候需要考虑函数(功能模块)的输入和输出。
输入数据如果比较简单可以通过函数的参数传递,如果比较多或者比较复杂则可以通过全局变量来传递。
函数的输出如果是一个数则可以通过return函数带回,如果是多个结果则只能通过全局变量带回。
对于使用菜单选择趣味程序:
首先设计含有多个菜单项的菜单演示程序,然后为这一些菜单项配上相应的功能。
这些菜单项分别为1.FindNum2.FindRoot3.Detective4.Bear5.99MultiplicationTable6.Goodbye,只能用1-6这几个数值来确定菜单项,其他数字则无效。
功能项1.FindNum:
编写一函数实现确定一数字,使等式:
3□*6237=□3*3564成立2.FindRoot:
编写一函数实现求ax2+bx+c=0的根,其a,b,c的值从键盘上输入3.Detectiv:
对三个人的描述来讨论车牌号问题4.Bear:
讨论小熊吃东西知道剩余几个,求总个数问题5.99MultiplicationTable:
编写一函数实现九九乘法表的打印输出6.Goodbye:
编写一个函数,实现程序的结束退出整个程序。
此设计主要是要熟悉运用c语言的选择,循环,顺序等算法的运用,也是设计的难点和重点。
1.2需求环境
本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:
①硬件要求:
一台计算机。
②软件配置:
WINDOWS、C/VC++6.0。
1.3功能描述
对于设计的菜单趣味程序主要是运用于大家学习c语言,程序里面有各种程序题目,对语言的算法知识做个系统的总结。
运用菜单项功能对题目总结。
想了接哪方面的题目就选择哪个菜单项。
看起来简洁,对语言学习者提供极大的帮助。
增加学习的兴趣。
其功能如下:
1打开运行原程序,进入菜单选项,选择自己需要的菜单项。
2进入选项题目,编写程序。
3查看对应的原程序。
2概要设计
2.1程序模块设计
由题目可以知道,可以设置一下几个模块:
首先选择菜单程序模块,FindNum题目模块,FindRoot题目模块,Detective题目模块,Bear题目模块,99MultiplicationTable题目模块。
2.2程序流程图
2.3数据结构的设计
2.3.1选择结构
对于选择程序模块使用switch语句,switch(cn)case1:
printf(“FindNum()\n”);breake;case2:
printf(“FindRoot()\n”);breake;case3:
printf(“Detective()\n”);breake;case4:
printf(“Bear()\n”);breke;
case5:
printf(“99MultiplicationTable()\n”);breke;
case6:
printf(“Goodbye\n”);breke;
2.3.2调用函数
使用调用函数来完成第二个模块设计,例如:
voidFindNum(),voidFindRoot()等函数调用来对题目编写完成。
3详细设计
3.1程序功能
该次设计的程序使用switch语句,printf语句输出菜单,主要是通过调用函数来完成相应菜单程序的编写查看。
3.2趣味菜单程序
#include
#include
#include
#include
voidFindNum();
voidFindRoot();
voidDetective();
voidBear();
voidMultiplication();
intmenu_select();
voidmain()
{
for(;;){
switch(menu_select())
{
case1:
FindNum();
break;
case2:
FindRoot();
break;
case3:
Detective();
break;
case4:
Bear();
break;
case5:
Multiplication();
break;
case6:
printf("Goodbye!
\n");
exit(0);
}
}
}
//菜单选择操作
intmenu_select()
{
chars;
intcn;
printf("1.FindNum\n");
printf("2.FindRoot\n");
printf("3.Detective\n");
printf("4.Bear\n");
printf("5.99MultiplicationTable\n");
printf("6.Goodbey!
\n");
do{
s=getchar();
cn=(int)s-48;
}while(cn<0||cn>6);
returncn;
}
//找出一个数使等式成立
voidFindNum()
{
inti,j;
printf("求填入一个数使等式3□*6237=□3*3564成立\n");
for(i=1;i<10;i++)
for(j=1;j<10;j++)
{
if((3*10+i)*6237==(j*10+3)*3564)
printf("3%d*6237=%d3*3564",i,j);
}
}
//完成一元二根的问题次方程
voidFindRoot()
{
floata,b,c;
floatdelta;
printf("求一个二元方程ax2+bx+c=0的根的问题");
printf("inputa,b,c:
");
scanf("%f%f%f",&a,&b,&c);
delta=(b*b-4*a*c);/*b^2-4ac*/
if(delta<0)
{
printf("nofactroot.\n");
}
elseif(delta<0)
{
/*delta==0,have1root*/
printf("root1=root2=%0.2f\n",-1*b/(2*a));
}
else
{
/*delta>0,have2root.*/
printf("root1=%0.2f,root2=%0.2f\n",-1*b+sqrt(delta)/(2*a),-1*b-sqrt(delta)/(2*a));
}
}
//狗熊吃玉米问题
voidBear()
{
intday,x1,x2;
printf("狗熊到玉米地吃了包谷");
printf("第一天吃了一半又拿走一个回去喂小狗熊。
\n");
printf("第二天又去吃了剩下的一半,走是任然带一个回去。
/n");
printf("以后每天都吃前一天剩下的一半,拿走一个。
/n");
printf("到了第十天时,地里只剩下一个包谷。
求地里一共有多少包谷。
/n");
day=10;
x2=1;
while(day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("包谷总数=%d\n",x1);
}
//九九乘法表问题
voidMultiplication()
{
inti,j;
for(i=1;i<=9;i++)//循环计算1~9
{
for(j=1;j<=i;j++)//输出数i的i个乘法项
{
printf("%d*%d=%d",i,j,i*j);
}
printf("\n");//输出换行符
}
}
//车牌号问题
voidDetective()
{
intn;
inta;
intx1,x2,x3,x4;
printf("一辆车撞人后逃逸,四位目击者的描述如下");
printf("甲说车牌得3,4位相同");
printf("乙说车牌号为31****");
printf("丙说车牌5,6位相同");
printf("丁说车牌的3~6位是一个整数的平方");
for(n=1;n<99;n++)
{
a=n*n;
x1=a/1000;
x2=a%1000/100;
x3=a%100/10;
x4=a%10;
if(x1==x2&&x3==x4&&x1!
=x3)
{
printf("thenumberis:
%d\n",310000+a);
break;
}
4测试与运行程序
图4.1狗熊吃玉米
图4.2车牌问题
图4.3一元二次方程
图4.4九九乘法表
图4.5运行两个程序
5程序运行感言
程序运行主要出错的地方有:
中文与英文的符号不一样,使用调用函数的函数名得用法,程序中不使用相应调用函数时不做出主函数调用,声明数据类型时如:
inta应在printf前面。
以上就是我运行程序出错的地方,虽然调试程序时很麻烦很恼火,但是运行成功过后喜悦却是很难找到的。
那种自信,成就感豁然而生。
此次课程设计我收获很多,不光是是知识上的,还有我以后学习的收获。
第一次做出我自己的程序,我是无比高兴,在以后我会更加努力的完成我的每一次课程设计,我会加油的!
结束语
本次课程设计我大有收获,主要通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。
在刚开始的几次调试中曾经出现过不能运行、不会正确输出结果、不能进行循环练习等等问题。
经过我的努力及同学的帮助,这些问题得到克服,并且使程序的功能也得到了一定的完善。
现在它能对出错的题目发出报警声,并且给出正确答案。
最后还能分别输出对错的题数及所得分数。
在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学学到了课本上没有的知识。
从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起来应用,力争写出完美的程序。
除此之外,我还得到了一些有用的教训:
写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。
在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。
最后对给过我帮助的指导老师和同学表示忠心的感谢!
参考文献
[1]谭浩强,《C程序设计》,清华大学出版社2001年1月
[2]刘振安,《c语言课程设计》,机械工业出版社2004年9月1日
[3]杨正华,《趣味程序导学》,清华大学出版社2006年6月
[4]
[5]
[6]贾宗璞、许合利,《C语言程序设计》中国矿业大学出版社,2007.6