二维数组作为函数参数
要求:对二维数组的奇偶行分别进行升序和降序排序,要求用函数实现。
主要代码:
#include <stdio.h>
void sort_array(int a[], int n, char c);
void print_array(int a[][5], int n);
int main()
{
int i;
int num[4][5] = {
{1,3,2,4,5},
{1,3,2,4,5},
{1,3,2,4,5},
{1,3,2,4,5}
};
printf("原始数据:\n");
print_array(num, 4); //num是二维数组,作为参数整个传递给函数
for (i = 0; i < 4; i++)
{
if (i%2 == 0)
sort_array(num[i], 5, 'a'); //num[i]是个一维数组
else
sort_array(num[i], 5, 'd');
}
printf("排序后数据:\n");
print_array(num, 4);
return 0;
}
void sort_array(int a[], int n, char flag) // flag 'a'-asc, 'd'-desc
{
int i, j, t;
for (i = 0; i < n-1; i++)
{
for (j = 0; j < n-1-i; j++)
{
if (flag == 'a')//升序
{
if (a[j] < a[j+1])
{
t = a[j]; a[j]= a[j+1]; a[j+1] = t;
}
}else{ // 降序
if (a[j] > a[j+1])
{
t = a[j]; a[j]= a[j+1]; a[j+1] = t;
}
}
}
}
return;
}
void print_array(int a[][5], int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < 5; j++)
printf("%4d", a[i][j]);
printf("\n");
}
}
PS:二维数组可以看成是一维数组的数组,即先看成一个一维数组,其中的每个元素还是一个一维数组。