c语言,求平均数,输出结果时用%d可以输出整数,用%f,%lf输出都是0.0000

问题遇到的现象和发生背景

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位小数的数。