-2

基本上我想创建一个二维数组大小 NxN,在每一行中找到最大值并将其替换为上三角形,或者将元素替换为该特定行的最大值,但在对角线上方。

#include <stdio.h>
#include <stdlib.h>
#define MAXIMUM 100

int main()
{
     int n, i, j, temp,m;
    float a[MAXIMUM][MAXIMUM], max;
    printf("dimensions: ");
    scanf("%d",&n);
    printf("input elements\n");
    for (i=0; i<n; i++){
        for (j=0; j<n; j++){
            scanf("%f",&a[i][j]);
        }
    }

    max=a[0][0];
    for (i=0; i<n; i++){
        for (j=0; j<n; j++)
            {
                if(max<a[i][j]){
                    max=a[i][j];
                }

            for(m=0;m<n;m++) //the problem starts here
                {
                    if(max>a[i][m]){
                        if(i+m>n-1){
                        a[i][m]=max;
                        }

                    }
                }
            }
        }

            for(i = 0; i < n; i++) {
                printf("\n");
                    for(j = 0; j < n; j++) {
                            printf("%f ", a[i][j]);
                        }
        }
    return 0;
}
4

2 回答 2

0

也许像这样

for (i=0; i<n; i++){
    max=a[i][0];
    for (j=1; j<n; j++){
        if(max<a[i][j]){
            max=a[i][j];
        }
    }
    for(m=i;m<n;m++){
        a[i][m]=max;
    }
}
于 2013-06-16T17:43:08.173 回答
0

每次J循环结束,然后m循环开始,所以当它在m循环时j的值为n-1。这是一个问题。

于 2013-06-16T17:35:42.793 回答