一个很简单的问题,从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。平均值保留两位小数
我先这样写的(#include<stdio.h>及main省略,只看程序主体)
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",a+b+c);
printf("%.2f\n",(a+b+c)/3);
return 0;
结果出来是和没有问题,走到平均值那里程序显示runtime error
于是我改了下
int a,b,c;
double aver;
scanf("%d %d %d",&a,&b,&c);
aver=(a+b+c)/3;
printf("%d\n",a+b+c);
printf("%.2f\n",aver);
return 0;
结果这样一来,和还是没问题,但是平均值的两位小数始终是00,这个就奇怪了
然后朋友改了下,如果不考虑要求中的必须存入整形变量,改成float或者double,都没问题了,结果OK
完全没明白是怎么回事,所以想请教下,第一种情况的运行时间错误是怎么出来的呢?第二种情况下,同运算式中出现不同类型变量不是会低级自动转化为高级么,aver应该是没有问题的啊,但是现在的感觉变成了右边三个量先按照整形计算完毕再一次性转化成了浮点,因此成了.00,为什么会出现这样的情况呢?
另外,这道题到底该怎么写?
多谢各位指点了~~
原题是这样的
从键盘输入三个整数,分别存入x,y,z三个整型变量中,计算并输出三个数的和以及平均值。【输入形式】从键盘输入三个整数,整数之间以空格隔开。【输出形式】在屏幕上分两行显示结果:第一行为三个数的和,整数形式输出;第二行为三个数的平均值,浮点数形式输出,小数点后保留两位小数。【输入样例】3 2 3【输出样例】82.67【样例说明】3、2、3的和为8,所以第一行输出8;第二行输出3、2、3的平均值2.67(保留两位小数)。