有一個班4個學生,5門課程
①求第1門課程的平均分;
②找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績;
③找出平均成績在90分以上或全部課程成績在85分以上的學生。
分別編3個函數實現以上3個要求。
解題思路: 4個學生,5門課程就是一個4x5的二維數組,
- 求第一門課的平均分,就是將第0列數據相加除以學生人數
- 遍歷每個學生的成績,判斷不及格次數,若大於2則輸出信息即可
- 統計每個學生總成績,以及對每門課程成績進行判斷即可
答案:
#include<stdio.h>
#include<math.h>
float avg(int arry[][5], int n)
{
float sum = 0;
for (int i = 0; i < n; i++) {
sum += arry[i][0];
}
printf("Average of course 1:%f\n", (sum / n));
return (sum / n);
}
void fail(int arry[][5], int n)
{
printf("Information on students who fail in more than two courses: ");
for (int i = 0; i < n; i++) {
int sum = 0, fail_count = 0;
for (int j = 0; j < 5; j++) {
if (arry[i][j] < 60) {
fail_count++;
}
}
if (fail_count <= 2) {
continue;
}
printf("seq:%d ", i + 1);
printf("score: ");
for (int j = 0; j < 5; j++) {
sum += arry[i][j];
printf("%d ", arry[i][j]);
}
printf("avg:%d ", sum / 5);
printf("\n");
}
return;
}
void excellent(int arry[][5], int n)
{
int i, j;
for (i = 0; i < n; i++) {
int sum = 0, count = 0;
for (j = 0; j < 5; j++) {
sum += arry[i][j]; //計算總分用於計算平均分
if (arry[i][j] > 85) {
count++; //若每門課都大於85則count總會與j同步++
}
}
if ((sum / 5) > 90 || count == j) {
printf("Excellent students: %d\n", i + 1);
}
}
return;
}
int main()
{
int arry[4][5];
printf("Please enter a 4x5 matrix:\n");
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
scanf_s("%d", &arry[i][j]);
}
}
avg(arry, 4);
fail(arry, 4);
excellent(arry, 4);
printf("\n");
system("pause");
return 0;
}