请帮忙看一下 这道C语言题
题目是:输出格式:在一行中按照格式“Sum=和;Average=平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。C语言不是可以隐形转换吗,为什么Average=...
题目是:
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
C语言不是可以隐形转换吗,为什么Average=(a+b+c+d)/4.0;这里必须写4.0
#include <stdio.h>
int main () {
int a,b,c,d;
float Average;
scanf("%d%d%d%d\n",&a,&b,&c,&d);
Average=(a+b+c+d)/4.0;
printf("Sum = %d; Average = %.1f",a+b+c+d,Average);
return 0;
} 展开
输出格式:
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
C语言不是可以隐形转换吗,为什么Average=(a+b+c+d)/4.0;这里必须写4.0
#include <stdio.h>
int main () {
int a,b,c,d;
float Average;
scanf("%d%d%d%d\n",&a,&b,&c,&d);
Average=(a+b+c+d)/4.0;
printf("Sum = %d; Average = %.1f",a+b+c+d,Average);
return 0;
} 展开
2个回答
展开全部
不知你问什么问题!
把scanf("%d%d%d%d\n",&a,&b,&c,&d);改成scanf("%d%d%d%d",&a,&b,&c,&d);。
把Average=(a+b+c+d)/4.0;改成Average=(a+b+c+d)/4.0f;。——不改会有警告!
追问
直接除以4,然后放进变量不行吗,不是可以进行隐性转换
追答
a、b、c、d是int型,自然a+b+c+d的和也是int型,4默认也是int型;两个int型的值被/后就只取整数部分,赋给Average后倒是把商“隐性”成了float型,但这商却丢了小数部分,结果就不对了。“隐性”不会把丢掉的小数找回来!核心是/在两边都是int型时是“取整除”,有一边为浮点型时是“浮点除”,所以二者结果不同,这与“隐性”转换无关。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询