用“结构”统计学生成绩_第1页
用“结构”统计学生成绩_第2页
用“结构”统计学生成绩_第3页
用“结构”统计学生成绩_第4页
用“结构”统计学生成绩_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用“结构”统计学生成绩C程 序 设 计用“结构”统计学生成绩设学生信息包括学号、姓名和五门功课的成绩,要求编写输入输出学生信息的函数。在输入一组学生信息后,以学生成绩的总分从高到低顺序输出学生信息。CONTENTS01编程思路分析基础知识点具体实现总结与拓展030204编程思路分析1.编程思路分析定义结构体类型struct std_type描述学生相关信息,之后定义一个结构体数组用于存储学生信息。定义函数Input()用于输入学生信息。定义函数Sort()将学生信息按总分排序。定义函数Output()用于输出学生信息。在主函数中依次调用Input()、Sort()、 Output()以实现程序

2、功能。基础知识点2.基础知识点struct 结构体类型的定义形式为:结构体类型的定义形式为:struct std_type char no10; /*学号学号*/ char name20; /*姓名姓名*/ int scores5; /*五门功课的成绩五门功课的成绩*/ int total; /*五门功课的总分五门功课的总分*/; 定义个人信息的结构体类型:定义个人信息的结构体类型:2.基础知识点 结构体类型的数据在函数间的传递结构体类型的数据在函数间的传递(3)用指向结构体变量(或结构体数组)的指针作实参,将结构体变量(或数组)的地址传递给形参,属于“传址”方式。这种方式下,实参和形参具有相

3、同的地址,对形参的操作即是对实参的操作。这是一种最常使用的方法。要将一个结构体变量的值传递给另一个函数,有三种方法:(1)用结构体变量的成员作参数。用法和用普通变量作实参是一样的,属于“值传递”方式。(2)用结构体变量作参数。用结构体变量作实参时,采取的也是“值传递”方式,将结构体变量所占的内存单元的内容全部按顺序传递给形参,形参也必须是同类型的结构体变量。由于采用的是“值传递”的方式,如果在执行被调函数期间改变了形参的值,该值不能返回给主调函数,造成使用上的不便。2.基础知识点冒泡排序法(bubble sort)的基本思想是通过相邻两个记录之间的比较和交换,使关键码较小的记录逐渐从底部移向顶

4、部(上升),关键码较大的记录逐渐从顶部移向底部(沉底),冒泡由此得名。冒泡排序原理含有n个数据的序列需要n-1轮排序,第i轮需要进行n-i次比较。for(i=1;in;i+) for(j=0;jRj+1) temp=Rj; Rj=Rj+1; Rj+1=temp; 具体实现3.具体实现定义结构体类型struct student描述学生相关信息,之后定义一个结构体数组用于存储学生信息。struct std_type char no10; /*学号学号*/ char name20; /*姓名姓名*/ int scores5; /*五门功课的成绩五门功课的成绩*/int total; /*五门功课的总

5、分五门功课的总分*/; struct std_type studentsN;3.具体实现定义函数Input()用于输入学生信息。void input(struct std_type *spt) int i; printf(ninput Number : );/*输入学号输入学号*/ gets(spt-no); printf(input Name : );/*输入姓名输入姓名*/ gets(spt-name); spt-total=0; printf(input Scores : );/*输入成绩输入成绩*/ for(i=0;iscoresi); spt-total+=spt-scoresi;

6、3.具体实现定义函数Sort()将学生信息按总分排序。void sort(struct std_type *spt,int number) struct std_type temp;int i,j;for(i=1;inumber;i+) for(j=0;jtotaltotal) temp=*(spt+j); *(spt+j)=*(spt+j+1); *(spt+j+1)=temp; 3.具体实现定义函数Output()用于输出学生信息。void output(struct std_type *spt) int i; printf(Number : %sn,spt-no); /*输出学号输出学号

7、*/ printf(Name : %sn,spt-name); /*输出姓名输出姓名*/ printf(Scores : ); /*输出成绩输出成绩*/ for(i=0;iscoresi); printf(“nTotal : %dn”,spt-total); /*输出总分输出总分*/ printf(nn); 3.具体实现在主函数中依次调用Input()、Sort()、 Output()以实现程序功能。 int main() int n=0,i; /整数整数n用于对录入的学生信息进行计数用于对录入的学生信息进行计数char ch;printf(是否要录入学生信息,是是否要录入学生信息,是(Y/y

8、)/否否(N/n):n);while(ch=getchar()=Y|(ch=getchar()=y)getchar(); input(students+n); n+;getchar(); printf(是否要录入学生信息,是是否要录入学生信息,是(Y/y)/否否(N/n):n);sort(students,n);for(i=0;in;i+)/*输出输出*/ output(students+i); return 0; 总结与拓展在函数input()、output()、sort()中,以指向结构体类型的指针变量作为参数,这种方式为“传址”方式,这种方式下,实参和形参具有相同的地址,指向同一结构体变量,对形参的操作即是对实参的操作,从而实现函数间的数据传递 。本例中,在对学生成绩的总分进行排序时,采用了“冒泡排序”算法。冒泡排序法的基本思想是通过相邻两个记录之间的比较和交换,使关键码较小的记录逐渐从底部移向顶部,关键码较大的记录逐渐从顶部移向底部,从而使关键码有序排列。4.总结与拓展4.总结与拓展请定义一个描述学生基本信息的结构,包括学号、姓名,性别,籍贯,身份证号,年龄,家庭住址,联系方式等。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论