1. 程式人生 > >細節決定成敗(用結構體變數和結構體指標變數的指標做函式引數)

細節決定成敗(用結構體變數和結構體指標變數的指標做函式引數)

//有n個結構體變數,
//內含學生學號,
//姓名和3門
//課程成績
//要求輸出平均成績最高
//的學生的資訊
//包括學號,姓名,
//3門課程成績和平均成績 
#include <stdio.h>
#define n 3
struct student{
	int num;
	char name[20];
	float score[3];
	float aver; 
};
int main(){
	void input(struct student stu[]);
	struct student max(struct student stu[]);
    void print(struct student stu);
	struct student stu[n],*p=stu;
	input(p);
	print(max(p)); 
	return 0;	
}

void input(struct student stu[]){
	int i;
	printf("請輸入各學生的資訊:學號,姓名,三門課程成績:\n");
	for(i=0;i<n;i++){
		scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,
		&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],
		&stu[i].aver);
		stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
	} 
}

struct student max(struct student stu[]){
	int i,m=0;
	for(i=0;i<n;i++){
		if(stu[i].aver>stu[m].aver)
		m=i;
	}
	return stu[m];
} 

void print(struct student stu){
	printf("\n成績最高的學生是:\n");
	printf("學號:%d\n姓名:%s\n三門課的成績:%5.1f,%5.1f,%5.1f\n平均成績:%6.2f",
	stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.aver);
	printf("\n"); 
}