C语言基础:求结构体数组中的最大值并按序输出

C语言基础:求结构体数组成员列表中的成绩最大值并按序输出

1. 用结构体数组进行传参

例1:

#include "stdafx.h"
#include <stdio.h>
#define member 5//成员数
#define NAME_LEN 20//姓名最大长度

struct st {  
	int id;
	char name[NAME_LEN];
	double score;
};

int max_score_id(struct st st[], int size)//结构体数组作为形参
{
	int i,j;
	struct st temp;//定义结构体类型变量temp
	for(i=0;i<=size;i++){
		for(j=i+1;j<=size;j++){
			if(st[i].score<st[j].score){
				temp=st[i];
				st[i]=st[j];
				st[j]=temp;
			}
		}
	}
	return 0;
}

int main(void)
{
	int index;
	struct st students[] = {
        {101,"zhang3",88.8},
		{102,"li4",99.9},
		{103,"wang5",66.6},
		{104,"shun6",66.8},
		{105,"yang7",88.6}
	};
	index = max_score_id(students, member);//结构体数组进行传参
	printf("Sno\tSname\tScore\n");
	for(index=0;index<member;index++)
		printf("%d\t%s\t%.2f\n", students[index].id, students[index].name, students[index].score);
	return 0;
}

2. 用结构体指针进行传参

例2:

#include "stdafx.h"
#include <stdio.h>
#define member 5//成员数
#define NAME_LEN 20//姓名最大长度

struct st {  
	int id;
	char name[NAME_LEN];
	double score;
}*p;

int max_score_id(struct st *p,int size){//结构体指针作为形参
	struct st max;//定义结构体类型变量max
	for(int i=0;i<size;i++){
		for(int j=i+1;j<size;j++){
			if((p+i)->score<(p+j)->score){
				max=*(p+i);
				*(p+i)=*(p+j);
				*(p+j)=max;
			}
		}
	}
	return 0;
}

int main(void){
	int index;
	struct st students[] = {
        {101,"zhang3",88.8},
		{102,"li4",99.9},
		{103,"wang5",66.6},
		{104,"shun6",66.8},
		{105,"yang7",88.6}
	};
	p=students;
	index = max_score_id(p, member);//结构体指针进行传参
	printf("Sno\tSname\tScore\n");
	for(index=0;index<member;index++){
		printf("%d\t%s\t%.2f\n", p->id, p->name, p->score);	
		p++;
	}
	return 0;
}

运行结果:
Sno Sname Score
102 li4 99.90
101 zhang3 88.80
105 yang7 88.60
104 shun6 66.80
103 wang5 66.60

——>以上内容是关于如何用C语言求结构体数组成员列表中的成绩最大值并按序输出,希望对初学者或再次学习者有所帮助,基础打扎实,不怕风吹雨打! 如果以上内容有错误或者内容不全,望大家提出!我也会继续写好每一篇博文!

待续未完
——文优

欢迎观看和提问!!!

下一篇:C语言基础:求两个数的最大公约数与最小公倍数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文优

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值