ZZULIOJ 1180: 成績統計(結構體專題)

題目描述

從鍵盤輸入若干個學生的信息,每個學生信息包括學號、姓名、3門課的成績,計算每個學生的總分,輸出總分最高的學生的信息。

輸入

首先輸入一個整數n(1<=n<=100),表示學生人數,然後輸入n行,每行包含一個學生的信息:學號(12位)、姓名(不含空格且不超過20位),以及三個整數,表示語文、數學、英語三門課成績,數據之間用空格隔開。

輸出

輸出總成績最高的學生的學號、姓名、及三門課成績,用空格隔開。若有多個最高分,只輸出第一個。

樣例輸入 

3
541207010188 Zhangling 89 78 95
541207010189 Wangli 85 87 99
541207010190 Fangfang 85 68 76

樣例輸出 

541207010189 Wangli 85 87 99

tips:

1 結構體內部的數據定義 數據類型  名稱(注意字符串後有一個  '\0')

    sql語句                         名稱          數據類型

2  當其中的一個數據是字符串,讀入時可以不用& 

3   定義數據時相同類型可以並列定義,讀取時也可以並列讀取

4    可以讀取時設置一個結構體,存放最值是一個結構體,類似擂臺法

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	struct xueSheng
	{
		char xuehao[13];// 注意這必須大於12,因爲存儲末尾有 '\0'
		char name[20];
		int num1;
		int num2;
		int num3;

	};

	int n,count=0,ret,temp;
	scanf("%d",&n);
	struct xueSheng *p[100];

	for (int i = 0; i < n; i++)
	{
		p[i] = (struct xueSheng *)malloc(sizeof(struct xueSheng));
		scanf("%s",p[i]->xuehao);
		scanf("%s",p[i]->name);
		scanf("%d",&p[i]->num1);
		scanf("%d", &p[i]->num2);
		scanf("%d", &p[i]->num3);
	}

	for (int i = 0; i < n; i++)
	{
		temp = p[i]->num1 + p[i]->num2 + p[i]->num3;
		if (temp>count)
		{
			count = temp;
			ret = i;
		}
	}
	printf("%s %s %d %d %d",p[ret]->xuehao,p[ret]->name,p[ret]->num1,p[ret]->num2, p[ret]->num3);

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章