方法:函数的引用,二维数组,数组函数;
题目:
首先进行分析;
1.二维数组的行排序;
2.首先算出每行的总和再算出平均值;
3.再运用交换行的函数进行交换;
4.理清思路,注意细节;
题目的解法:
#define _CRT_SECURE_NO_WARNINGS //这里运用了函数的反复调用,进行了分步解析,逻辑清晰;这里的调用函数可以好好学学
#include<stdio.h>
int main() {
void swap(int arr[][10], int n);
int n, arr[10][10];
scanf("%d", &n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &arr[i][j]); //最初二维数组的输入;
swap(arr, n); //调用函数;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
{
printf("%d ", arr[i][j]);
if (j == n - 1)printf("\n"); //每N个数换行;
}
}
return 0;
}
void swapRows(int arr[][10], int row1, int row2, int n)
{ //交换二维数组的行数
for (int i = 0; i < n; i++)
{
int temp = arr[row1][i];
arr[row1][i] = arr[row2][i];
arr[row2][i] = temp;
}
}
void swap(int arr[][10], int n) { //这里函数主要
void swapRows(int arr[][10], int row1, int row2, int n); //声明调用了上一个换行的函数;
int sum1, sum2;
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - 1 - i; j++) //先进行冒泡的循环,即这里是行的和进行比较,所以下面一个
{ //循环里算好每行的值,行的SUM进行 冒泡排序;
sum1 = 0; sum2 = 0;
for (int k = 0; k < n; k++)
{
sum1 += arr[j][k];
sum2 += arr[j + 1][k];
}
if (sum1 > sum2)swapRows(arr, j, j + 1, n);
}
}
在这里偷了个懒,主要没有进行算每行的平均值,这里直接比较每行的总和;也可以再写一个求平均值的函数,进行调用,从而接题!