【C言語】構造体を使って平均点と平均点以下の生徒データを出力する
1.トピック
生徒の記録は名前と学年で構成されています.main 関数に 4 人の生徒のデータを入力し, 平均点を計算して出力を返す関数を書き, 点数以下の生徒のデータを保存してください.構造体ポインターを介した出力の平均スコア。
必須:
- 次の構造を使用します。
typedef struct Student
{
char name[20];
int score;
}Stu;
- サブ関数を使用: float StructAvg(Stu *a,Stu *b,int n,int *m)
- メイン関数で出力します。
入力形式: 4名の生徒の名前と点数を順番に入力
出力形式:平均点以下の生徒のデータを保存して出力
例:
入力:
KOBE 90
YAO 90
HC 80
JAMES 70
出力:
Avg=82.5
HC 80
JAMES 70
2.完全なコード
#include <stdio.h>
#define N 4
typedef struct Student {
char name[20];
int score;
}Stu;
float StructAvg(Stu* a, Stu* b, int n, int* m)
{
int i, j = 0, sum = 0;
float avg;
for (i = 0; i < n; i++)
sum += a[i].score;
avg = sum * 1.0 / n;
for (i = 0; i < n; i++)
if (a[i].score < avg)
b[j++] = a[i];
*m = j;
return avg;
}
int main()
{
int i, j, n;
float ave;
struct Student s[N];
for (i = 0; i < N; i++) {
scanf("%s %d", s[i].name, &s[i].score);
}
struct Student h[N];
ave = StructAvg(s, h, N, &n);
printf("Avg=%.1f\n", ave);
for (i = 0; i < n; i++)
printf("%s %d\n", h[i].name, h[i].score);
printf("\n");
}