问题标题: 酷町堂:3954,0分

0
0
管景仁
管景仁
修练者
修练者

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
int s,g=0,h=0,j=0,l=0,o=0;
    while(1)
    {
        cin>>s;
        if(s==3)
        {   
            g++;
            o=o+3;
            l++;
        }
        if(s==2)
        {
            h++;
            o=o+2;
            l++;
        }
        if(s==0)
        {
            j++;
            l++; 
        } 
        if(s==-1)
        {
            break;
        }
    }
    cout<<g<<" "<<h<<" "<<j<<" "<<endl<<o<<" ";
    printf("%.1f",o/l);
    return 0;
}

 

 


1
王子耀
王子耀
缔造者
缔造者

同学您好,很高兴为您解答!

你的错误在于输出,保留一位小数哪里;

因为o和l都是整型,所以会输出0.0;

  printf("%.1f",o/l);

应该为:

 printf("%.1f",o*1.0/l);

记得批准哦!谢谢!

0
0
万韧山
万韧山
初级天翼
初级天翼

需要强转double类型或乘1.0

0
叶佳萱
叶佳萱
资深守护
资深守护

好你个管景仁 这可是作业

0
0
徐智勋
徐智勋
初级光能
初级光能

很抱歉,我不是这样写的

0
0
0
汪恺恒
汪恺恒
中级启示者
中级启示者

o和l都是整型,应该是double(o)/l

0
张帆
张帆
中级天翼
中级天翼

因为o,l都是整型,所以printf输出有时会不对

    printf("%.1f",o/l);

改为(任选其一):

    printf("%.1f",(double)o/l);
    printf("%.1f",o*1.0/l);
    printf("%.1f",(double)o/(double)l);

 

0
王博佑
王博佑
新手守护
新手守护

o是整型变量,要转换成实型变量:

printf("%.1f",o*1.0/l);

 

我要回答