輸出學生平均成績
- 案例描述
- 案例分析
- 案例實作
-
- 案例設計
- 完整代碼
案例描述
一個小組中有3個學生,每個學生有3門課程的成績需要統計。案例要求通過程式設計依次輸入學生的學号、姓名和三門課程的成績,計算出平均成績并依次把每個學生的學号、姓名和平均成績列印在螢幕上。
案例分析
很顯然,用剛剛學過的結構體存放學生的資訊是最好的選擇。一個結構體變量可以存儲一組資料,如一個學生的學号、姓名和成績等。但是本案例中有3個學生的資訊需要存儲,是以需要采用結構體數組。與前面講解的數組不同,結構體數組中的每個元素都是結構體類型的,它們都具有若幹個成員項。
案例實作
案例設計
(1)定義一個結構體數組,用來存放3個學生的資訊;
(2)用for循環依次讀取3個學生的資訊,再用for循環分别計算成績總和并求出平均值。
完整代碼
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct student //定義結構體數組
{
char num[6];
char name[10];
int score[3];
float average;
}stu[5];
int main()
{
int i, j, k;
float sum;
for (i = 0; i < 3; i++) //通過循環依次輸入三個學生的資訊
{
printf("Please input the information of the students:\n");
printf("Number: ");
scanf("%s", stu[i].num); //輸入學号
printf("Name: ");
scanf("%s", stu[i].name); //輸入姓名
sum = 0;
for (j = 0; j < 3; j++) //輸入三門成績
{
printf("Score%d: ", j + 1);
scanf("%d", &stu[i].score[j]);
sum += stu[i].score[j]; //累加成績
}
stu[i].average = sum / 3; //算出平均成績
printf("----------------------------------------------------\n");
}
for (k = 0; k < 3; k++) //最後輸出三個學生的資訊以及平均成績
{
printf("Number: %s\n", stu[k].num);
printf("Name: %s\n", stu[k].name);
printf("Average score: %.1f\n", stu[k].average);
}
return 0;
}
運作結果如下圖所示:
