有一个二维数组整数型数组中,每一行都有一个最大值,编程求出这些最大值以及他们的和

如题所述

#include<stdio.h>
#define N 4
#define M 5
void main() { int a[N][M],i,j,k,s,b[N];
  for ( i=0;i<N;i++ ) for ( j=0;j<M;j++ ) scanf("%d",&a[i][j]);
  for ( i=s=0;i<N;i++ ) {
    for ( j=1,k=a[i][0];j<M;j++ ) if ( k<a[i][j] ) k=a[i][j];
    s+=k; b[i]=k;
  }
  for ( i=0;i<N;i++ ) printf("%d ",b[i]); printf("\n");
  printf("%d\n",s);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-09
include <iostream.h>
void sort(int ( *p)[5] );
int main()
{
int a[2][5]={3,6,1,8,5,7,11,5,14,25};
int i,j,sum=0;

//输出数组元素:
int count=0;
for(i=0;i<2;++i)
for( j=0;j<5;++j)
{ count++;
cout<<a[i][j]<<" ";
if(count%5==0)
cout<<endl;
}

//使该数组各行按照从小到大的顺序排序
sort(a);

for(i=0;i<2;++i)
sum+=a[i][4];

cout<<"每行最大值的和:"<<sum<<endl;

return 0;
}

void sort( int ( *p)[5])
{
int i,j,temp;

for( i=0;i<5;++i)
for(j=0;j<4;++j)
{ if( *(*(p)+j)>(*(*(p)+j+1)))
{ temp= *(*(p)+j);
*(*(p)+j)=*(*(p)+j+1);
*(*(p)+j+1)=temp;
}
}

for(i=0;i<5;++i)
cout<< *(*(p)+i)<<" ";
cout<<endl;

for( i=0;i<5;++i)
for(j=0;j<4;++j)
{ if( *(*(p+1)+j)>*(*(p+1)+j+1))
{ temp= *(*(p+1)+j);
*(*(p+1)+j)=*(*(p+1)+j+1);
*(*(p+1)+j+1)=temp;
}
}

for(i=0;i<5;++i)
cout<< *(*(p+1)+i)<<" ";
cout<<endl;

}
第2个回答  2010-11-09
先输入二维数组的行数和列数,再输入数据

#include "stdio.h"
#define N 100
void main()
{
int a[N][N];
int row,col;
int i,j;
int sum=0;
int max;
printf("Please input row anf col:\n");
scanf("%d%d",&row,&col);
printf("Plaese input data:\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++) { scanf("%d",&a[i][j]); }
}
for(i=0;i<row;i++)
{
max=a[i][0];
for(j=0;j<col;j++) { if(max<a[i][j]) max=a[i][j]; }
sum+=max;
printf("No.%d:%d\n",i+1,max);
}
printf("sum=%d\n",sum);
}

如果对你有所帮助,请记得采纳最佳答案,谢谢!本回答被提问者和网友采纳
相似回答