用FLOAT改变INT

时间:2017-07-04 15:51:47

标签: c

我有这个程序:

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

#define n 3
#define m 3

int main(void)
{
int i;
int j;
int mat[n][m];
int sum = 0;

for (i = 0; i < n; i++)
{
    for (j = 0; j < m; j++)
    {
        printf("Enters the matrix values[%d][%d]: ", i, j);
        scanf("%d", &mat[i][j]);
    }
}

for (i = 0; i < n; i++)
{
    for (j = 0; j < m; j++)
    {
        sum = sum + mat[i][j];
    }
}

printf("the sum of all elements of matrix is: %d\n", sum);

for (i = 0; i < n; i++)
{
    sum = 0;
    for (j = 0; j < m; j++)
    {
        sum = sum + mat[i][j];
    }
    sum = sum / m;
    printf("The average of the i-th line is %d e': %d\n", i, sum);
}
getch();
}

此程序有效,但如果和的结果是奇数,则第i行的平均值默认近似。

为了解决这个问题,我已经改变了&#34; int summ&#34;用&#34;浮点数&#34;但它没有用。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:4)

如果您将sum类型更改为floatdouble / em>您还需要更改printf来电中的格式说明符。使用%f输出float

答案 1 :(得分:1)

那是因为你在最后打印了一个%d,用于int类型。如果要正确打印浮动,则必须使用%f。