1. 程式人生 > 其它 >好!很有精神! (10分)

好!很有精神! (10分)

技術標籤:自測題c語言

在這裡插入圖片描述

題目描述

海軍學校四年級學生衡量一年級學生是否能開軍艦靠的是精神值。
精神值的計算公式如下:
$ value=\frac{D*length}{times} $
其中的value代表的的是一年級學生的精神值,D代表一年級學生說話聲音的分貝,length記錄的是說話的句子長度,times記錄的是說話的時間。
而他們會按照如下方式對一年級學生進行測試:在單位時間內(即times=1)讓一年級學生依次進行自我介紹,同時記錄他們說話聲音的分貝,和自我介紹的內容。
現在四年級學生們已經採集了所有一年級學生的資料,他們想請你找到一年級學生裡最有精神的學生(即value最大的學生),並讓他開軍艦。現在請你幫幫忙。

輸入格式:

第一行一個正整數n(1≤n≤2⋅10
​^4 ),代表一年級學生的人數。
接下來n行,每行輸入格式如下:
name D introdutction
其中name為一個長度不超過20的字串(即1≤∣name∣≤20),D為正整數,且0≤D≤200,introduction為長度不超過100的字串(即1≤∣introduction∣≤100)。
所有的字串僅由小寫的英文字母組成

輸出格式:

輸出共兩行,第一行輸出最大的精神值。
第二行按照如下格式輸出
XXX:hao!hen you jing shen!
其中XXX請替換成精神值最大的一年級學生的名字。
如果有多個精神值最大的學生,請按照輸入順序依此按上述格式輸出一年級學生的名字。

輸入樣例:

1
pingtianyilang 0 aaaaaaa

輸出樣例:

0
pingtianyilang:hao!hen you jing shen!

提示

對於樣例,最有精神的學生是pingtianyilang,其精神值為0×6=0

原始碼

#include <stdio.h>
#include <math.h>
#include <string.h>
struct member{
    char name[21];
    int D;
    char introduction[101];
}mem[20000];
int main()
{
    int
n,i,j,value,date[20000]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %d %s",mem[i].name,&mem[i].D,mem[i].introduction); date[i]=mem[i].D*strlen(mem[i].introduction); } value=date[0]; for(i=0;i<n;i++) { if(date[i]>value) value=date[i]; } printf("%d\n",value); for(i=0;i<n;i++) { if(date[i]==value) printf("%s:hao!hen you jing shen!\n",mem[i].name); } return 0; }