我有这个程序:
#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;但它没有用。
有人能帮助我吗?
答案 0 :(得分:4)
如果您将sum
的类型更改为float
或double
,, / em>您还需要更改printf
来电中的格式说明符。使用%f
输出float
。
答案 1 :(得分:1)
那是因为你在最后打印了一个%d,用于int类型。如果要正确打印浮动,则必须使用%f。