输入一个5×4的二维数组,求各行元素之和,并将这些和按从小到大排列输出!

如题所述

第1个回答  2012-12-03
以下程序仅供参考:
//输入一个5×4的二维数组,求各行元素之和,并将这些和按从小到大排列输出
#include<stdio.h>
#define ROW 5
#define COL 4

void sum(int a[][COL+1],int r,int c)
{
for(int i=0;i<r;i++)
{
a[i][0]=0;
for(int j=1;j<c;j++)
a[i][0]+=a[i][j];
}
}
void paixu(int a[],int r)
{//直接插入排序
int t,j;

for(int i=1;i<r;i++)
{
t=a[i];
j=i-1;
while(t<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
}
}

void main()
{
int a[ROW][COL+1],temp[ROW];
printf("输入二维数组的值:\n");
for(int i=0;i<ROW;i++)
for(int j=1;j<=COL;j++)
scanf("%d",&a[i][j]);
for(i=0;i<ROW;i++)
{
for(int j=1;j<=COL;j++)
printf("%d\t",a[i][j]);
printf("\n");
}

sum(a,ROW,COL+1);
for(i=0;i<ROW;i++)
{
for(int j=0;j<=COL;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
for(i=0;i<ROW;i++)
{
temp[i]=a[i][0];
printf("%d\t",temp[i]);
}
paixu(temp,ROW);
printf("\n各行元素之和从小到大:\n");
for(i=0;i<ROW;i++)
printf("%d\t",temp[i]);

}本回答被提问者和网友采纳