注册 登录
编程论坛 C语言论坛

求平均数问题,编译过程中输入一个5后回车再输入一个6就有下面的结果,为啥啊

祺行 发布于 2022-08-29 16:52, 1100 次点击
#include<stdio.h>
int main()
{
    int sum=0,num=0,n=0,x=0;
    scanf("%d",num);
    while(num!=-1)
    {
        sum+=num;
        n++;
        scanf("%d",num);
    }
    x=sum/n*1.0;
    printf("%f",x);
    return 0;
}


5

--------------------------------
Process exited after 4.497 seconds with return value 3221225477
请按任意键继续. . .
6 回复
#2
op1232022-08-29 17:05
scanf("%d",num);改成scanf("%d",&num);就行了
#3
op1232022-08-29 17:07
你要输入是num的地址,不是输入num
#4
op1232022-08-29 17:28
还有,如果你要输出一个一位小数,那就要定义double类型或float类型的x并且要改成printf("%.1f",x);
#5
op1232022-08-29 17:29
两位小数就是printf("%.2f",x);
#6
op1232022-08-29 17:30
如果你要输出一个整数,就把第13行改成printf("%d",x);
#7
rjsp2022-08-30 09:24
好多错误,尤其是“sum/n*1.0”,我猜你想写的是 sum*1.0/n 或 1.0*sum/n

程序代码:
#include <stdio.h>

int main( void )
{
    double sum = 0;
    size_t n = 0;
    for( int num; scanf("%d",&num)==1 && num!=-1; ++n )
        sum += num;
    printf( "%f\n", n==0?0:sum/n );
}
1