題目描述
從鍵盤輸入若干個學生的信息,每個學生信息包括學號、姓名、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);
}