下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文格式为Word版,下载可任意编辑C语言程序设计综合实习报告 课题一:用指针优化同学成果排名 一、目的 1熟识变量的指针和指向变量的的指针变量的概念和使用 2熟识数组的指针和指向数组的的指针变量的概念和使用 3. 把握冒泡法或选择法排序的算法 4. 把握函数的定义、调用、声明,以及参数的两种传递方式 二、实习环境 个人计算机,Windows 操作系统,Turbo C 2.0 或 WinTC 或 Visual C+等编译开发环境 三、实习内容与步骤 1定义一个数组 stu10存放 10 个同学的成果,从键盘输入数据,要求用指针实现 2将数组 stu10的内容输出到屏幕上,要求用指针实现 3将成
2、果数组根据从高到低进行排序,要求用指针实现 4将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成果单 5采纳指针方法,输入字符串"student score ',复制该字符串并输出(复制字符串采纳库函数或用户自定义函数) 6在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏幕截图)。 7. 在实习报告中说明学问点。 8在实习报告中说明程序设计过程中的难点、解决方法及编程小结或体会。 四、程序流程图、算法及运行结果 1.程序流程图: 2.算法: 先定义一个函数接收 10 个同学的成果,利用指针将数据保存在数组中,再定义其次个函数
3、输出所以同学的成果,同样也是使用指针,最终定义一个函数用选择排序法对成果进行由大到小的排序,将指针指向的是数组中的第一个地址,在主函数中依次调用这两个函数; 定义一个字符指针指向字符串,利用库函数中的strcpy将student score复制给字符指针,输出字符串 3.程序: #includestdio.h #includestring.h struct student int grade; int num; stu10; void input(struct student *p) int i; for(i=0;i10;i+,p+) printf(请输入第 %-2d 个同学的成果:,i+1)
4、; scanf(%d%d,p-num,p-grade); void printout(struct student *p) int i; for(i=0;i10;i+,p+) printf(第 %-2d 个同学的成果为:%dn,i+1,p-grade); void arrow (int *p1,int *p2,int *px,int *py) int t,m; t=*px; *px=*py; *py=t; m=*p1; *p1=*p2; *p2=m; void place(struct student stu) int i,j; for(i=1;i10;i+ ) for(j=0;j10-i;j
5、+) if (stuj.gradestuj+1.grade) arrow(stuj.num,stuj+1.num,stuj.grade,stuj+1.grade); int main(void) struct student stu10,*ptr; int i; char string100,*s; s=string;ptr=stu; input(ptr); printout(ptr); place(stu); printf(排序后的成果单为:n); for(i=0;i10;i+) printf(第 %-2d 名 %-2d %-5dn,i+1,stui.num,stui.grade); pri
6、ntf(n); strcpy(s,student score); printf(%sn,string); 4.运行结果: 五、学问点、难点及解决方法。 主要考察的是利用指针作为函数参数以及指针数组的学问点,如何使指针指向数组并能将值返回给主函数是一个难点 首先定义一个整型指针指向数组 stu的首地址,在自定义函数中运用循环结构实现指针的移动并分别存储各个同学的成果返回给主函数 六、编程小结或体会。 编程时除了留意指针与函数如何调用外,还要留意细节问题,比如自定义变量类型的统一,循环结构的循环次数等等,要谨慎对待 课题二:同学成果单制作 一、目的 1把握结构体变量及数组的定义、赋值、初始化、输入
7、、输出 2结构体数组的操作。 二、实习环境 个人计算机,Windows 操作系统,Turbo C 2.0 或 WinTC 或 Visual C+等编译开发环境 三、实习内容与步骤 1定义一个结构体数组,存放 10 个同学的学号,三门课的成果 2从键盘输入 10 个同学的以上内容 3输出单门课成果最高的同学的学号、以及该门课程的成果 4输出三门课程的平均分数最高的同学的学号、姓名及其平均分 5将 10 个同学根据平均分数从高到低进行排序,输出结果,格式如下所示: number name math Chinese English average 103 tom 90 90 100 95 101 a
8、lice 90 80 70 80 6在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。 7在实习报告中说明学问点。 8在实习报告中说明程序设计过程中的难点、解决方法及编程小结或体会 四、程序流程图、算法及运行结果 1.程序流程图: 2.算法: 先定义一个结构体,存储同学的各项信息,定义一个结构体指针指向结构体数组,第一个函数比较每个同学单门课的成果,返回每一门课最高分同学的 stu 的下标;其次个函数比较每个同学的平均分,返回平均分最高的同学;第三个函数主要根据平均分凹凸对同学进行排序,通过循环和选择排序法实现指针的移动以及重新排列,主函数中依次调用这三个函数
9、 3.程序: #includestdio.h #define N 10 struct student long number; char name20; float grade3; float average; stu10; int hanshu_best(struct student *p,int m) int q,num; float a; a=p-gradem; num=0; for(q=0;qN-1;q+) if(p+q)-gradema) a=(p+q)-gradem; num=q; return num; int hanshu_average(struct student *p)
10、int i,m,index; float a; for(m=0;mN;p+,m+) p-average=0; for(i=0;i3;i+) p-average=p-average+p-gradei; p-average=p-average*1.0/3; a=p-average; for(m=0;mN;p+,m+) if(p-averagea) a=p-average; index=m; else index=0; return index; void hanshu_place(struct student stu) int i,j; struct student t; for(i=0;iN;i
11、+) for(j=i;jN-1;j+) if(stuj+1.averagestui.average) t=stuj+1; stuj+1=stui; stui=t; void main() struct student stu10,*ptr; int i,j,index,m,num; float average; ptr=stu; for(i=0;iN;i+) printf(请输入第%d 个同学的学号、姓名及三科成果:n,i+1); scanf(%ld%s,stui.number,); for(j=0;j3;j+) scanf(%f,stui.gradej); printf(n
12、); for(m=0;m3;m+) num=hanshu_best(ptr,m); printf( 学 号 %ld : %-10s 最 高 分 % -8.2fn,stunum.number,,stunum.gradem); index=hanshu_average(ptr); printf(n 三门课平均分最高的同学信息是:n); printf( 学 号 %ld : %-10s 平 均分 %-8.2fn,stuindex.number,,stuindex.a verage); printf(n10 个同学由高分到低分排名为:n); printf(
13、number name Math Chinese English averagen); hanshu_place(ptr); for(i=0;iN;i+) printf(%-10ld%-10s%,stui.number,); for(j=0;j3;j+) printf(%-10.2f,stui.gradej); printf(%-10.2fn,stui.average); 4.运行结果: 五、学问点、难点及解决方法。 主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结构体并返回我们所要的数值 先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址,在
14、自定义函数中通过指针的运算实现数组的运算,并返回相应的值 六、编程小结或体会。 在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。 把握结构体指针的技巧可以解决许多问题,使自己的程序具有解决多个简单问题的力量,以后多练习此类的程序设计问题,使自己更加娴熟 课题三:同学成果文件管理 一、目的 1把握文件指针的概念和运用 2把握文件的相关操作:打开、读、写、关闭 3把握文件的定位操作 二、实习环境 个人计算机,Windows 操作系统,Turbo C 2.0 或 WinTC 或 Visual C+等编译开发环境 三、实习内容与步骤 1定义一个结构体数组,存放 10 个同学的学号,三门
15、课的成果 2从键盘输入 10 个同学的以上内容,存入文件 stud.txt,关闭文件 3打开 stud.txt 文件,将数据读出,查看是否正确写入,关闭文件。 4打开文件 stud.txt 文件,读出数据,将 10 个同学根据平均分数从高到低进行排序, 分别将结果输出到屏幕上和另一文件 studsort.txt 中。 5在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。 6在实习报告中说明学问点。 7在实习报告中说明程序设计过程中的难点、解决方法及编程小结或体会。 四、程序流程图、算法及运行结果 1.程序流程图: 2.算法: 首先创建一个可读可写的新文件 st
16、ud.txt,键入十个同学的信息并储存在文件中,关闭程序;打开文件 stud.txt,读出文件中的信息并输出,检查有无错漏,并根据平均分通过选择排序法对同学由高到低排序,关闭程序;将排好序的信息输出并存储在新的可写文件 studsort.txt 中 3.程序: #includestdio.h #includestdlib.h #define N 10 struct student long num; char name20; int grade3; stu10; int main(void) FILE *fp,*fpp; struct student stu10,t; float averag
17、e100; int i=0,j; if(fp=fopen(stud.txt,w+)=NULL) printf(该文件打开失败!); exit(0); for(i=0;iN;i+) printf(第 %-2d 个同学的学号、姓名及三门课成果:n,i+1); scanf(%ld%s,stui.num,); fprintf(fp,第%-2d 个同学的学号、姓名及三门课成果:n,i+1); fprintf(fp,%ld %-5s,stui.num,); for(j=0;j3;j+) scanf(%d,stui.gradej); fprintf(fp,%d ,stui
18、.gradej); fprintf(fp,n); if(fclose(fp) printf(该文件无法正常关闭!n); exit(0); if(fp=fopen(stud.txt,r+)=NULL) printf(该文件打开失败!); exit(0); printf(n); for(i=0;iN;i+) printf(第%d 个同学的学号、姓名及三门课成果:n,i+1); fscanf(fp,%ld%s,stui.num,); printf(%ld %-5s,stui.num,); for(j=0;j3;j+) fscanf(fp,%d,stui.grade
19、j); printf(%d ,stui.gradej); printf(n); if(fclose(fp) printf(该文件无法正常关闭!n); exit(0); if(fp=fopen(stud.txt,r+)=NULL) printf(该文件打开失败!); exit(0); for(i=0;iN;i+) fscanf(fp,%ld%s,stui.num,); for(j=0;j3;j+) fscanf(fp,%d,stui.gradej); for(i=0;iN;i+) for(j=0;j3;j+) averagei=averagei+stui.gradej; ave
20、ragei=averagei*1.00/3; for(i=0;iN-1;i+) for(j=i;jN;j+) if(averagej+1averagei) t=stuj+1; stuj+1=stui; stui=t; if(fclose(fp) printf(该文件无法正常关闭!n); exit(0); if(fpp=fopen(studsort.txt,w+)=NULL) printf(该文件打开失败!); exit(0); printf(n 由高到低排序为:n); for(i=0;iN;i+) printf(%ld %-5s,stui.num,); fprintf(fpp
21、,%ld %-5s,stui.num,); for(j=0;j3;j+) fprintf(fpp,%d ,stui.gradej); printf(%d ,stui.gradej); printf(n); fprintf(fpp,n); if(fclose(fp) printf(该文件无法正常关闭!n); exit(0); 4.运行结果: 五、学问点、难点及解决方法。 主要考察对于文件信息的存储以及读取文件内的信息,难点在于如何将信息存储起来以及如何从文件中读取有效信息并显示在调式框中 首先定义一个指针指向文件,然后创建或是打开一个的文件,留意文件的类型和打开方式,假如是写入
22、信息则用 fprintf,假如是读取信息则是fscanf,留意写入和读取的书写格式,前面许注明指向该文件的指针 六、编程小结或体会。 通过文件的学习,以后调试程序后还可以将信息永久的保存起来随时使用或更改,不需要使用一次就输入一次,便利又省时间, 课题四:链表的创建与使用 一、目的 1把握单向链表的概念 2把握单向链表的创建、查找、删除方法 二、实习环境 个人计算机,Windows 操作系统,Turbo C 2.0 或 WinTC 或 Visual C+等编译开发环境 三、实习内容与步骤 1创建一个单向链表,存放 10 个同学的学号,并输出这种 10 个同学的信息。 2在链表中查找指定学号的同
23、学,输出其姓名。 3在链表中删除指定学号的同学,然后输出其余同学的信息。 4在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。 5在实习报告中说明学问点。 6在实习报告中说明程序设计过程中的难点、解决方法及编程小结或体会。 四、程序流程图、算法及运行结果 1.程序流程图: 2.算法: 用指针处理单向链表,定义一个头指针,尾指针,通过尾指针的移动实现数据信息的存储与读取;删除结点时,应当先将要删除结点前后的结点连上,然后再将其删除,保证链表不会"断' 。 3.程序: #includestdio.h #includestdlib.h #defin
24、e N 10 #define len sizeof(struct student) struct student long num; char name20; struct student *next; ; void search(struct student *head) long number; struct student *p; p=head; printf(请输入要查找的同学学号:); scanf(%ld,number); do if(p-num=number) printf(%-15sn,p-name); p=p-next; while(p!=NULL); void cdelete(struct student *q) struct student *p1,*p2; long count; printf(请输入你要删除的同学学号:); scanf(%ld,count); p1=q; while(count!=p1-nump1-n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团湖南公司高校毕业生招聘4人考试备考试题(浓缩500题)含答案详解(新)
- 2025国家管网集团华中公司高校毕业生招聘考试真题(浓缩500题)及答案详解【必刷】
- 国家管网集团湖南公司2026届秋季高校毕业生招聘笔试备考试题(浓缩500题)附参考答案详解(b卷)
- 2026国网黑龙江省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题附答案详解(模拟题)
- 2026秋季国家管网集团西北公司高校毕业生招聘考试参考试题(浓缩500题)带答案详解(能力提升)
- 2025国网海南省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题含答案详解(精练)
- 2026秋季国家管网集团云南公司高校毕业生招聘考试备考试题(浓缩500题)附答案详解(满分必刷)
- 2026年鹰潭市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(精练)
- 2026秋季国家管网集团广西公司高校毕业生招聘笔试参考题库(浓缩500题)及参考答案详解
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘考试参考题库(浓缩500题)带答案详解(综合卷)
- 《老干妈的成功》课件
- 药物外渗的预防和处理护理课件
- 十大医药代表成功经验分享
- 以工代赈项目技能培训方案
- PLC步进指令基础
- 高低压配电房维保服务方案
- 青少年毒品预防教育-小学版
- 中级注册安全工程师考试题库附完整答案【夺冠】
- 礼修于心 仪养于行 课件-2023-2024学年高一上学期文明礼仪在心中养成教育主题班会
- 自用充电桩巡查记录表
- 国有企业领导干部选拔任用流程附操作要求及模板
评论
0/150
提交评论