m0_63999697 2021-12-24 11:35 采纳率: 93.5%
浏览 114
已结题

矩阵规范化。怎么改(语言-c语言)

问题描述
有一种矩阵规范化是这样做的:先找出矩阵的每一行中的最大值,然后每行的每个元素分别除该行的最大值。

要求写一个函数实现矩阵的规范化,在函数中使用指针。

输入
只有一组测试用例。 输入第一行是两个整数m(小于50)和n(小于50),分别表示矩阵的行数与列数。接下来m行,每行n个浮点数,之间用空格分开。

输出
输出规范化后的矩阵,所有元素保留2位小数。总共m行,每行n个浮点数。之间用空格分开,注意每行最后一个元素后面没有空格。

输入样列
3 3
1 2 3
4 5 6
7 8 9

#include<stdio.h>
int main()
{
    int n,m,x,y;
    int i,j;
    scanf("%d %d",&n,&m);
    double max[n];
    double a[n][m];
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<n;i++){
        max[i]=a[i][0];
        for(j=0;j<m;j++){
            if(a[i][j]>max[i]){
                max[i]=a[i][j];
            }
        }
    }
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            a[i][j]=a[i][j]/max[i];
            printf("%.2f ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

输出的第一行会出错

  • 写回答

1条回答 默认 最新

  • a5156520 2021-12-24 12:15
    关注

    把第二个scanf读取n行m列那个的%d改为%lf,因为是读取double类型浮点数。
    然后同样打印%.2f也改为%.2lf,就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 修改了问题 12月24日
  • 修改了问题 12月24日
  • 展开全部