《C语言程序设计》综合实习报告

用指针优化学生成绩排名一、目的1 熟悉变量的指针和指向变量的的指针变量的概念和使用2熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或WinTC或Visual C+等编译开发环境三、实习内容与步骤1 定义一个数组stu1O存放10个学生的成绩,从键盘输入数据,要求用指针实现2将数组stu10的内容输出到屏幕上,要求用指针实现3 将成绩数组按照从高到低进行排序,要求用指针实现4将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序 后的成绩单5采用指针方法,输入字符串“ student score ” ,复制该字符串并输出(复制字符串 采用库函数或用户自定义函数)6 在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏 幕截图)。7.在实习报告中说明知识点。8在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1. 程序流程图:开始对成绩排序I输出排序好的成结束复 制比较成绩的student2. 算法:先定义一个函数接收10个学生的成绩,利用指针将数据保存在数组中,再定义第 二个函数输出所以学生的成绩,同样也是使用指针,最后定义一个函数用选择排序法 对成绩进行由大到小的排序,将指针指向的是数组中的第一个地址,在主函数中依次 调用这两个函数;定义一个字符指针指向字符串,利用库函数中的strcpy将student score 复制给字符指针,输出字符串3. 程序:#in cludestdio.h#in cludestri ng.hstruct stude ntint grade;int num;stu1O;void in put(struct stude nt *p) int i;for(i=0;i10;i+,p+) printf(请输入第%-2d个学生的成绩:,i+1);sca nf(%d%d,&p-n um,&p-grade); void prin tout(struct stude nt *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+)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); printf(n);strcpy(s,student score);printf(%sn,string);4. 运行结果: 五、知识点、难点及解决办法主要考察的是利用指针作为函数参数以及指针数组的知识点, 如何使指针指向数组并能 将值返回给主函数是一个难点首先定义一个整型指针指向数组 stu 的首地址,在自定义函数中运用循环结构实现指 针的移动并分别存储各个学生的成绩返回给主函数六、编程小结或体会。编程时除了注意指针与函数如何调用外, 还要注意细节问题, 比如自定义变量类型的统 一,循环结构的循环次数等等,要谨慎对待课题二:学生成绩单制作一、目的1掌握结构体变量及数组的定义、赋值、初始化、输入、输出 2结构体数组的操作。二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或WinTC或Visual C+等编译开发环境三、实习内容与步骤1定义一个结构体数组,存放 10个学生的学号,姓名,三门课的成绩 2从键盘输入 10 个学生的以上内容 3输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩 4输出三门课程的平均分数最高的学生的学号、姓名及其平均分 5将 10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:number name math Chinese English average103 tom 909010095101 alice 908070806在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕 截图)。7在实习报告中说明知识点。 8在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会四、程序流程图、算法及运行结果1. 程序流程图:开始根据返回值输出相应的学生比狡每个学生单门课成绩结束2. 算法:先定义一个结构体,存储学生的各项信息,定义一个结构体指针指向结构体数组, 第一个函数比较每个学生单门课的成绩,返回每一门课最高分学生的stu的下标;第二个函数比较每个学生的平均分,返回平均分最高的学生;第三个函数主要按照平均 分高低对学生进行排序,通过循环和选择排序法实现指针的移动以及重新排列,主函 数中依次调用这三个函数3. 程序:#in cludestdio.h#define N 10struct stude ntlong nu mber;char n ame20;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) 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; elseindex=0;return index;void hanshu_place(struct student stu) int i,j;struct student t;for(i=0;iN;i+)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( 请输入第c个学生的学号、姓名及三科成绩:n,i+1); scanf(%ld%s,&stui.number,stui.name);for(j=0;j3;j+)scanf(%f,&stui.gradej); printf(n);for(m=0;m3;m+) num=hanshu_best(ptr,m);printf( 学 号 %ld姓 名 :%-10s最 高 分-8.2fn,stunum.number,stunum.name,stunum.gradem); index=hanshu_average(ptr);printf(n 三门课平均分最高的学生信息是: n);printf(学 号 %ld姓 名 :%-10s平分 -8.2fn,stui ndex. nu mber,stui ndex. name,stui ndex.avera ge);printf(n10 个学生由高分到低分排名为: n);printf(number name Math Chinese English averagen);hanshu_place(ptr);for(i=0;iN;i+) printf(%-10ld%-10s%,stui.number,stui.name);for(j=0;j3;j+)printf(%-10.2f,stui.gradej); printf(%-10.2fn,stui.average);4. 运行结果:五、知识点、难点及解决办法主要考察的是结构体指针的运用, 比较难的地方也就是如何将指针指向结构体并返回我 们所要的数值先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址,在自定义 函数中通过指针的运算实现数组的运算,并返回相应的值六、编程小结或体会。 在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。 掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复杂问题的能 力,以后多练习此类的程序设计问题,使自己更加熟练课题三:学生成绩文件管理一、目的1掌握文件指针的概念和运用2掌握文件的相关操作:打开、读、写、关闭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在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕 截图)。6在实习报告中说明知识点。 7在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1. 程序流程图:开始键入每个学生的信息按平均分高低排序擀文件中的信息渎出略学生信Bff入文件中2. 算法:首先创建一个可读可写的新文件stud.txt ,键入十个学生的信息并储存在文件中, 关闭程序;打开文件stud.txt ,读出文件中的信息并输出,检查有无错漏,并按照平 均分通过选择排序法对学生由高到低排序,关闭程序;将排好序的信息输出并存储在 新的可写文件studsort.txt 中3. 程序: #in cludestdio.h#in cludestdlib.h #define N 10 struct stude nt long num;char n ame20;int grade3;stu10;int main(v oid) FILE *fp,*fpp;struct student stu10,t;float average100;int i=0,j;if(fp=fope n(stud.txt,w+)=NULL) printf(该文件打开失败!);exit(0); for(i=0;iN;i+) printf( 第 %-2d 个学生的学号、姓名及三门课成绩: n,i+1);scanf(%ld%s,&stui.num,stui.name);fprin tf(fp,第-2d个学生的学号、姓名及三门课成绩:n,i+1);fprintf(fp,%ld %-5s,stui.num,stui.name);for(j=0;j3;j+) scanf(%d,&stui.gradej);fprintf(fp,%d ,stui.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,stui.name);printf(%ld %-5s,stui.num,stui.name); for(j=0;j3;j+) fscanf(fp,%d,&stui.gradej); 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,stui.name);for(j=0;j3;j+) fscanf(fp,%d,&stui.gradej); for(i=0;iN;i+) for(j=0;j3;j+)averagei=averagei+stui.gradej;averagei=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,stui.name);fprintf(fpp,%ld %-5s,stui.num,stui.name); 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. 运行结果:五、知识点、难点及解决办法主要考察对于文件信息的存储以及读取文件内的信息,难点在于如何将信息存储起 来以及如何从文件中读取有效信息并显示在调式框中首先定义一个指针指向文件,然后创建或是打开一个的文件,注意文件的类型和打 开方式,如果是写入信息则用 fprintf ,如果是读取信息则是 fscanf ,注意写入和读取 的书写格式,前面许注明指向该文件的指针六、编程小结或体会。通过文件的学习,以后调试程序后还可以将信息永久的保存起来随时使用或更改, 不需要使用一次就输入一次,方便又省时间,课题四:链表的创建与使用一、目的1掌握单向链表的概念 2掌握单向链表的创建、查找、删除方法二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或WinTC或Visual C+等编译开发环境三、实习内容与步骤1创建一个单向链表,存放 10 个学生的学号,姓名,并输出这种 10 个学生的信息。 2在链表中查找指定学号的学生,输出其姓名。3在链表中删除指定学号的学生,然后输出其余学生的信息。 4在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕 截图)。5在实习报告中说明知识点。 6在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1. 程序流程图:开始 主函数创建链表将学生信息存储进 键入10个学生的信删 除 指 定 学 号 的 学查 找 指 定 学 号 的 学输出该学生姓输出其余学生信4V2. 算法:用指针处理单向链表,定义一个头指针,尾指针,通过尾指针的移动实现数据信 息的存储与读取;删除结点时,应该先将要删除结点前后的结点连上,然后再将其删 除,保证链表不会“断”。3. 程序:#i ncludestdio.h#i ncludestdlib.h#defi ne N 10#defi ne len sizeof(struct stude nt)struct stude ntlong num;char n ame20;struct stude nt *n ext;void search(struct stude nt *head) long nu mber;struct stude nt *p;p=head;printf(请输入要查找的学生学号:);scan f(%ld,&n umber);do if(p-num=nu mber)prin tf(%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-num&p1-next!=NULL) p2=p1; p1=p1-next; ; if(count=p1-num) if(p1=q) q=p1-next; elsep2-next=p1-next; printf(delete :%ldn,p1-num); int main(void) struct student *head,*tail,*p,*p1,*p2,*q;int n=0,i;long number,NUM;prin tf( 请输入d(学生的信息:n,N); p=tail=(struct student *)malloc(len); head=NULL;scanf(%ld%s,&p-num,p-name); while(p-num!=0) n+=1;if(n=1) head=p;else tail-next=p;tail=p;p=(struct student *)malloc(len); scanf(%ld%s,&p-num,p-name); ; tail-next=NULL;printf(n 这 10 个学生的信息为: n); p=head;if(head!=NULL) do printf(%-15ld%-15sn,p-num,p-name); p=p-next; while(p!=NULL); search(head); q=head;cdelete(q);do printf(%-15ld%-15sn,q-num,q-name); q=q-next; while(q!=NULL);4. 运行结果:五、知识点、难点及解决办法。主要考察利用指针制作单向链表,难点在于各个结点的链接以及对于链表的输出,删 除结点时如何不让链表断开定义一个头指针和一个尾指针, 通过尾指针的移动实现结点的链接, 删除结点时先将要 删除结点两端的结点链接上,再删除。六、编程小结或体会。 制作单向链表是对指针的充分运用,可以节省内存,但是要熟练掌握还是有

c语言程序综合实习学生成绩,C语言程序设计综合实习报告-资源下载人人文库网...相关推荐

  1. c语言程序综合实习学生成绩,C语言程序设计综合实习报告

    课题一:用指针优化学生成绩排名 一.目的 1.熟悉变量的指针和指向变量的的指针变量的概念和使用 2.熟悉数组的指针和指向数组的的指针变量的概念和使用 3. 掌握冒泡法或选择法排序的算法 4. 掌握函数 ...

  2. c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...

    题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...

  3. C语言学生成绩简单,C语言实现简单学生成绩管理系统.pdf

    C语言实现简单学生成绩管理系统 这篇文章主要为大家详细介绍了C语言实现简单学生成绩管理系统,具有 定的参考价值,感兴趣的小伙伴们可以 参考 下 本文实例为大家分享了C语言实现学生成绩管理系统的具体代码 ...

  4. c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统

    摘 要 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式 ...

  5. c语言用链表实现成绩管理系统,C语言写的学生成绩管理系统(链表)

    <C语言写的学生成绩管理系统(链表)>由会员分享,可在线阅读,更多相关<C语言写的学生成绩管理系统(链表)(6页珍藏版)>请在人人文库网上搜索. 1.include#inclu ...

  6. c语言课程设计查找分数与删除元素,c语言课程设计学生成绩管理系统

    <c语言课程设计学生成绩管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计学生成绩管理系统(31页珍藏版)>请在人人文库网上搜索. 1.河南理工大学计算机科学与技术学院 ...

  7. C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码

    <C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...

  8. c语言实现创建学生成绩表,实现插入、删除和统计等管理功能。

    c语言实现创建学生成绩表,实现插入.删除和统计等管理功能. #include <stdio.h> #include <stdlib.h> #include <malloc ...

  9. C语言项目实战——学生成绩系统管理

    C语言项目实战 --学生成绩管理系统 项目开发基本流程 可行性分析和项目开发计划 技术可行性:软硬件.技术人员条件.项目是否能实现 经济可行性:成本估算.开发时间.经济效益评估,看这个项目是否有开发价 ...

最新文章

  1. c++ include 路径_头文件中,#include使用引号“”和尖括号lt;gt;有什么区别?
  2. 关于无人驾驶商业化现状的一个小研究
  3. Codeforces-gym-101020 problem C. Rectangles
  4. mysql更新一条语句_MySQL一条更新语句是如何执行的
  5. 鹿邑2021高考成绩查询,鹿邑中考成绩查询2021
  6. Log4j2架构分析与实战
  7. ARP 协议 理解
  8. css中的伪类 之 first-child
  9. [转]Linux下用gcc/g++生成静态库和动态库(Z)
  10. Nmap命令参数介绍
  11. 32 道常见的 Kafka 面试题
  12. Ubuntu18新系统火狐浏览器无法播放音乐和视频
  13. window下安装ruby与sass(附ruby)
  14. FTP,SFTP,FTPS,TF区别
  15. 第四代编程语言_几代编程语言
  16. java学习思维导图
  17. 通过面试思考平时的学习
  18. eNSP实验日记三(小型企业网络搭建)
  19. 如何才能成为一个程序员
  20. Crowded Cows(洛谷P3088)

热门文章

  1. python 实现简单的session登录
  2. 为什么android studio的tools中没有android选项
  3. TextRank的原理和TextRank4zh的简单使用
  4. 北理工计算机学院推荐导师,北京理工大学
  5. Nature新规:用ChatGPT写论文可以,列为作者不行
  6. 可爱卡通幼儿教学课件PPT模板
  7. 计算机男简历上可以写擅长各种游戏吗,简历中的计算机水平
  8. BAYC疯狂的一周:名人、巨鲸加持,无聊猿彻底与“穷人”说再见
  9. chrome无法安装插件问题的解决
  10. java代码命名规范