c语言,求平均数,输出结果时用%d可以输出整数,用%f,%lf输出都是0.0000
#include
#include
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a,b,i,j,k,l,m;
b=0;
a=0;
i=0;
j=0;
k=0;
l=0;
m=0;
scanf("%d",&b);
while(b>a){
scanf("%d",&i);
j=j+i;
a++;
}
k = j*1.0;
l = b*1.0;
m = k/l;
printf("%d",m);
return 0;
}
供参考:
#include <stdio.h>
//#include <>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a,b,i,j;
float k,l,m; //修改
b=0;
a=0;
i=0;
j=0;
k=0;
l=0;
m=0;
scanf("%d",&b);
while(b>a){
scanf("%d",&i);
j=j+i;
a++;
}
k = j*1.0;
l = b*1.0;
m = k/l;
printf("%f",m); //printf("%d",m);
return 0;
}
m是整数,必须用%d输出。%f,%lf是输出浮点数用的啊
因为整数是以补码方式存储,浮点数在内存中存储方式是:符号位+指数+尾数,因此直接用%f,%lf打印整数会打印随机数,所以会出现这里的0.
你m = k/l;,那你m应该定义为浮点数啊。
int a,b,i,j,k,l;
float m;
printf("%f",m);
部分编译器需要配置lib库,设置里面找找,勾上,才能打印出浮点。而且你定义好float型。
你可以参考下这篇文章:C中格式化输出%lf,输出为保留6位小数的数。