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

6 篇文章 1 订阅
5 篇文章 0 订阅

 例题详解:

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
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值