C语言编程求助

2024-12-27 09:57:41
推荐回答(2个)
回答1:

函数myRowSort的作用是对每一行的前五个数按逆序排序,并且存放该行的最大值在第6个位置上。这个函数返回所有数据的均值。

注意,在主函数中调用myRowSort之前必须先调用aver函数,因为myRowSort需要在数组的第6列存储平均值,而aver函数正好完成了这个任务。

回答2:

以下是修改过的代码,增加了`myRowSort`函数:
```c
#include
float myRowSort(float array[][6]);
float aver(float array[][6]);
int main() {
int i = 0;
float pay[3][6] = {{2345, 4309, 3123, 2230, 4490}, {2098, 4320, 1644, 2865, 4589}, {3152, 2317, 3467, 4312, 5432}};
printf("average pay is %7.2f\n", aver(pay));
for (i = 0; i < 3; i++) {
printf("Pay of Class %d(sorted): ", i + 1);
myRowSort(pay);
printf("\n");
}
return 0;
}
float myRowSort(float array[][6]) {
int i, j, k;
float max;
for (i = 0; i < 3; i++) {
// 选择排序算法,对前五个数进行排序
for (j = 0; j < 4; j++) {
int min = j;
for (k = j + 1; k < 5; k++) {
if (array[i][k] > array[i][min]) {
min = k;
}
}
float temp = array[i][j];
array[i][j] = array[i][min];
array[i][min] = temp;
}
// 计算最大值并存储在第6个位置上
max = array[i][0];
for (j = 1; j < 5; j++) {
if (array[i][j] > max) {
max = array[i][j];
}
}
array[i][5] = max;
// 输出排序后的每一行数据
for (j = 0; j < 6; j++) {
printf("%7.2f ", array[i][j]);
}
printf("\n");
}
return aver(array);
}
float aver(float array[][6]) {
int i, j;
float sum, total = 0;
for (i = 0; i < 3; i++) {
sum = 0;
for (j = 0; j < 5; j++) {
sum += array[i][j];
}
array[i][5] = sum / 5.0; // 将每行的平均值存放在第6个位置上
total += array[i][5];
}
return (total / 3.0); // 返回所有数据的均值
}
```
在程序中增加了`myRowSort`函数,该函数实现了对数组中每一行前五个元素按逆序排序,并将该行最大值存储在第6个位置上。同时输出排序后每一行的数据。
在`main`函数中,先调用`aver`函数计算出所有数据的均值,并输出。然后使用循环调用`myRowSort`函数,对每一行进行排序并输出,由于`myRowSort`函数已经计算出了所有数据的均值,因此无需再次计算。
希望能对您有所帮助!