c语言——结构体数组——学生成绩表

本文通过一个具体的示例讲解了如何使用C语言中的结构体数组存储学生的学号、姓名及成绩,并利用指针数组对其进行排序。示例中详细介绍了输入学生数据、计算总评成绩的过程以及使用冒泡排序算法按总评成绩从高到低排序的方法。

 例题详解:

1.

在主函数中定义结构体数组,struct student stutable[10];

struct student {
	int stunum;//学号
	char name[20];//姓名
	float examscore;//考试成绩
	float labscore;//实验成绩
	float totalmark;//总评成绩
};

输入如下十个学生的成绩数据,每个学生信息包括 学号 、姓名 、考试成绩 ,实验成绩。同时计算每个学生的总评成绩( =考试成绩*60% + 实验成绩*40%)并保存至每个结构体的totalmark。

71250	张三	95	82
69753	李四	88	86
12254	王五	87	88
61256	张六	73	85
30258	孙七	25	88
11260	柯八	82	76
33262	谢九	91	85
29263	叶十	80	75
22483	陈一	80	76
71525	王二	71	88

2.

在主函数中定义一个结构体指针数组,struct student  *parrray[10] ; 使其每一个指针指向上述结构体数组中的一个元素; 按总评成绩从高到低的顺序,对指针数组parray进行排序,按总评成绩从高到低的顺序输出排序之后的全部学生成绩。


	struct student *parray[10],*t;

int main() {
	int i,j;
	struct student stutable[10],*p;
	struct student *parray[10],*t;
	for(p=stutable,i=0; p<stutable+10,i<10; p++,i++) {
		scanf("%d %s %f %f",&p->stunum,p->name,&p->examscore,&p->labscore);//输入数据
		p->totalmark=p->examscore*0.6+p->labscore*0.4;//计算总评
		parray[i]=p;//指针数组初始化
	}
	//冒泡排序,比较总评,交换指针
	for(i=0; i<9; i++) {
		for(j=0; j<9-i; j++) {
			if(parray[j]->totalmark<parray[j+1]->totalmark) {
				t=parray[j];
				parray[j]=parray[j+1];
				parray[j+1]=t;
			}
		}
	}//排序
	for(i=0; i<10; i++) {
		printf("%d\t%s\t%.2f\t%.2f\t%.2f\n",parray[i]->stunum,parray[i]->name,
		       parray[i]->examscore,parray[i]->labscore,parray[i]->totalmark);
	}//输出信息
}

输入重定向结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值