1. 程式人生 > >C語言:利用結構體的學生成績

C語言:利用結構體的學生成績

結構體-學生成績管理

題目:有50個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入50個學生資料,要求打印出每門課的平均成績,以及三門課總分最高的學生的資料(包括學號、姓名、3門課的成績,三門課的總分)。

#include<stdio.h>
#define N 50
struct student
{
	int num;
	char name[10];
	int course1;
	int course2;
	int course3;
	int total;
};     //定義結構體型別
void main()
{
	struct student st[N]
; //定義結構體變數 int i, max, maxi; float average1 = 0,average2 = 0,average3 = 0; for(i = 0; i < N; i++) { scanf("%d",&st[i].num); scanf("%d",&st[i].course1); average1 = average1 + st[i].course1; scanf("%d",&st[i].course2); average2 = average2 + st[i].course2; scanf("%d",&
st[i].course3); average3 = average3 + st[i].course3; scanf("%s",st[i].name); st[i].total = st[i].course1 + st[i].course2 + st[i].course3; //求出當前學生的總分 } average1 = average1 / N; average2 = average2 / N; average3 = average3 / N; //求出各科平均分 max = st[0].total; for(i = 1; i < N; i++) if
(st[i].total >= max) { max = st[i].total; maxi = i; } printf("三門課的平均成績:\n"); printf("%.2f %.2f %.2f\n",average1,average2,average3); printf("總分最高的學生:\n"); printf("學號 姓名 課程1 課程2 課程3 總分\n"); printf("%d %s %d %d %d %d\n" , st[maxi].num , st[maxi].name , st[maxi].course1 , st[maxi].course2 , st[maxi].course3 , st[maxi].total); }

執行時只需將N的數值修改即可。
本人在進行程式測試時僅用3名學生的成績:
1⃣️

輸入:
001 30 40 50 aaa
002 35 45 55 bbb
003 25 35 45 ccc
輸出:
三門課的平均成績:
30.00 40.00 50.00
總分最高的學生:
學號 姓名 課程1 課程2 課程3 總分
2 bbb 35 45 55 135