C语言编程求出4×4矩阵中每行的最大值,输出最大值及位置,并输出他们的和。

如题所述

#include<stdio.h>
int main( )
{
    int num[4][4],*p=&num[0][0],*pSave,max[4]={0,0,0,0},sum=0,i=0;
    printf("输入矩阵16个数字:\n");
    while(p<=&num[3][3])//输入矩阵数字
    {
        scanf("%d",p++);
    }
    p=&num[0][0];
    while(1)//总循环
    {
        while(p<=&num[i][3])//子循环:统计一行
        {
            if(*p>max[i])
            {
                max[i]=*p;
                pSave=p;
            }
            p++;
        }
        sum=sum+max[i];
        i++;
        printf("第%d行最大值是第%d个元素值为%d\n",i,pSave-&num[i-1][0]+1,max[i-1]);
        if(p>&num[3][3])
            break;
    }
    printf("总和为%d\n",sum);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-14

代码如下:

#include <stdio.h>
#include <stdlib.h>

#define N 4

int main(){ 


// 定义一个4*4的数组
int matrix[N][N] = {
45, 85, 63, 12,
52, 89, 41, 32,
11, 14, 28, 24,
36, 63, 65, 49
};

int max = 0; // 最大值
int pos = 0; // 最大值位置
int sum = 0; // 最大值和

for (int i = 0; i < N; i++) {

max = matrix[i][0];
pos = 0;

for (int j = 0; j < N; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
pos = j;
}
}

sum += max;

printf("第%d行最大值是%d,位置:%d\n", i, max, pos);
}

printf("最大值之和:%d\n", sum);

system("pause");
return 0;
}

运行结果:

本回答被提问者和网友采纳
第2个回答  2018-05-14
int c[4][4]={5,6,7,8,
8,6,4,3,
6,8,9,2,
4,3,4,7};
int max=0;
int all=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)

{
if (c[i][j]>max) max=c[i][j];

}
printf("hang %d max = %d",i,max);
all=all+max;
max=0;
}

printf("All= %d",all);
相似回答