• 締切済み

C言語

よろしくお願いします。  下記の構造体タグ「seiseki」を使って,表に示すデータをもつ構造体配列「list」を作成する.  関数に構造体配列「list」のアドレスを渡す.  関数で構造体ポインタ「*list」を利用して,一番点 数の高い者(1名限定)を調べ,その名前を表示する. struct seiseki{ char name[30]; int score; name score }; 表 佐藤 80 鈴木 75 田中 95 高橋 90

みんなの回答

  • Peechyan
  • ベストアンサー率69% (34/49)
回答No.2

こんにちは。へたくそなプログラムで申し訳ないですが、これでいちおう動きましたので、参考にしてみてください。 #include <stdio.h> #include <string.h> #define NUM 4 typedef struct seiseki{ char name[30]; int score; }seiseki; /* 一番点数の高い者を調べ,その名前を表示する関数の宣言 */ void showMax(seiseki *list); int main(void) { seiseki list[4]; int i; // 佐藤 80 鈴木 75 田中 95 高橋 90 strcpy(list[0].name, "佐藤"); list[0].score=80; strcpy(list[1].name, "鈴木"); list[1].score=75; strcpy(list[2].name, "田中"); list[2].score=95; strcpy(list[3].name, "高橋"); list[3].score=90; showMax(list); return 0; } /* 一番点数の高い者を調べ,その名前を表示する関数の定義 */ void showMax(seiseki *list){ int i; //ループ用 // パターン1用の変数(最大値を持つ配列番号の格納用) int maxArrayNum = 0; // パターン2用の変数 int max = 0; char name[30]; for(i=0;i<NUM; i++){ if(max < list[i].score){ /* パターン1 */ maxArrayNum = i; /* パターン2 */ max = list[i].score; strcpy(name, list[i].name); } } // パターン1を使った表示法。 printf("最高点は%sさん:\t%d\n", list[maxArrayNum].name, list[maxArrayNum].score); // パターン2を使った表示法。 printf("最高点は%sさん:\t%d\n", name, max); }

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

残念ながら閉じられていますが……。 http://okwave.jp/qa/q8111554.html こっちなら参考になるかと思われます。 http://okwave.jp/qa/q8111605.html

関連するQ&A

専門家に質問してみよう