斯捷奇金aps:c程序问题,高手请进!

来源:百度文库 编辑:高考问答 时间:2024/04/29 16:26:07
题目,输入一个4行5列数组,求每行最大的元素和和每行平均数。

#include<stdio.h>
#define N 4
#define M 5
void main()
{
int i,j,a[N][M],p,s,max,maxj;
printf("please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{max=a[i][j];
maxj=j;
}
printf("a[%d][%d]=%d\n",i,maxj,max);

}
for(i=0;i<N;i++)
{s=0;
for(j=0;j<M;j++)
s=s+a[i][j];
p=s/M;
printf("p[%d]=%d\n",i,p);
}
}

主要是平均数问题,因为如果平均数为小数时,答案不精确。
请问,怎么修改才能使平均数精确求出来?谢谢
请大家具体把程序写出来,谢谢~1楼和2楼你们答案不能帮到我,但是仍然谢谢你们~你们说的我都试过了。主要是具体操作哦~~~~~~~~~~~`

平均数用double型变量
别用int
整形怎么能保存小数。。
#include<stdio.h>
#define N 4
#define M 5
void main()
{
int i,j,a[N][M],s,max,maxj;
double p;
printf("please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{max=a[i][j];
maxj=j;
}
printf("a[%d][%d]=%d\n",i,maxj,max);

}
for(i=0;i<N;i++)
{s=0;
for(j=0;j<M;j++)
s=s+a[i][j];
p=s*1.0/M;
printf("p[%d]=%f\n",i,p);
}
}

是啊~~不过用float不行吗?