有一個班4個學生,5門課程 ①求第1門課程的平均分;②找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績; ③找出平均成績在90分以上或全部課程成績在85分以上的學生 分別編3個函數實現以上3個要求


有一個班4個學生,5門課程

①求第1門課程的平均分;

②找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績;

③找出平均成績在90分以上或全部課程成績在85分以上的學生。

分別編3個函數實現以上3個要求。

解題思路: 4個學生,5門課程就是一個4x5的二維數組,

  1. 求第一門課的平均分,就是將第0列數據相加除以學生人數
  2. 遍歷每個學生的成績,判斷不及格次數,若大於2則輸出信息即可
  3. 統計每個學生總成績,以及對每門課程成績進行判斷即可

答案:

#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;
}

有一個班4個學生,5門課程 ①求第1門課程的平均分;②找出有兩門以上課程不及格的學生,輸出他們的學號和全部課程成績及平均成績; ③找出平均成績在90分以上或全部課程成績在85分以上的學生。分別編3個函數實現以上3個要求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM