书签 分享 收藏 举报 版权申诉 / 16
上传文档赚钱

类型《C语言程序设计》综合实习报告DOC.doc

  • 上传人(卖家):2023DOC
  • 文档编号:5931392
  • 上传时间:2023-05-16
  • 格式:DOC
  • 页数:16
  • 大小:304KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《C语言程序设计》综合实习报告DOC.doc》由用户(2023DOC)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    C语言程序设计 语言程序设计 综合 实习 报告 DOC
    资源描述:

    1、课题一:用指针优化学生成绩排名一、目的1熟悉变量的指针和指向变量的的指针变量的概念和使用2熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C+等编译开发环境三、实习内容与步骤1定义一个数组stu10存放10个学生的成绩,从键盘输入数据,要求用指针实现2将数组stu10的内容输出到屏幕上,要求用指针实现3将成绩数组按照从高到低进行排序,要求用指针实现4将第三步内容放在函数中实现,在主函数中调用实现排序,用指针

    2、实现,输出排序后的成绩单5采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)6在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏幕截图)。7. 在实习报告中说明知识点。8在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1.程序流程图:开始由键盘输入成绩输出成绩比较成绩的高低复制student score对成绩排序输出字符串输出排序好的成绩结束2.算法:先定义一个函数接收10个学生的成绩,利用指针将数据保存在数组中,再定义第二个函数输出所以学生的成绩,同样也是使用

    3、指针,最后定义一个函数用选择排序法对成绩进行由大到小的排序,将指针指向的是数组中的第一个地址,在主函数中依次调用这两个函数;定义一个字符指针指向字符串,利用库函数中的strcpy将student score复制给字符指针,输出字符串3.程序:#includestdio.h#includestring.hstruct studentint grade;int num;stu10;void input(struct student *p) int i;for(i=0;inum,&p-grade); void printout(struct student *p) int i;for(i=0;igr

    4、ade);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,*p

    5、tr;int i;char string100,*s;s=string;ptr=stu;input(ptr);printout(ptr);place(stu);printf(排序后的成绩单为:n);for(i=0;igradem;num=0;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=0;for(i=0;iaverage=p-average+p-gradei; p-average=p

    6、-average*1.0/3; a=p-average;for(m=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=0;iN;i+)for(j=i;jstui.average) t=stuj+1; stuj+1=stui; stui=t;void main()struct student stu10,*ptr;int i,j,index,m,num;float average;ptr=

    7、stu;for(i=0;iN;i+) printf(请输入第%d个学生的学号、姓名及三科成绩: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三门课平均分最高的学生信

    8、息是:n); printf(学号%ld 姓名:%-10s 平均分%-8.2fn,stuindex.number,stuindex.name,stuindex.average); 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,

    9、stui.average);4.运行结果:五、知识点、难点及解决办法。 主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结构体并返回我们所要的数值 先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址,在自定义函数中通过指针的运算实现数组的运算,并返回相应的值六、编程小结或体会。在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复杂问题的能力,以后多练习此类的程序设计问题,使自己更加熟练课题三:学生成绩文件管理一、目的1掌握文件指针的概念和运用2掌握文件的相关操作:打开、读、写、关闭3掌握文

    10、件的定位操作二、实习环境个人计算机,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在实习报告中说明知识点

    11、。7在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。四、程序流程图、算法及运行结果1.程序流程图: 将学生信息存入文件中键入每个学生的信息将文件中的信息读出按平均分高低排序将排序后的信息存入另一文件开始结束2.算法:首先创建一个可读可写的新文件stud.txt,键入十个学生的信息并储存在文件中,关闭程序;打开文件stud.txt,读出文件中的信息并输出,检查有无错漏,并按照平均分通过选择排序法对学生由高到低排序,关闭程序;将排好序的信息输出并存储在新的可写文件studsort.txt中3.程序:#includestdio.h#includestdlib.h#define N 1

    12、0struct studentlong num;char name20;int grade3;stu10;int main(void) FILE *fp,*fpp; struct student stu10,t;float average100;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,stui.name);fprintf(fp,第%-2d个学生的学号、姓名

    13、及三门课成绩: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);fscan

    14、f(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);f

    15、or(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;javeragei) 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); pr

    16、intf(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;jnum=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

    17、!=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;printf(请输入%d个学生的信息:n,N); p=tail=(struct student *)malloc(len);head=NULL;scanf(%ld%s,&p-n

    18、um,p-name);while(p-num!=0) n+=1;if(n=1)head=p;elsetail-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.运行结果:五、知识点、难点及解决办法。 主要考察利用指针制作单向链表,难点在于各个结点的链接以及对于链表的输出,删除结点时如何不让链表断开 定义一个头指针和一个尾指针,通过尾指针的移动实现结点的链接,删除结点时先将要删除结点两端的结点链接上,再删除。六、编程小结或体会。 制作单向链表是对指针的充分运用,可以节省内存,但是要熟练掌握还是有

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《C语言程序设计》综合实习报告DOC.doc
    链接地址:https://www.163wenku.com/p-5931392.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库