《C语言》课内实验报告7
时间:2025-04-21
时间:2025-04-21
一、实验题目:
结构体的应用
二、实验目的:
1.进一步掌握结构体变量、数组的定义和使用方法,掌握结构体与指针的应用。
2.学习共用体的概念和使用。
3.学习链表的概念和使用。
三、实验内容:
1.有6个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩、总成绩、平均成绩。从键盘输入每个学生信息及4门课成绩,总成绩及平均成绩要通过4门课算出。然后用选择排序法按照总成绩由高到低对6个学生数据进行排序并输出排序结果。要求输入、排序、输出用3个自定义函数实现。编写源程序,给出注释及运行结果。(提示,请参阅教材上292页例11.5及例11.6的程序)。
#include<stdio.h> /*包含stdio.h库函数*/ #include<string.h> /*包含string.h 库函数*/ #define N 6 /*宏定义用N表示6*/ struct student /*定义一个长度为6的student结构体数组stu[N]*/ {
char name[10]; /*结构体中包含长度为10的字符型数组name*/
char num[10]; /*结构体中包含长度为10的字符型数组num*/ float math_score; /*结构体中包含浮点型数据math_score */ float english_score; /*结构体中包含浮点型数据english_score */ float computer_score; /*结构体中包含浮点型数据computer_score */
float C_program_score; /*结构体中包含浮点型数据C_program_score */
float sum_score; /*结构体中包含浮点型数据sum_score */
float average_score; /*结构体中包含浮点型数据average_score */
}stu[N];
void main() /*空类型主函数*/ {
void show(struct student stu[]);
/*声明空类型函数show函数包含形参struct student stu[]*/
void sort(struct student stu[],int n);
/*声明空类型函数sort函数包含形参struct student stu[]和int n */
int i; /*定义整型变量i*/ printf("学生的个数:%d",N); /*标准输出函数 以整型输出N的结果*/
for(i=0;i<N;i++) /*当 i=0且i<N时i自加一*/ {
stu[i].sum_score=0; /*把0赋值给stu[i].sum_score */ printf("\n输入学生成绩 %d:\n",i+1); /*以整形输出i+1结果*/
printf("姓名:"); /*输出"姓名:"*/ scanf("%s",stu[i].name); /*以字符型输入数据存到stu[i].name*/
printf("学号:"); /*输出"学号:"*/ scanf("%s",stu[i].num); /*以字符型输出stu[i].num */
printf("数学成绩:"); /*输出"数学成绩:"*/ scanf("%f",&stu[i].math_score);
/*以浮点型输入数据存到stu[i].math_score */
printf("英语成绩:"); /*输出"英语成绩:"*/ scanf("%f",&stu[i].english_score);
/*以浮点型输入数据存到stu[i].english_score */
printf("计算机成绩:"); /*输出"计算机成绩"*/ scanf("%f",&stu[i].C_program_score);
/*以浮点型输入数据存到stu[i].C_program_score */
printf("c语言成绩:"); /*输出"computer_score:"*/ scanf("%f",&stu[i].computer_score);
/*以浮点型输入数据存到stu[i].computer_score */
printf("\n"); /*换行*/
stu[i].sum_score=stu[i].math_score+stu[i].english_score+stu[i].co
mputer_score+stu[i].C_program_score; /*把stu[i].math_score加stu[i].english_score加
stu[i].computer_score加stu[i].C_program_score 的结果赋给
stu[i].sum_score */
stu[i].average_score=stu[i].sum_score/4.0;
/*把stu[i].sum_score除以4.0的结果赋给stu[i].average_score */
}
sort(stu,N); /*调用函数sort(stu,N)*/ show(stu); /*调用函数show(stu)*/ }
void sort(struct student stu[],int n)
/*定义空类型函数sort其形参为struct student stu[]和int n */
{
int i,j,k; /*定义整型变量i,j,k */
char g[10]; /*定义有十个长度的字符型的数组g*/ float t; /*定义浮点型变量t*/ for(i=0;i<n-1;i++) /*当i=0且i<n-1时i自加一*/ {
k=i; /*把i赋值给k*/ for(j=i+1;j<n;j++) /* 当j=i+1且j<n时j自加一*/ if(stu[j].sum_score>stu[k].sum_score)
/*如果stu[j].sum_score>stu[k].sum_score */
k=j; /*把j赋值给k*/ t=stu[k].sum_score; /*把stu[k].sum_score 赋值给t*/ stu[k].sum_score=stu[i].sum_score;
/*把stu[i].sum_score 赋值给stu[k].sum_score */ stu[i].sum_score=t; /*把t赋值给stu[i].sum_score */ t=stu[k].math_score; /*把stu[k].math_score 赋值给t*/ stu[k].math_score=stu[i].math_score;
/*把stu[i].math_score 赋值给stu[k].math_score */
stu[i].math_score=t; /*把t赋值给stu[i].math_score */ strcpy(g,stu[k].name); /*把stu[k].name 赋值给g*/ strcpy(stu[k].name,stu[i].name);
/*把stu[i].name 赋值给stu[k].name */
strcpy(stu[i].nam …… 此处隐藏:7581字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:编辑出版专业宣传
下一篇:行测满分数学秒杀技巧五至六招