




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计综合实习报告This manuscript was revised by the office on December 10, 2020.课题一:用指针优化学生成绩排名一、目的1. 熟悉变量的指针和指向变量的的指针变量的概念和使用2. 熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,Turbo C 2. 0或WinTC或Visual C+等 编译开发环境三、实习内容与步骤1. 定义一个数组stu10存放10个学生的成绩,从键盘输入数据,要求用指
2、针实现2. 将数组stuElO的内容输出到屏幕上,要求用指针实现3. 将成绩数组按照从高到低进行排序,要求用指针实现4. 将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单5. 采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)6. 在实习报告中画出程序流程图,说明程序设汁的算法,附主要程序段运行结果(屏幕截图)。7. 在实习报告中说明知识点。8. 在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体 会。四、程序流程图、算法及运行结果1 程序流程图:开始2. 算法:先定义一个函数接收10
3、个学生的成绩,利用指针将数据保存在数组 中,再定义第二个函数输岀所以学生的成绩,同样也是使用指针,最后定 义一个函数用选择排序法对成绩进行山大到小的排序,将指针指向的是数 组中的第一个地址,在主函数中依次调用这两个函数;定义一个字符指针指向字符串,利用库函数中的strcpy将student score复制给字符指针,输出字符串3. 程序:#includestdio. h#includez/string hstruct studentint grade;int num;stu10;void input(struct student *p) int i;for(i=0;inum, &p-grade
4、) ;void printout(struct student *p) int i;for(i=0;igrade);void arrow (int *pl,int *p2,int *px,int *py) int t, m;t=*px;*px=*py; *py=t;m=*p1:*pl=*p2;*p2=m;void place(struct student stu) int i, j;for(i=l;i10;i+ )for(j=0;j10-i;j+)if (stuj gradestuj+1 grade)arrow(&stuj num, &stuj+1 num, &stuj grade, &stu
5、j+1 grade);int main(void) struct student stu10, *ptr;int i;char stringLlOO.,*s;s=string;ptr=stu;input(ptr);printout(ptr);place(stu);printf r排序后的成绩单为:n);for(i=0;i10;i+)printf 第-2d 名 %-2d %-5dnz,, i+1, stui num, stui grade);printf(n);strcpy (s, /zstude nt score);printfstring);4. 运行结果:五、知识点、难点及解决办法。主要考
6、察的是利用指针作为函数参数以及指针数组的知识点,如何使指针 指向数组并能将值返回给主函数是一个难点首先定义一个整型指针指向数组stu的首地址,在自定义函数中运用循 环结构实现指针的移动并分别存储各个学生的成绩返回给主函数六、编程小结或体会。编程时除了注意指针与函数如何调用外,还要注意细节问题,比如自定义 变量类型的统一,循环结构的循环次数等等,要谨慎对待课题二:学生成绩单制作一、目的1. 掌握结构体变量及数组的定义、赋值、初始化、输入、输出2. 结构体数组的操作。二、实习环境个人计算机,Windows操作系统,Turbo C 2. 0或WinTC或Visual C卄等 编译开发环境三、实习内容
7、与步骤1. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2. 从键盘输入10个学生的以上内容3. 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩4. 输出三门课程的平均分数最高的学生的学号、姓名及其平均分5. 将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:numbernamemathChineseEnglishaverage103tom909010095101alice908070806. 在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行 结果(屏幕截图)。7. 在实习报告中说明知识点。8. 在实习报告中说明程序设计过程中的难点、
8、解决办法及编程小结或体会四、程序流程图、算法及运行结果1程序流程图:2. 算法:先定义一个结构体,存储学生的各项信息,定义一个结构体指针指 向结构体数组,第一个函数比较每个学生单门课的成绩,返回每一门课 最高分学生的Stu的下标;第二个函数比较每个学生的平均分,返回平 均分最高的学生;第三个函数主要按照平均分高低对学生进行排序,通 过循环和选择排序法实现指针的移动以及重新排列,主函数中依次调用 这三个函数3. 程序:#includestdio. h#define N 10struct studentlong number; char name20; float grade3;float ave
9、rage;stu10;int hanshu_best(struct student *p,int m) int q, num;float a;&二P-gradem;numO;for (q=0;qgradema) a= (p+q)-gradem;num=q;return num;int hanshu_average(struct student *p) int i, m, index;float a;for(m=0;maverage=O;for(i=0;iaverage=p-average+p-gradei;p-average=p-average*1. 0/3;a=p-average;for(m
10、=0;maveragea) a=p-average;index=m; elseindex二0;return index;void hanshu_place(struct student stu) int i, j;struct student t:for(i二O;iN;i+)for(j=i;jstui average) t=stuj+l; stuj+l=stui; stui=t;void main()struct student stu10Z, *ptr;int i, j, index, m, num;float average:ptr=stu;for(i=0;iN;i+)printfC请输入
11、第%d个学生的学号、姓名及三科成绩:n,i+l);scanf (,z%ld%s,z, &stui number, stuiZ name);for(j=0;j3;j+)scanf(%f,&stui. gradejj) ;printf(n);for(111二0;1113;111+) num=hanshu_best(ptr, m);printf C学号Id姓名:%10s最高分 -8. 2fn,z, stunum number, stunum name, stunum gradem) ;index=hanshu_average(ptr);printf(zzn三门课平均分最高的学生信息是:); prin
12、tfC学号Id姓名:%-10s平均分%-8. 2fn,z, stuEindex number, stuindex name, stuindex average);printf CnlO个学生曲高分到低分排名为:n);printf (z,number nameMathChinese Englishaveragen,z);hanshu_place(ptr);for(i=0;iN;i+)printf (,z%-101d%-10s%,z, stui mimbeis stui name);for(j=0;j3;j+)printf (z/%-10. 2f, stuEij. gradej);printf (
13、,z%-10. 2fn, stui. average);)4. 运行结果:五、知识点、难点及解决办法。主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结 构体并返回我们所要的数值先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地 址,在自定义函数中通过指针的运算实现数组的运算,并返回相应的值六、编程小结或体会。在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复 杂问题的能力,以后多练习此类的程序设计问题,使自己更加熟练课题三:学生成绩文件管理一、目的1. 掌握文件指针的概念和运用2. 掌握
14、文件的相关操作:打开、读、写、关闭3. 掌握文件的定位操作二、实习环境个人计算机,Windows操作系统,Turbo C 2. 0或WinTC或Visual C+等编译 开发环境三、实习内容与步骤1. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2. 从键盘输入10个学生的以上内容,存入文件stud, txt,关闭文件3. 打开stud, txt文件,将数据读出,查看是否正确写入,关闭文件。4打开文件stud, txt文件,读出数据,将10个学生按照平均分数从高到低进 行排序,分别将结果输出到屏幕上和另一文件studsort, txt中。5. 在实习报告中画出程序流程图,说明程
15、序设计的算法,附主要程序段及运行 结果(屏幕截图)。6在实习报告中说明知识点。7在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1. 程序流程图:2. 算法:首先创建一个可读可写的新文件Stud, txt,键入十个学生的信息并储 存在文件中,关闭程序;打开文件stud, txt,读出文件中的信息并输出, 检查有无错漏,并按照平均分通过选择排序法对学生由高到低排序,关闭 程序;将排好序的信息输出并存储在新的可写文件studsort, txt中3. 程序:#includestdio. h#includestdlib. hftdefine N 10str
16、uct studentlong num;char name20:int grade3;stu10;int main(void) FILE *fp, *fpp;struct student stu10, t;float average100Z;int i=0, j;if (fp二fopen (stud, txt, w+)=NULL)printf C该文件打开失败! ”);exit(O); for(i=0;i &stui. num, stui. name);fprintf(fp, 第%-2d个学生的学号、姓名及三门课成绩:fprintf(fp, Id %-5s, stui. num, stui.
17、name); for(j=0;j3;j+) scanf,&stui. gradej);fprintf (fp, 7/%d, stui. gradej) ;fprintf(fp, n);if(fclose(fp)printf C该文件无法正常关闭! n);exit(O); if (fp 二 f open (stud, txt, r+)=NULL)printfC该文件打开失败! ”);exit(O); printf Cn);for(i=0;iN;i+) printfC笫%(1个学生的学号、姓名及三门课成绩:n,i+l); fscanf (fp,ld%s, &stuZij. num, stuiZ.
18、name);printf (%ldstulij. num, stuiZ. name);for(j=0;j3;j+) fscanf(fp, %d, &stui. gradejj);printf(弘d , stui. gradej);printf(n);if(fclose(fp) printf C该文件无法正常关闭!n);exit(O); if(fp=fopen(stud, txt, r+)二二NULL)printf C该文件打开失败! ”);exit(O); for(i=0;iN;i+) fscanf(fp,ld%s, &stui. num, stui, name);for(j=0;j3;j+)
19、fscanf(fp,%d,&stuiZ. gradej);for(i=0;iN;i+)for(j=0;j3;j+)averageiaverage Li+stuiJ. gradej;averageri=averagei*l. 00/3;for(i=0;iN-l;i+)for(j=i;javeragei) t二stuj+l; stuj+l二stui; stui=t; if(fclose(fp)printf C该文件无法正常关闭! n);exit(0); if (fpp二f open (studsort, txt, w+) =NULL) printf C该文件打开失败! “);exit(0); pr
20、intf Cn由高到低排序为:n);for(i=0;iN;i+) printf (ld %-5s,/, stui. num, stui, name);fprintf (fpp,,z%ldstui. num, stulij. name);for(j=0;jnum=number)printf (,z%-15sn,z, p-name);p=p-next;while(p!=NULL);void cdelete(struct student *q) struct student *pl,*p2;long count:printfC请输入你要删除的学生学号:“);scanf&count);pip;while(count!=pl-num&pl-next!=NULL) p2=pl; pl=pl-next;if(count=pl-num) if(pl=q)q二pl-next;elsep2-next二pl-next;printf (z/delete :%ldn,z, pl-num) ; int main(void) struct student *hea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《金融服务营销》 测试题及答案B
- 工业园区绿色发展路径探索
- 工业智能化新材料与物联网的结合
- 工业安全与智能制造成型技术
- 工业控制系统安全技术研究报告
- 工业技术改造项目申报政策分析
- 工业机器人技术的创新与应用研究
- 工业自动化中的智能硬件产品解决方案
- 工业设计中的智能制造成型技术应用探讨
- 工业自动化与智能制造的发展趋势
- 循环经济产业链拓展项目商业计划书
- 校园网络文化建设课件
- 天然气密度计算
- 3地质勘查项目预算标准
- 过程控制课程设计-前馈-反馈控制系统仿真论文
- 【高教版】中职数学拓展模块:31《排列与组合》课件
- 招标代理公司内部监督管理制度
- 达林顿三极管
- 电力电子单相桥式整流电路设计报告
- 正常心电图及常见心律失常心电图的表现
- 主体结构工程验收自评报告
评论
0/150
提交评论