




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计课程设计 评语:考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100)专 业: 自动化 班 级: 自动化1402 姓 名: 魏万鹏 学 号: 201408623 指导教师: 侯涛 兰州交通大学自动化与电气工程学院2015 年 7月 22日1.基本题目1.1 题目打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。1.2 题目分析先把三位数的百位,十位,个位分解开,最后再计算下各位数字立方和是否等于该数本身,满足条件输出该数,不满足继续循环直到程序结束。1.3流程图基本题目的流程图如图1.1所示。如图1.1 基本题目流程
2、图1.4 源程序#include<stdio.h>int main()int i,j,k,n; printf("parcissus numbers aren"); for(n=100;n<1000;n+) i=n/100; j=n/10-i*10; k=n%10; if(n=i*i*i+j*j*j+k*k*k) printf("%d ",n); printf("n"); return 0;1.5 程序运行结果上述程序的运行结果如图1.2所示。图1.2 基本题目运行结果2.改错题目2.1 题目下列给定程序中,函数fun
3、的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。程序如下:#include <stdio.h>#define N 20void fun(int a,int n) int i,j,t,p;for (j=0;j<n-1;j+) p=j 加上“;”for (i=j;i,n;i+) j改为j+1if (ai<ap)p=j; j改为it=ap;ap=aj;aj=t; main()int aN=9,6,8,3,-1,i,m=5;printf("排序前
4、的数据:");for (i=0;i<m;i+)printf("%d",ai);printf("n");fun(a,m);printf("排序后的数据:");for (i=0;i<m;i+)printf("%d",ai);printf("n");2.2 错误分析本题使用fun函数的调用,来实现排序的功能。Fun函数中有两个for语句的嵌套使用,实现遍历操作。错误如下:1. 在fun函数中第二个for语句对循环次数的控制不正确。2. j的值应该赋给p,而不是i。2.3 流程图给
5、错题的流程图如图2.1所示。如图2.1 给错题的流程图2.3 改正后程序#include <stdio.h>#define N 20void fun(int a,int n)int i,j,t,p;for (j=0;j<n-1;j+)p=j;for (i=j+1;i<n;i+)if(ai<ap)p=i;t=ap;ap=aj;aj=t;main()int aN=9,6,8,3,-1,i,m=5;printf("排序前的数据:");for (i=0;i<m;i+)printf("%d ",ai);printf("
6、n");fun(a,m);printf("排序后的数据:");for (i=0;i<m;i+)printf("%d ",ai);printf("n");2.4 程序运行结果上述程序的运行结果如图2.2所示。图2.2 改错题目运行结果3.综合题目3.1 题目综合题目为:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。二、功能要求:1. 本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。2. 本系统显示这样的
7、菜单:请选择系统功能项:a、 成绩录入b、 成绩显示c、 成绩保存d、 成绩排序e、 成绩修改(要求先输入密码)f、 成绩统计(1) 显示每门课程成绩最高的学生的基本信息(2) 显示每门课程的平均成绩(3) 显示超过某门课程平均成绩的学生人数g、 退出系统3. 执行一个具体的功能之后,程序将重新显示菜单。4. 将学生成绩保存到文件中。三、算法提示:1. 数据结构:结构体类型数组。2. 数据库结构:下表构成该系统的基本数据库。姓名学号课程名称1课程名称2charCharfloatfloat四、测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治五、其它 对该系统有兴趣的同学可以
8、在实现上述基本功能后,完善系统的其它功能。3.2 设计思路 设计思路:根据系统要求,进入,输出文件,保存文件,排序,修改,统计、具体为 成绩录入,成绩显示, 成绩保存, 成绩排序, 成绩统计。以及主函数,来完成系统要求功能。在主函数中,根据使用对象不同要求,用switch语句来实现其功能。同时使用结构体将不同类型的数组放到一起便于使用。3.3 流程图1.班级学生管理系统基本框架图,如图3.1所示。班级学生成绩管理系统成绩保存退出程序成绩统计成绩修改成绩排序成绩显示成绩录入显示每门课程成绩最高的学生的基本信息显示超过某门课程平均成绩的学生人数显示每门课程的平均成绩 图3.1 班级学生成绩管理系统
9、框架图2. 主函数流程图如图3.2所示。如图3.2 主函数流程图3.修改成绩子函数流程图,如图3.3所示。如图3.3 修改成绩子函数的流程图4.成绩排序子函数流程图,如图3.4所示。如图3.4 成绩排序子函数流程图3.4 程序运行结果上述程序的运行结果如图3.5,如图3.6,如图3.7,如图3.8,如图3.9所示。如图3.5 主函数运行结果如图3.6 子函数成绩录入的运行结果 如图3.7 子函数成绩显示的运行结果如图3.8 子函数成绩排序的运行结果如图3.9 子函数成绩统计的运行结果结论通过这次课程设计,让我更加深刻的体会到C语言是一门注重上机实践课程,要想学好它,并能熟练的运用,就应该多上机
10、。将自己的想法转化为代码,进行运行。找出错误,只有这样不断地练习,才能提高自己。在综合题上面,有很多次并不能运行自己理想的结果,不断地调试,查阅资料和同学交流,最终解决问题,使自己的理论知识得到应用,这也为自己今后的学习方式提供了新的思路。这次的课设是自己的收获很大。附录 综合题源代码#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> #include<ctype.h> #define HEADER1 " -总表-n"#
11、define HEADER2 " | 学号 | 姓名 | 数学 | 语文 | 英语 | 政治 | 总分 |平均分 |名次 | n"#define HEADER3 " | 学号 | 姓名 | 数学 | 语文 | 英语 | 政治 | 总分 |平均分 |次序 | n"#define HEADER4 " |-|-|-|-|-|-|-|-|-| n"#define HEADER5 " | 学号 | 姓名 | 数学 | 语文 | 英语 | 政治 | 总分 |平均分 |n"#define END " - n"
12、#define N 10#define M 4struct Student char name60; char num60; float scoreM; float sum;struct Student studentN; /定义结构体数组 int main() /主函数 void menu(); /声明主菜单 void chengjiluru(); /声明成绩录入函数 void chengjixianshi(); /声明成绩显示函数 void chengjibaocun(); /声明成绩保存函数 void chengjipaixu(); /声明成绩排序函数 void chengjixiuga
13、i(); /声明成绩修改函数 void chengjitongji(); /声明成绩统计函数 void display(); char c,a; while(1) menu(); c=getchar(); printf("确定按Y,不确定按N!n"); a=getchar(); scanf("%c",&a); if(a!='Y'&&a!='y') /可以选择是否继续录入 break; switch(c) /采用多分支选择接结构实现对菜单程序的访问 case 'a': chengjil
14、uru(); break; case 'b': chengjixianshi(); break; case 'c': chengjibaocun(); break; case 'd': chengjipaixu(); break; case 'e': chengjixiugai(); break; case 'f': chengjitongji(); break; case 'g': exit(0); default: break; c=getchar(); printf("n"
15、); return 0;void menu() system("cls"); /执行控制台命令cls,就是CMD下面的cls,功能是清屏,清除所有显示的信息。 printf(" *n"); printf(" 欢迎使用班级成绩管理系统n"); printf(" *n"); /*系统欢迎界面*/ printf(" 请按照提示选择您所需要的相应操作:n"); printf("n"); printf("n"); printf("n"); pri
16、ntf("n"); printf(" a:成绩录入n"); /*主菜单相应选项*/ printf("n"); printf(" b:成绩显示n"); printf("n"); printf(" c:成绩保存n"); printf("n"); printf(" d:成绩排序n"); printf("n"); printf(" e:成绩修改n"); printf("n"); pri
17、ntf(" f:成绩统计n"); printf("n"); printf(" g:退出系统n"); printf("你的选择是:");void chengjiluru() int i,c; system("cls"); for(i=0;i<N;i+) printf("tttt1.录入学生信息n输入第%d个学生的信息n",i+1); printf("输入学号:"); scanf("%s",&studenti.num); ff
18、lush(stdin); /功能:清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)。 printf("输入姓名:"); scanf("%s",&); fflush(stdin); printf("数学成绩:"); fflush(stdin); scanf("%f",&studenti.score0); printf("语文成绩:"); fflush(stdin)
19、; scanf("%f",&studenti.score1); printf("英语成绩:"); fflush(stdin); scanf("%f",&studenti.score2); printf("政治成绩:"); fflush(stdin); scanf("%f",&studenti.score3); printf("nn"); printf("按Y继续录入,按N结束录入!n"); c=getchar(); scanf(&q
20、uot;%c",&c); if(c!='Y'&&c!='y') /可以选择是否继续录入 break; void chengjixianshi() FILE *fp; /文件指针 int count=0;/保存文件中的记录条数 int i,j; fp=fopen("student.txt","rb"); /以追加方式打开一个二进制文件,读,若此文件不存在,会创建此文件 if(fp=NULL) printf("n=>不能打开文件!n"); exit(0); while
21、(!feof(fp) if(fread(&studentcount,sizeof(struct Student),1,fp)=1) /一次从文件中读取一条学生成绩记录 count+; printf("n=>成功打开文件,总的记录数为 : %dn",N); printf(HEADER1); / 表头 printf(HEADER3); printf(HEADER4); for(i=0;i<N;i+) printf(" | %-9s| %-7s |",studenti.num,); for(j=0;j<M;j
22、+) printf(" %-0.1f |",studenti.scorej); studenti.sum+=studenti.scorej; printf(" %4.1f | %-4.2f |",studenti.sum,studenti.sum/4); printf(" %-2d |",i+1); printf("n"); printf(HEADER4); getchar();void chengjibaocun() FILE *fp; /文件指针 int i; fp=fopen("student.tx
23、t","wb"); /打开一个二进制文件,进行写操作,若此文件不存在,会创建此文件 if(fp=NULL) printf("n=>不能打开文件!n"); exit(0); for(i=0;i<N;i+) if(fwrite(&studenti,sizeof( struct Student),1,fp)!=1) printf("file write error!"); printf(" | %-7s | %-7s |",studenti.num,); print
24、f("n=>成功保存成绩,总的记录数为 : %dn",N); fclose(fp); /关闭文件void chengjipaixu() int i,j; for(i=0;i<N-1;i+) / 冒泡排序法 for(j=i+1;j<N;j+) if(studenti.sum<studentj.sum) /以结构体数组中.sum各元素作为比较对象 struct Student st; st=studenti; studenti=studentj; studentj=st; printf(HEADER1); / 原样输出表头 printf(HEADER2)
25、; printf(HEADER4); for(i=0;i<N;i+) printf(" | %-9s| %-7s |",studenti.num,); /负号表示左对齐 studenti.sum=0; for(j=0;j<M;j+) printf(" %0.1f |",studenti.scorej); studenti.sum+=studenti.scorej; printf(" %0.1f | %0.1f |",studenti.sum,studenti.sum/4); /没有负号表示右对齐
26、printf(" %2d |",i+1); printf("n"); printf(HEADER4); getch(); /输入字母,进入下一模块void chengjitongji() struct Student maxM; / 单门课程成绩最高记录 int i, j; int aM; float averM, sum; for(j=0;j<M;j+) /打擂台法确定每门课程的最高成绩 maxj=student0; for(i=0;i<N;i+) if(studenti.scorej>maxj.scorej) maxj=studen
27、ti; printf(HEADER5); printf("数学成绩最高学生记录:n | %-7s | %-7s |",max0.num,); for(j=0;j<M;j+) printf(" %-0.1f |",max0.scorej); printf(" %.1f | %-.2f |n",max0.sum,max0.sum/M); printf("语文成绩最高学生记录:n | %-7s | %-7s |",max1.num,); for(j=0;j<M;j+) pr
28、intf(" %-0.1f |",max1.scorej); printf(" %-.1f | %-.2f |n",max1.sum,max1.sum/4); printf("英语成绩最高学生记录:n | %-7s | %-7s |",max2.num,); for(j=0;j<M;j+) printf(" %-0.1f |",max2.scorej); printf(" %-0.1f | %-0.2f |n",max2.sum,max2.sum/4); printf(&
29、quot;政治成绩最高学生记录:n | %-7s | %-7s |",max3.num,); for(j=0;j<M;j+) printf(" %-0.1f |",max3.scorej); printf(" %3.1f | %-3.2f |n",max3.sum,max3.sum/4); for(j=0;j<M;j+) sum=0; for(i=0;i<N;i+) sum=studenti.scorej+sum; averj=sum/N; for(j=0;j<M;j+) aj=0; for(i=0;i<N;i+) if(studenti.scorej>averj) aj=aj+1; printf("n* * 数学成绩的平均分:%3.1f,超过数学成绩平均分的学生人数为:%d * *nn",aver0,a0); printf("* * 语文成绩的平均分:%3.1f,超过语文成绩平均分的学生人数为:%d * *nn"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货币防伪技术考核试卷
- 自行车的动物与植物世界考核试卷
- 幼儿园科学领域活动设计
- 生肖兔元素设计调研报告
- 传染疾病安全防控体系
- Pumitamig-生命科学试剂-MCE
- 2-Hydroxy-5-iminoazacyclopent-3-ene-生命科学试剂-MCE
- 湖北省2025年中考第三次模拟考试物理试卷(解析版)
- 2025年农业物联网精准种植技术集成与创新研究
- 基于2025年基因检测技术的遗传性疾病诊断准确性创新技术探讨报告
- 《路径规划算法》课件
- 弱电工程施工方案和施工措施
- 大学生体能训练知到智慧树章节测试课后答案2024年秋华中农业大学
- 医院机电安装工程施工方案
- 金融贷款邀约技巧
- 钨矿开采行业研究报告
- 血透护理记录书写规范
- 高血压性心脏病护理
- 【MOOC】大学物理(热学、振动波、光学、近代物理)-东北大学 中国大学慕课MOOC答案
- 《工业园区培训》课件
- 建筑机电工程抗震支架设计及施工方案
评论
0/150
提交评论