C语言编程求助

incude <stdio.h>
int main()
{ float aver(float array[][6]);
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("average pay of Class %d: %7.2f\n",i+1,pay[i][5]);
return 0;
}
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=sum+array[i][j];
array[i][5]=sum/5.0;
total=total+array[i][5];
}
return (total/3.0);
}
在源代码中增加函数 float myRowSort(float array[][6])函数功能描述如下:

1)每一行前 5 个数按逆序排序
2)第 6 个数存放该行最大值
3) 返回值是所有数据的均值

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

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-23
以下是修改过的代码,增加了`myRowSort`函数:
```c
#include <stdio.h>
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`函数已经计算出了所有数据的均值,因此无需再次计算。
希望能对您有所帮助!
相似回答