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

下载本文档

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

文档简介

1、文档从互联网中收集,己重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。北京理工大学珠海学院C语言程序设计实践报告20142015学年第1学期学 院:计算机学院专业班级:计算机科学与技术(1)班学 号: 1036学生姓名:骆庆东指导老师:代俊雅成 绩:时 间:2014年12月26日Iword格式支持编辑,如有帮助欢迎下载支持,一、实践目的与内容1二、任务内容分析3三、程序设计4四、运行分析7六、实践总结1237一、实践目的与内容实践目的C语言程序设计实践02180044是面向计算机学院各专业开设的专业基 础课,主要目的在于培养学生的分析问题能力,以及如何利用计算机解决问题的 能力。通过

2、将课本上的理论知识和应用案例进行结合,提高学生程序设计、程序 调试及解决问题能力。为后续课程:面向对象程序设计、数据结构、软件工程等 专业教育课程奠定基础。本课程分为理论和实践两部分:理论课程重点学习结构体和指针的定义和引 用等,及其作为函数参数和返回的用法;实践部分通过布置具有一定难度、一定 编程量的应用案例,使学生通过编程练习深入理解C语言的程序设计思想,掌 握C语言程序设计方法和编程技术,培养学生的利用计算机求解实际问题的能 力,强化学生的计算思维和计算机思维。实践内容实践练习1:循环结构编程(猜数游戏)1 .编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了, 则结束游戏,并

3、在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者 “猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可 以猜10次,如果猜了 10次仍未猜中的话,结束游戏。2 .编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了, 在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算 机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了 10 次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反 复猜多个数,直到操作者想停止时才结束。实践练习2:数组与结构体编程(成绩统计)L学生成绩统计(一维数组)从键盘输入一

4、个班(全班最多不超过30人) 学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: (1)统计不及格人数并打印不及格学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)以直方图方式统计各分数段的学生人数及所占的百分比。形式如下:分段人数 图形<603 (10%) *III III I I I III III 1'" ""» " I III III I60 - 69 8 ()70 - 79 7 ()80 - 89 8 ()>=90 4 ()*2.成绩排名次(结构体数组)某班期

5、末考试科目为数学(MT)、英语(EN) 和物理(PH),有最多不超过30人参加考试,学号可以用输入的序号代替。考 试后要求:(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。实践练习3:函数编程(函数调用与参数传递)将实践练习2中的笫2题利用函数的思想进行修改,并将学生的成绩等信息 输出到文件中。要求函数参数中包含结构体数组或指针。输出到ASCII文件的信 息包括每个学生的学号、三门成绩和名次,每人一行。实践练习4:数组/结构体/函数/文件

6、编程(成绩统计与分析)学生信息统计和查 询每位学生信息包括:学号、姓名、性别、学院、10门成绩。共有不超过100 位同学的信息存放在ASCII文件Studentinfo. txt中;不超过10个学院的信 息存放在Codeinfo, txt中,性别代码存放在Sexinfo, txt中,均为代码和其对 应的名称。要求:1 .定义至少包含以上学生信息和学院代码的结构体类型和指针(或数组) 变量。2 .函数实现从文件中输入信息到定义的数据中。3 .函数实现排序:学生平均成绩的降序排序,并输出所有信息到显示屏。4 .函数实现排序(2):学生姓名的升序排序,并输出所有信息到显示器。5 .函数实现查询(1)

7、:根据学号查询学生信息,并输出该生信息,并输出 所有信息到显示器。6 .函数实现查询(2):根据姓名查询学生信息,并输出该姓名的学生信息, 并输出所有信息到显示器。7 .函数实现查询(3):根据学院代号列出该学院的所有学生信息,并输出 到显示器。8 .函数实现统计:根据学生平均成绩统计各分数段的人数级所占的百分比, 并以直方图方式输出,形式如下: 分段人数图形<60 3 (10%) *60 - 69 8 () *70 - 79 7 () *80 - 89 8 () * >=90 4 () *进入程序后,无条件执行从指定文件名中读入数据;数据读入后,以菜单的 形式选择后续的执行:1

8、.平均成绩降序排序2 .姓名升序排序3 .学号查询4 .姓名查询5 .学院学生列表6 .平均成绩统计7 .退出其中的查询模块中,须为循环结构,用户可以选择继续查询,当输入的为0 时,结束当前查询,返回主菜单。提高模块*:1 .函数执行需有密码(密码在文件中不得以明文出现);2 .密码修改模块二、任务内容分析实践练习1先编写第1个程序,然后试着在第1个程序的基础上编写第2个程序, 程序1编程先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则 计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大还是小, 然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样

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

10、猜数者“猜”的水平,则结 束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜 10次,如果猜了 10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。 每次运行程序可以反复猜多个数,直到操作者想停 止时才结束。实践练习2、(1)使用一维数组来存放学号,再用一维数组来记录输入成绩的学生变量, 计算总分、平均分,调用函数比较学生成绩,得出排名,再根据数组定义对应存 放各变量的位置,最后得到名次表和直方图。(2)使用结构体数组来实现,该结构体中包括学生学号和成绩,用二维数组 存放每个学生各门课程的成绩,用一维数组存放每个学生的学号,用一维数组存 放每个学生的总分,用一维数组存放每

11、个学生的平均分。实践练习3用函数编程实现计算每个学生的总分。用函数编程实现按总分由高到低对学 生成绩排序。实践练习4题目要求完成一个学生信息统计和查询系统,要求能进行对学生的信息统计 和查询,同时可以对学生的信息进行排序。系统的使用,有用户的存在,即需要 用户登录才能使用。本课程实验环境由任课教师自行决定:VC+6. 0、Visual Studio 2010或以 上版本(建议采用Visual Studio 2012)o编程语言为C。系统有以下几个功能性要求:1 .学生的信息查询:输入学号/用户名,查询对应学生的信息。2 .学生的信息排序:对学生的信息按指定的要求进行排序。3 .学生的信息统计:

12、对学生的成绩按平均分进行统计。4 .用户验证:用户使用该系统,首先进行验证,验证成功,才能登入系统。三、程序设计实践练习1主要代码实现:while (1)(srand(time(NULL);k=rand()%100+l;for(Num=l;Num<11;Num+)(printf (请输入一个1100之间的数:"); scanf ("%d", &i);if(k=i)(printf("Right!n");printf (NunF%dn”, Num);break;else(printf("Wrong!n");if(k

13、>i) printf(Too smalln);else printf("Too large'n");if(k=i) break;printf(是否继续游戏?(LY 2.N)n);scanf(%d, &x);if(x=2)break;)实践练习2主要代码实现:for(i=0;i<N-l;i+)for(j=i+l;j<N;j+)if (stui. sum<stuj. sum) t=stui;stui=stuj;stuj=t;)printf (按总成绩高低排序n");printf (名次t学号t姓名t数学t英语t物理t总成绩t平均

14、分n); for(i=0;i<N;i+)printf (,z%dt%dt%st%. lft%. lft%. lft%. lft%. lfn,z, i+1, stuij. number,stuEiL name, stuEiL MT, stui. EN, stui PH, stui_ sum, stui. ave);printf (请输入要查询学生的学号:);scanf&k);for(i=0;i<N;i+)if(stui. number=k) printf (名次t学号t姓名t数学t英语t物理t总成绩t平均 分n);printf (z,%dt%dt%st%. lft%. lft

15、%. lft%. lft%. lfnz/, i+1, stui. nu mber, stui. name, stuEiL MT, stuiZ. EN, stui. PH, stui. sum, stui. ave)9break;)if (i=NT) printf ("输入错误! n);printf(请重新输入要查询学生的学号:);scanf&k);i 二0;实践练习3主要代码实现:struct student stu30;do printf (请输入学生的总人数(不超过30人):);scanf("%d", &N);while(N>30);fo

16、r(i=0;i<N;i+)printf ("请输入第%d个学生的学号:“,i+1);scanf (%d,. number);printf (请输入学生的姓名:);scanf (,z%s,z, stuil. name);printf (“请输入数学的成绩:);scanfMT);printf (请输入英语的成绩:);scanf (z,%f,z, &stuZiL EN);printf (请输入物理的成绩:);scanfPH);stui. sum=stui. MT+stui. EN+stui. PH;stui. ave=stui. sum/3;)Sort(stu, N);Que

17、ry (stu, X);save(stu, N);实践练习4程序一共有两个界面,分别是用户登录界面、学生信息操作界面, 用户登录界面:即用户登录,其中设置用户第一次登录时必须修改密码。代码实现:while (1)printf,");欢迎进入学生信息查询系统n);printf(=");用户登录 nn);/*验证登陆用户*/*调用用户菜单函数*/printf Cntttt学生信息查询系统nn);for(i=0;i<80;i+) printf("ttt for(i=0;i<80;i+) printf("tttt number=PWD (); Men

18、u(number);学生信息操作界面:有平均成绩降序排序、姓名升序排序、学号查询、姓名 查询、学院学生列表、平均成绩统计、修改用户密码七个选择。代码实现:while (1)t2.姓名升序排序n")t4.根据姓名查询n)t6.平均成绩统计统)for (i=0;i<80;i+) printf("="); printf Cnttl.平均成绩降序排序 printf Ctt3.根据学号查询 printf ("tt5.根据学院查询 printf ("tt7.修改用户密码nn); for (i=0;i<80;i+) printf (二);prin

19、tf (请输入您的选择(选择(0)退出):);scanf(d,&k);if (k=0) break;switch(k)case 1: sort (head);break;/*平均成绩降序排序*/case 2: sortl (head);break;case 3: search (head);break;case 4: searchi (head);break;case 5: search2(head);break;case 6: print (head);break;case 7: changpwd(head, number);break;/*姓名升序排序*/ /*根据学号查询*/ /

20、*根据姓名查询*/ /*根据学院查询*/ /*平均成绩统计*/*修改密码*/default : printf(输入错误,请重试!n:);程序运行后,首先需要验证用户的合法性,验证不成功重新进行验证,可以 重复验证。笫一次登录系统必需修改用户密码(密码初始为nnii),密码有约 束条件(密码长度必需6位以上,密码必需包含大小写字母,数字,和或或“*”),符合了要求才能通过。登录成功后可以进行用户操作(程序设置 按键0返回上一级目录)。流程图如下:实践练习18四、运行分析暨正常运行,满足实践内容的要求请输入一个1100之间的数:50 I Wrong?|loo largeI请输入一个11则之间的数:

21、25Wrong?Too small|甫输入一个工工函之间的数:38 Wrung?Too large清输入一个1100之间的数:31UvongfToo small请输入一个11所之间的数门4Wrong?Too largeI清输入一个1100之间的数:33 Bight!Num =6Press any key to continue七:¥靛¥(:活言¥c运言舞S¥Debug¥5§的豉2.ex叽lloo small请输入一个1工西之间的数h4 I Wrong?I "loo snail请输入一个1100之间的数:25Wrong!Too

22、 snail请输入一个1100之间的数:36Wrong?ioo snail请输入一个1四之间的数:84Wrong?Ioo large清输入一个的之间的数:63Wrong?Too large请输入一个0。之间的数:95VJrong?Too large请输入一个11。之间的数:25Wrung?Too small是否继续游戏? <1,2.N>1I诗榆人一个1 100之间的数实践练习2程序正常运行,满足实践内容的要求16士口0八 A:-w :51:+rr:4 JlKHn :4n L成单:1之之一生簪请请请请请请清清请请请不不平平分40 6源As030 559B 值 煲 为B 值 煲 为为

23、当翅物理烈瞽栩及招豆输 ,叵物理总成绩平均分85.0259.086.376.0248.082.780.024?.082.3物理 7G.0总成绩 248.0平均分 82.7英语 76.0 87.0 92.0英语 87.0寸 B 值 负寸 nn 值 负号当号当号当号当号当号当M 噱噱噱嚎噱萼 生蟹蛰蛰*?工2 ”9WSJSC亍平平 一第某第某第某第某第某第某的的及及人人人人人人人人人人人人籍人欠刀一980809 - >学弟学数英物用学数英梨学数英鹫 aaaaaaaaaaaaaaaa 3理理糊糊次 请请请请请请请诗诗诗诗诗诗诗诗It技名1匕舞姓成成热生11生学诒理如的争语理34±|学

24、语理,旱10丹二:二, 5 , 二二;姓 兰 美 C 嘉绩蕾舂绩葡广基绩绩序 M姓成成靡号琴号ti7685字美8587-s盂757280fin千名琴s一区的的5-的的的取F的的的的低号 - Lli- -A/n - - 77 - -LI) - -7. ,: » 生学询号30查学20 要人13清名2实践练习3程序正常运行,满足实践内容的要求. E :¥装¥<2活言¥o运言实?S¥Debug¥ig投辐程2.d3过10息成绩平均分249.083.0245.081.7244.081.3总成绩 245.0平均分 81.7物理86.089.070.0物理89.0学.0数9876语.0tx 英76U.ik: : : : 向 姓密 <5.绩露,舂绩倒.易绩绩序 一口舞姓成成曩姓成成座姓成成成排 的与

温馨提示

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

评论

0/150

提交评论