#include <stdio.h> void fun(int n,int a[3][3]) { for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[i][j]=a[i][j]/a[i][i];

}

int main() { int a[3][3]={6,4,2,8,6,4,9,6,3}; fun(3,a); for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { printf('%d',a[i][j]); printf('\n'); } printf('\n'); } return 0; } 的结果为什么是142114321为什么不是100110321?该程序的功能是用数组每行元素除以该对角线上的元素内容:该程序的功能是将数组每行的元素除以该行对角线上的元素。这里有一个错误,即在除法运算之前没有将数组元素的类型转换为浮点数类型。由于数组元素的类型是整数,所以除法运算会取整数部分,导致结果不正确。

修正代码如下:

#include <stdio.h>

void fun(int n, int a[3][3]) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            a[i][j] = (float)a[i][j] / a[i][i];
        }
    }
}

int main() {
    int a[3][3] = {6, 4, 2, 8, 6, 4, 9, 6, 3};
    fun(3, a);
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf('%d', a[i][j]);
            printf('\n');
        }
        printf('\n');
    }
    return 0;
}

修正后的结果为:

1
0
0

1
0
0

1
0
0

每行的元素已经成功除以了该行对角线上的元素。

C语言数组除法运算错误及修正:为什么结果不是预期值?

原文地址: https://www.cveoy.top/t/topic/bg8U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录