1、 for(i=0;inum,&grade);voidprintout(structstudent*p) printf(第%-2d个学生的成绩为:%dn,i+1,p-voidarrow(int*p1,int*p2,int*px,int*py)intt,m;t=*px;*px=*py;*py=t; m=*p1;*p1=*p2;*p2=m;voidplace(structstudentstu)inti,j;for(i=1;i+) for(j=0;j10-i;j+)if(stuj.gradegradem; num=0; for(q=0;qgradema) a=(p+q)- num=q; returnn
2、um;inthanshu_average(structstudent*p)inti,m,index; for(m=0;maverage=0; for(i=0;3; p-average=p-average+p-gradei; p-average*3;a=p-average; if(p-average a=p-index=m;else index=0; returnindex;voidhanshu_place(structstudentstu)structstudentt; for(j=i; if(stuj+1.averagestui.average) t=stuj+1;stuj+1=stui;s
3、tui=t;voidmain() structstudentstu10,*ptr; inti,j,index,m,num; floataverage; ptr=stu;请输入第%d个学生的学号、姓名及三科成绩: scanf(%ld%sstui.number,stui.name); for(j=0; scanf(%fstui.gradej);printf(m+) num=hanshu_best(ptr,m);学号%ld姓名:%-10s最高分%n,stunum.number,stunum.name,stunum.gradem); index=hanshu_average(ptr);n三门课平均分最
4、高的学生信息是:%-10s平均分%n,stuindex.number,stuindex.name,stuindex.average);n10个学生由高分到低分排名为:numbernameMathChineseEnglishaveragen hanshu_place(ptr);%-10ld%-10s%,stui.number,stui.name); for(j=0; printf(%,stui.gradej);%n,stui.average);主要考察的是结构体指针的运用,比较难的地方也就是如何将指针指向结构体并返回我们所要的数值先定义一个结构体数组,再定义一个结构体指针,令指针指向数组的首地址
5、,在自定义函数中通过指针的运算实现数组的运算,并返回相应的值在输出我们所需要的数据时候可以通过一些小技巧使程序看起来更好看。掌握结构体指针的技巧可以解决很多问题,使自己的程序具有解决多个复杂问题的能力,以后多练习此类的程序设计问题,使自己更加熟练课题三:学生成绩文件管理1掌握文件指针的概念和运用2掌握文件的相关操作:打开、读、写、关闭3掌握文件的定位操作2从键盘输入10个学生的以上内容,存入文件,关闭文件3打开文件,将数据读出,查看是否正确写入,关闭文件。4打开文件文件,读出数据,将10个学生按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件中。5在实习报告中画出程序流程图,说明程
6、序设计的算法,附主要程序段及运行结果(屏幕截图)。6在实习报告中说明知识点。7在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。首先创建一个可读可写的新文件,键入十个学生的信息并储存在文件中,关闭程序;打开文件,读出文件中的信息并输出,检查有无错漏,并按照平均分通过选择排序法对学生由高到低排序,关闭程序;将排好序的信息输出并存储在新的可写文件中 longnum; intgrade3;FILE*fp,*fpp;structstudentstu10,t; floataverage100; inti=0,j; if(fp=fopen(,w+)=NULL)该文件打开失败! exit(0)
7、;第%-2d个学生的学号、姓名及三门课成绩:stui.num,stui.name); fprintf(fp,%ld%-5s,stui.num,stui.name); scanf(%d fprintf(fp, if(fclose(fp)该文件无法正常关闭!r+第%d个学生的学号、姓名及三门课成绩: fscanf(fp, fscanf(fp, if(fclose(fp)if(fp=fopen( fscanf(fp, fscanf(fp, for(j=0; averagei=averagei+stui.gradej; averagei=averagei*3; if(averagej+1average
8、i) if(fpp=fopen(n由高到低排序为: fprintf(fpp, fprintf(fpp, fprintf(fpp,主要考察对于文件信息的存储以及读取文件内的信息,难点在于如何将信息存储起来以及如何从文件中读取有效信息并显示在调式框中首先定义一个指针指向文件,然后创建或是打开一个的文件,注意文件的类型和打开方式,如果是写入信息则用fprintf,如果是读取信息则是fscanf,注意写入和读取的书写格式,前面许注明指向该文件的指针通过文件的学习,以后调试程序后还可以将信息永久的保存起来随时使用或更改,不需要使用一次就输入一次,方便又省时间,课题四:链表的创建与使用1掌握单向链表的概念
9、2掌握单向链表的创建、查找、删除方法1创建一个单向链表,存放10个学生的学号,姓名,并输出这种10个学生的信息。2在链表中查找指定学号的学生,输出其姓名。3在链表中删除指定学号的学生,然后输出其余学生的信息。4在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。5在实习报告中说明知识点。6在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。用指针处理单向链表,定义一个头指针,尾指针,通过尾指针的移动实现数据信息的存储与读取;删除结点时,应该先将要删除结点前后的结点连上,然后再将其删除,保证链表不会“断”。#definelensizeof(struct
10、student)structstudent*next;voidsearch(structstudent*head)longnumber; structstudent*p; p=head;请输入要查找的学生学号:%ldnumber); do if(p-num=number)%-15sn,p-name);p=p-next;while(p!=NULL);voidcdelete(structstudent*q)structstudent*p1,*p2;longcount;请输入你要删除的学生学号:count); p1=q; while(count!=p1-num&p1-next!=NULL) p2=p
11、1;p1=p1- if(count=p1-num) if(p1=q) q=p1- else p2-next=p1-delete:%ldn,p1-num);structstudent*head,*tail,*p,*p1,*p2,*q;intn=0,i; longnumber,NUM;请输入%d个学生的信息:,N);p=tail=(structstudent*)malloc(len); head=NULL;num,p- while(p-num!=0) n+=1; if(n=1) head=p; tail-next=p; tail=p; p=(structstudent*)malloc(len); tail-next=NULL;n这10个学生的信息为:p=head; if(head! do printf(%-15ld%-15snsearch(head);q=head; cdelete(q);,q-num,q-q=q-while(q!主要考察利用指针制作单向链表,难点在于各个结点的链接以及对于链表的输出,删除结点时如何不让链表断开定义一个头指针和一个尾指针,通过尾指针的移动实现结点的链接,删除结点时先将要删除结点两端的结点链接上,再删除。制作单向链表是对指针的充分运用,可以节省内存,但是要熟练掌握还是有
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1