PAT-B 1004成績ランキング(C言語)

1296 ワード

タイトル
リンク:PAT(Basic Level)Practice 1004成績ランキング
n(>0)名の学生の名前、学番、成績を読み込み、成績が最も高い学生と成績が最も低い学生の名前と学番をそれぞれ出力します.
入力形式:
各テスト入力には、1つのテスト例が含まれています.フォーマットは
1行目:正整数n 2行目:1人目の生徒の氏名学号成績3行目:2人目の生徒の氏名学号成績・・・n+1行目:n番目の学生の名前学号成績氏名と学号はいずれも10文字を超えない文字列であり、成績は0から100の間の整数であり、ここでは1組の試験例で2人の学生の成績が同じではないことを保証する.
出力フォーマット:
各試験例に対して2行を出力し,1行目は成績が最も高い学生の名前と学号,2行目は成績が最も低い学生の名前と学号であり,文字列間に1スペースがある.
サンプルを入力:
3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95
出力サンプル:
Mike CS991301 Joe Math990112
構想
  • は、学生の名前、学号、成績などの情報を1つの構造体配列で格納する.
  • は、構造体を巡回し、2つの構造体ポインタを用いて、成績が最も高い学生と成績が最も低い学生をそれぞれ指す.

  • コード#コード#
    #include
    
    typedef struct student{
        char name[11];
        char SN[11];
        int grade;
    }Student;
    int main()
    {
      int n;
      scanf("%d", &n);
      Student s[n];  
      for(int i = 0; i < n; i++){
        scanf("%s %s %d", s[i].name, s[i].SN, &s[i].grade);
      }
      Student *max = &s[0];
      Student *min = &s[0];
      for(int j = 1; j < n; j++){
        if(max->grade < s[j].grade){
          max = &s[j];
        }
        if(min->grade > s[j].grade){
          min = &s[j];
        }
      }
      printf("%s %s
    %s %s", max->name, max->SN, min->name, min->SN); return 0; }