chap9结构内容摘要:

,math,english,total。 }。  定义结构类型数组 struct student s[50]。 input_student函数设计 功能: 输入一个学生基本信息,计算总成绩,返回该生信息记录。 设计函数首部如下: struct student input_student() 算法用伪代码描述  struct student s。  输入 s: scanf(s)。  计算总分: =++。  return s。 struct student{ int num。 char name[10]。 int chinese, math, english, total。 }。 struct student input_student() { struct student s。 printf(学号 姓名 语文 数学 英语: )。 scanf(%d%s%d%d%d,amp。 ,)。 scanf(%d%d%d,amp。 ,amp。 ,amp。 )。 =++。 return s。 } 程序清单( 1) ◆ 返回值:结构类型 sort_student函数设计 功能:选择法排序。 对 n 个学生记录按总分由大到小排序。 函数首部: void sort_student( struct student s[ ] , int n ) 算法用伪代码描述 for(i=0。 in1。 i++){ index=i。 for(j=i。 jn。 j++) if(s[j].totals[index].total) index=j。 temp=s[i]。 s[i]=s[index]。 s[index]=temp。 } ◆ 形参:结构数组,传址。 …… void sort_student( struct student s[ ], int n ){ …… for(i=0。 in1。 i++){ index=i。 for(j=i。 jn。 j++) if(s[j].totals[index].total) index=j。 temp=s[i]。 s[i]=s[index]。 s[index]=temp。 } } 程序清单( 2) ◆ 形参 :结构数组,传址。 output_student函数设计 功能: 逐行输出结构数组( n个元素)各元素的记录信息。 函数首部: void output_student(struct student s[ ],int n) 算法用伪代码描述  输出表头。  输出表体: for(i=0。 in。 i++) printf(s[i])。 ◆ 形参:结构数组,传址。 …… void output_student( struct student s[ ], int n ){ printf(学号 姓名 语文 数学 英语 总成绩 \n)。 for(i=0。 in。 i++) printf(“%d%s%d%d%d%d\n”, s[i].num,s[i].name,s[i].chinese, s[i].math,s[i].english,s[i].total)。 } 程序清单( 2) ◆ 形参 :结构数组,传址。 main函数设计 功能: 输入 n个学生基本信息、计算个人总成绩、排序学生数据和输出学生全部记录信息。 算法用伪代码描述  输入 n个学生记录; for(i=0。 in。 i++) s[i]=input_student()。  排序 n个学生记录; sort_student(s, n)。  输出 n个学生记录; output_student(s, n)。 …… void main() { struct student s[50]。 for(i=0。 in。 i++){ printf(\n请输入第 %d学生基本信息: \n,i+1)。 s[i]=input_student()。 } sort_student(s,n)。 output_student(s,n)。 } 程序清单( 3) ◆ 实参 :结构数组名,传址。 ◆ 实参 :结构数组名,传址。 ◆ 返回值 :结构类型  结构数组的定义 方式 1——单独定义 struct student { int num。 char name[10]。 int chinese, math, english, total。 }。 struct student s[50]。 说明 :既定义结构类型 struct student,又定义该类型数 组 s,包含 50个数组元素, s[0]到 s[49]。 结构数组操作  结构数组的定义 方式 2——混合定义 struct student { int num。 char name[10]。 int chinese, math, english, total。 } s[50]。 说明 :既定义结构类型 struct student,又定义该类型数 组 s,包含 50个数组元素, s[0]到 s[49]。 结构数组操作  结构数组的定义 方式 3——无类型定义 struct{ int num。 char name[10]。 int chinese, math, english, total。 } s[50]。 说明 :只定义结构数组 s,包含 50个数组元素。 结构数组操作  结构数组的初始化: 初始化列表方式 struct student s[50] = { { 101,zhang san, 88,88,88}, { 102,Li Si, 99,99,99} }。 stud[49] stud[1] stud[0] 结构数组操作 …… 101 Zhang San 88 88 88 102 Li Si 99 99 99 …… …… …… …… …… …… 同类型的结构数组元素整体赋值。 举例 : s[i] = s[k]。 作用 :将 “ =”右边结构数组元素的每个成员的值赋给左边结构数组元素中相应的成员。 注意 :相同类型的结构数组元素才能直接赋值。  结构数组元素的整体赋值 结构数组操作 格式 : 结构体数组名 [下标 ] . 结构体成员名 举例 : s[5].num = 106。 strcpy(s[5].name, Xiao Jie)。 s[5].chinese = 100。 s[5].english=95。 s[5].math=95。  结构数组元素的成员引用 结构数组操作 成员运算符  参数传递: 传址。  形参 要求:地址,即同类型结构数组或结构指针。  结构数组名作函数参数 结构数组操作 举例:例 94 …… void sort_student( struct student s[ ], int n ){ …… for(i=0。 in1。 i++){ index=i。 for(j=i。 jn。 j++) if(s[j].totals[index].total) index=j。 temp=s[i]。 s[i]=s[index]。 s[index]=temp。 } } void output_student( struct student s[ ], int n ){ printf(学号。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。