注册 登录
编程论坛 C++教室

我血泪的作业啊

刘华军 发布于 2012-10-11 22:35, 632 次点击
希望高手可以帮我解决问题,小妹先行谢过了,
#include<stdio.h>
int main()
{
    int a,b,c;
    double x;
    printf("输入三个学生的数学成绩:\n");
    scanf("%d%d%d",&a,&b,&c);
    x=(a+b+c)/3;
    printf("平均分:\n");
    printf("%.2f\n",x);
}
还有这个#include<stdio.h>
int main()
{
    int a,b,c;
    double x;
    scanf("%d%d%d",&a,&b,&c);
    x=(a+b+c)/3;
    printf("%.2f\n",x);
}
   
为什么总是显示答案错误50%
12 回复
#2
寒风中的细雨2012-10-11 22:39
求平均值  把3改成3.0
#3
刘华军2012-10-11 22:41
回复 2楼 寒风中的细雨
为什么啊,他要求是输入3个整数啊,然后输出平均值要保留2位小数
#4
寒风中的细雨2012-10-11 22:45
回复 3楼 刘华军
对比前后现象


分析‘/’运算符  在整数  和  浮点数
#5
lz10919149992012-10-12 11:17
4楼说的很清楚了。
#6
有容就大2012-10-12 12:45
帮顶。。。
#7
jd20111221152012-10-12 13:27
回复 3楼 刘华军
   "/"运算符与"÷"不完全相同,"/"在两个整数间的运算是除后取整数部分。
   x是double类型,而a、b、c三个变量和常量3都是int类型,x=(a+b+c)/3是将int型赋值给double型,得到的只能是整数部分。
   将3改为3.0意味着"/"在整数和浮点数间的运算。3.0是浮点类型(float或double型),精确度高,得到的数服从高精度数,因而x得到你期望的正确结果。
   也可以这样改:x=(double)(a+b+c)/3;(double)即强制转换,将a+b+c的结果转换为double型,同样满足上述运算,x依然得到你期望的正确结果。
#8
wuyushuai5212012-10-13 10:00
顶上面的。也可以把a,b,c的数据类型修改成double型。
#9
lchpersonal2012-10-15 13:57
7楼正解
#10
小糊涂神c302012-10-15 14:44
x=1.0*(a+b+c)/3;这样改也行!
#11
pangding2012-10-16 08:37
楼主还不结帖。
#12
qunxingw2012-10-16 10:16
提倡女同学多发帖。
#13
ztcwlj2012-10-16 14:18
学习了呀!
1