c语言 用子函数编辑二维数组的输入 输出 排序 逆序

如题所述

//December 10,2014 By 12952010
#include<stdio.h>
#define row 3
#define column 3

int sort(int array[][column]){//冒泡排序 

int temp,j,i;
int arr[row*column];
int k=0;
for(i=0; i<row; i++)
for( j=0; j<column ; j++){
arr[k++]= array[i][j];
}

for(i=0;i<row*column-1;i++)
  for(j=0;j<row*column-i-1; j++)
    if(arr[j+1]<arr[j]){
     temp=arr[j];
     arr[j]=arr[j+1];
     arr[j+1]=temp;
    }

for(i=0 ,k=0; i<row; i++)
for( j=0; j<column ; j++){
array[i][j]=arr[k++];
}

}

void show(int array[][column] ){//显示数组元素 

for( int  i=0 ; i< row; i++ ) {
printf("\n");
for(int j=0; j<column; j++){
printf("  %4d ",array[i][j]);
}
}

}

void display(int array[][column]){//逆序输出
for(int i=row-1;i>=0;i--){
printf("\n");
for(int j=column-1;j>=0;j--) 
printf("  %4d ",array[i][j]);
}
 
}

void setting(int array[][column]){//初始化数组 

int temp=10;

for( int  i=0; i<row; i++ ){
for( int j=0; j<column; j++)
array[i][j]=temp--;
}

}

int main(){
int array[row][column];

setting(array);
printf("\n\n-------Befor sort---------\n");
show(array);

printf("\n\n-------逆序输出---------\n");
display(array);


printf("\n\n-------After sort---------\n");
sort(array);
show(array);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答