C语言数组元素求和的编写程序(具体的步骤)

题目如下
输入:
a[4][4]={1,2,3,4}{4,5,6,1}{7,8,9,1}{10,11,12,1}
求数组元素之和;求各行元素之和,并按数值从小到大排列输出;求个列元素之和,并按数值从大到小排列输出。

第1个回答  推荐于2017-09-06
程序如下:
#include <stdio.h>
int a[4][4]={{1,2,3,4},{4,5,6,1},{7,8,9,1},{10,11,12,1}};
int ahang[4],alie[4];
void main()
{
int sum=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
sum+=a[i][j];
ahang[i]+=a[i][j];
alie[j]+=a[i][j];
}
}
printf("%d\n",sum);
int k,o;
int min,max;
int temp,index;
for(k=0;k<3;k++)
{
min=ahang[k];
index=k;
for(o=k+1;o<4;o++)
{
if(ahang[o]<min)
{
min=ahang[o];index=o;
}
}
temp=ahang[k],ahang[k]=min,ahang[index]=temp;
}
for(k=0;k<4;k++)
{
printf("%3d",ahang[k]);
}
printf("\n");
for(k=0;k<3;k++)
{
max=alie[k];
index=k;
for(o=k+1;o<4;o++)
{
if(ahang[o]>max)
{
min=alie[o];index=o;
}
}
temp=alie[k],alie[k]=min,alie[index]=temp;
}
for(k=0;k<4;k++)
{
printf("%3d",alie[k]);
}
printf("\n");
}

说明:
用两个for循环,计算数组元素总和sum,和各行元素子和ahang[i]和各列之和alie[i],0=<i<=3;
下面用选择排序法,分别对ahang[i]和alie[i]排序.只是一个选择最小,一个最大,算法几乎一致.
程序是可以使用的.本回答被提问者采纳
第2个回答  2009-10-19
C++版本,VC++上可以运行:
#include<iostream>
using namespace std;

#define M 4
#define N 4

void BubbleSort(int a[],int len,int type)
{
int temp;
bool flag;
for (int i=0;i<len-1;i++)
{
flag=false;
for (int j=0;j<len-1-i;j++)
{
if (type?(a[j]>a[j+1]):(a[j]<a[j+1]))
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=true;
}
}
if (!flag)
break;
}
}
void main()
{
int a[M][N]={{1,2,3,4},{4,5,6,1},{7,8,9,1},{10,11,12,1}};
int row[M]={0},col[N]={0};
int sum=0,i,j;
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
{
sum+=a[i][j];
row[i]+=a[i][j];
col[j]+=a[i][j];
}
}
cout<<"Sum = "<<sum<<endl;

BubbleSort(row,M,1);

cout<<"row[] = {";
for (i=0;i<M;i++)
{
cout<<row[i]<<",";
}
cout<<"}"<<endl;

BubbleSort(col,N,0);

cout<<"col[] = {";
for (j=0;j<N;j++)
{
cout<<col[j]<<",";
}
cout<<"}"<<endl;
}
相似回答