c语言课程设计报告_第1页
c语言课程设计报告_第2页
c语言课程设计报告_第3页
c语言课程设计报告_第4页
c语言课程设计报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计课程设计报告课程设计题目: 专 业: 姓 名: 学 号:指导老师:成 绩: 年 月27 / 29文档可自由编辑打印目 录1实践1:猜数游戏21.1 题目21.2 设计思路21.3 程序框图21.4 程序(附录)21.5 调试过程22实践2:数组32.1 题目32.2 设计思路32.3 程序框图32.4 程序(附录)32.5 调试过程33实践3:函数43.1 题目43.2 设计思路43.3 程序框图43.4 程序(附录)43.5 调试过程44实践4:结构体54.1 题目54.2 设计思路54.3 程序框图54.4 程序(附录)54.5 调试过程55课程总结55.1 任务完成情况65

2、.2 能力提高情况65.3 存在问题及努力方向65.4 意见与建议66附录66.1 实践1程序清单66.2 实践2程序清单66.3 实践3程序清单66.4 实践4程序清单61实践1:猜数游戏1.1 题目1题目:猜数游戏程序1 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小,然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。程序2 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出

3、提示,告诉人所猜的数是太大还是太小,直到人猜对为止。程序3 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。程序4 编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序

4、可以反复猜多个数,直到操作者想停止时才结束。2.目标:此次试验重点在于循环变量的用法和随机函数的使用,能够熟练的调用函数循环函数,能接受整型变量(int)和输入(输出)函数(printf),限制小于0和大于100的整数输入,格式要求逻辑合理,规范美观。1.2设计思路 1.使用Microsoft Visual C+6.0 来编写程序。2.使用用srand(time(NULL)调用随机函数,用if-else语句,while语句和for语句调用循环函数,实现0到10次循环。输入人猜想的一个1100的整数,并存入变量n中 开 始使用随机函数生成一个1100的整数,并存入变量x中x=n ?WrongIf

5、 x<nIf x>n猜的数大了猜的数小了输出猜中时所用的次数i人猜了的次数 结束 i<11 ? i=i+1Right1.3 程序框图 1.4 程序(附录) 程序代码放在报告最后以附录形式提交1.5 调试过程调试时,先随意输入了一个数如输入23,而随机数显示为60,故结果猜错,则会显示数小了,重来一次,已猜过一次;经过重复调试,程序符合要求。而调试时也出了一点小问题,函数的总体变量和局部变量定义出错,经过细心查找书本,查看程序,最总得以解决。2实践2:数组2.1 题目1题目:数组编程 1.学生成绩统计(一维数组)从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成

6、绩为负值时,输入结束,分别实现下列功能:(1)统计不及格人数并打印不及格学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;(3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下:分数段 学生人数 图形<60 3(10%) *60-69 8() *70-79 7() *80-89 8() *>=90 4() *2. 成绩排名次(二维数组)某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)打印出名次表,表格内包括学生

7、编号、各科分数、总分和平均分;(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数2目标:1.此次试验使用一维数组,二维数组和结构体来统计学生统计不及格人数,不及格学生名单,平均分及平均分之上的学生人数和名次表,它限制小于0和大于100的整数输入,格式要求用直方图的形式。 2.2 设计思路1解题思路:使用二维数组score305来存放姓名,学号等,再用结构体函数记录输入成绩的学生变量,计算总分、平均分,调用函数比较学生成绩,得出排名,再根据数组定义对应存放各变量的位置,最后得到名次表和直方图。2使用Microsoft Visual C+6.0 编程,调用一维、二维数组和结构体,及

8、判断语句(if-else)实现循环,从而调用函数实现目的。 开始输入学生分数nn=1;n<=sum;n+ ?判断输出?输出分数段、学生人数、直方图 结束错误处理定义(int)变量输入学生人数sumsum<31&&sum>0 ?2.3 程序框图 1 NO Yes WrongYes 开始定义(int)变量输入学生学号、成绩输出直方图 结束2计算学生、班级平均分,总分;比较成绩并得出排名开始定义变量输出结果错误处理判断定义结束2.4 程序(附录)2.5 调试过程1. 程序一调试时,随意输入学生人数,如5人,结果如下,经过反复调试,确认程序无误。调试也出现了一点下问题

9、-调试窗口不美观,经过多次调整,才解决问题。2.程序二调试时, 随意输入30名学生学号,姓名,分数,结果如下,经过多次反复调试,确认程序无误,调试时由于程序较长,出现一些细节错误 ,经过反复检查,才解决。3实践3:函数3.1 题目函数编程 1题目:1.将实践二(1)的程序利用函数的思想进行修改。要求函数参数中包含一维数组。2掷骰子游戏编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、

10、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。【思考题】 将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则相同,然后请读者重新编写该程序。2目标:此次试验使用随机函数生成随机数(1-6)代表掷出色子的点数,用while语句和if-else语句来实现循环使之符合色子掷出不同点数的不同结果。支持#include <stdio.h>、#include <stdlib.h>#i

11、nclude <conio.h>和#include <time.h>的输入,输出,它限制色子的点数(1-6),输出格式要求逻辑合理,规范美观。3.2 设计思路1此次试验使用随机函数生成随机数(1-6)代表掷出色子的点数,使用int定义整型变量,用if-else语句来控制色子不同点数的情况(判断输出),最后输出结果。2.使用Microsoft VisualC+6.0编程;用srand(unsigned)time(NULL)调用随机函数,有if-else语句判断输出。 开始 主函数用随机函数生成随机数i定义(int)变量 结束判断输出?错误处理输出结果3.3 程序框图3.4

12、 程序(附录)3.5 调试过程程序调试结果如下,经过多次反复调试,确认程序无误。调试时也并非一帆风顺,出现了一些错误-随机函数使用出错,导致无法生成随机数,经过查找书本,翻看课件和网络查找等手段,才能正确使用该函数。4实践4:结构体4.1 题目1题目:结构体编程 在屏幕上模拟显示一个数字式时钟按如下方法定义一个时钟结构体类型:struct clock int hour; int minute; int second;typedef struct clock CLOCK;然后编写时钟模拟显示程序2目标:利用结构体函数全局定义变量,使用void Update和void Display的函数功能显示

13、时钟并达到与计算机时间同步的目的。能接受整型变量(int)、void Update和void Display函数的输入(输出),格式要求时间显示清晰准确,规范合理。4.2 设计思路 开始时、分、秒时间的更新时、分、秒时间的同步输出最新时间 结束1,使用结构图全局定义函数,用void Update(void)函数实现时、分、秒时间的更新,用void Display(void)函数控制时、分、秒显示的位置,用for语句实现空语句的循环,起延时作用Update(), Display()和Delay()实现和计算机时间同步,再输出结果。4.3 程序框图主函数定义结构体变量4.4 程序(附录)4.5 调

14、试过程调试过程如下,经过多次反复调试,确认程序无误。在调试过程终于到多个问题,如:不会处理时间的更新,执行时产生的时间与计算机时间有误差,换算成格林威治时间时出现错误等。经过参考指导老师的程序,翻查书本和上网了解才解决问题。 5 课程总结经过半学期的实践课程,然我对C语言产生了浓厚的兴趣,使我初步了解了C语言的基础,也能独立初步完成编程操作,但目前作为初学者,无法实现较复杂的编程,有些较为复杂的程序更是看不懂,各方面有待提高。C语言作为现代大学生最重要的课程之一,用途广泛,更使我认识到了独立思考,实践操作的重要性。C语言的学习不仅重理论,更重实践。而学好C语言的一大方法便是“实践”,在C语言实

15、践过程中遇到的种种问题,及解决问题的方法,更是锻炼了学生的实践能力,使我们不仅是学习理论,更学习了实践,今后一定要理论和实践有机结合,加上独立思考和不懈努力的学好C语言,为撬开编程的大门不懈努力。总体来说老师授课很有水平,不过老师以后在上实践课的时候也进行更多的实践操作,让我们更好地理解,这样理论课也将变得更有趣。6附录6.1 实践1程序清单#include<stdio.h>#include<stdlib.h>#include<time.h>int main() while(1)int x; int i=0;int y; int n=1;int m=9; s

16、rand(time(NULL); while(i=0) x=rand()%100+1; printf("请输入一个1100之间的整数n");while(n<=10)scanf("%d",&y);if(x=y)printf("您猜了%d次,终于猜对了n",n); break;elseif(x<y) printf("您猜的数太大了n");printf("您已经猜了%d次n",n);printf("您还有%d次机会n",m); elseprintf("

17、您猜的数太小了n");printf("您已经猜了%d次n",n);printf("您还有%d次机会n",m);n+;m-; printf("正确答案是%dn",x);return 0;6.2 实践2程序清单1.#include <stdio.h>int main() int sum; int score30;int n=1; int j=1;int a=0,b=0,c=0,d=0,e=0;float q,w,s,r,t;printf("请输入学生人数:");scanf("%d&quo

18、t;,&sum);if(sum<31&&sum>0) for(n=1;n<=sum;n+) printf("请输入第%d个同学的分数:",n); scanf("%d",&scoren); n=1;while(n<=sum)if(scoren<60) e+;else if(scoren>59&&scoren<70) d+;else if(scoren>69&&scoren<80) c+;else if(scoren>79&&a

19、mp;scoren<90) b+;else if(scoren>89&&scoren<101) a+; else break; n+;q=(e/sum)*100; w=(d/sum)*100;s=(c/sum)*100; r=(b/sum)*100;t=(a/sum)*100; printf("分数段 学生人数 图形n");printf("<60 %d(%.f%) ",e,q);n=1;for(n=1;n<=e;n+)printf("*");printf("n"); p

20、rintf("60-69 %d(%.f%) ",d,w);n=1;for(n=1;n<=d;n+)printf("*");printf("n"); printf("70-79 %d(%.f%) ",c,s);n=1;for(n=1;n<=c;n+)printf("*");printf("n"); printf("80-89 %d(%.f%) ",b,r);n=1;for(n=1;n<=b;n+)printf("*");

21、printf("n"); printf(">=90 %d(%.f%) ",a,t);n=1;for(n=1;n<=a;n+)printf("*");printf("n"); return 0;2#include<stdio.h>#include<string.h>#define NUM 30int main() struct student int ID; char NAME9; int MT; int EN; int PH; int ALL; double AVE; stu30

22、,t; int a,b,c,d,i=0,j; for(a=0;a<NUM;a+) printf("输入第%d个同学的姓名 数学分数 英语分数 物理分数n”); printf("姓名:"); scanf("%s",stua.NAME); if(0=strlen(stua.NAME) break; printf("n数学分数:"); do scanf("%d",&stua.MT); if(stua.MT>100|stua.MT<0) printf("n请重新输入数学分数:&

23、quot;); while(stua.MT>100)|(stua.MT<0); printf("n英语分数:"); do scanf("%d",&stua.EN); if(stua.EN>100|stua.EN<0) printf("n请重新输入英语分数:"); while(stua.EN>100)|(stua.EN<0); printf("n物理分数:"); do scanf("%d",&stua.PH); if(stua.PH>100

24、|stua.PH<0) printf("n请重新输入物理分数:"); while(stua.PH>100)|(stua.PH<0); printf("第%d个同学的总分 平均分n",a+1); stua.ALL=(stua.MT+stua.EN+stua.PH); stua.AVE=(stua.MT+stua.EN+stua.PH)/3; printf("%d %-8.1f",stua.ALL,stua.AVE); printf("n"); stua.ID=a+1; getchar(); c=a;

25、 for(b=0;b<c;b+) for(d=0;d<c-1-b;d+) if(stud.AVE<stud+1.AVE) t=stud; stud=stud+1; stud+1=t; printf("学号 姓名 数学分数 英语分数 物理分数 总分 平均n"); while(i<c) printf("%5d%s%5d%5d %5d %-8.1fn",stui.ID,stui.NAME,stui.MT, stui.EN,stui.PH,stui.ALL,stui.AVE);i+; while(1) printf("输入学号:

26、"); scanf("%d",&j); printf("%5d%s%5d%5d%5d%-8.1f",stuj-1.ID,stuj-1.NAME, stuj-1.MT,stuj-1.EN,stuj-1.PH,stuj-1.ALL,stuj-1. AVE);return 0;6.3 实践3程序清单#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <time.h>enum status CONTINUE,WON,LOS

27、T;void main() while(1)int status=CONTINUE; int i=0,j=0,add,k,newadd; srand(unsigned)time(NULL); while(i=0) i=rand()%7; printf("骰子1: %dn",i); while(j=0) j=rand()%7; printf("骰子2: %dn",j); add=i+j; if(add=11 && add=7) status=WON; if(add=2 && add=3 && add=12)

28、status=LOST; if(status=WON) printf("两个色子的和为 %d. 您赢了!n",add);else if(status=LOST) printf("两色子的和为 %d. 您输了!n",add); else printf("两色子的和为 %d.CONTINUE!n",add); for(k=1;k<=7;k+) i=0; j=0; printf("n重新投掷第%d次n",k); while(i=0) i=rand()%7; printf("骰子1: %dn",i); while(j=0) j=rand()%7; printf("骰子2: %dn",j);newadd=i+j;printf("重新投掷第%d次的总数:%dn",k,newadd); if(i+j)=add) status=WON; break; if(status=WON) printf("两色子的和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论