问题标题: 酷町堂:4553错在哪

0
0
已解决
丁应翔
丁应翔
新手守护
新手守护
#include<bits/stdc++.h> 
using namespace std;
int n=0,i,a,s,q=10100,w=0,e=8,d,m;
int main() 
{
    while(1) 
    {
        cin>>a;
        w=w+a;
        s=s+1;
        if(a==-1)
        {
            break;
        }
        if(a>=15&&a<=30)
        {
            n=n+1;
        }
    }
    cout<<n<<" "<<w*1.0/s;
    return 0;
} 

 


0
已采纳
胡钰妍
胡钰妍
资深光能
资深光能

@丁应翔 我先跟你解释一下,你是用*1.0的方式做得(看上去没问题对吧)但是,你试一试100 100 100 -1这组数据,就会发现*1.0会让数变成double类型的数据,并不能决定保留几位(1位,2位。。。。。。),所以,建议你用printf的方法,保留1位小数!并不难,把你的第21行改成

cout<<n<<" ";

printf("%.1f",(double)w/s);

就可以。

记住,printf只能识别double,所以要强转哦!

划重点:望采纳,没豆啦!

有问题@我哦,几乎随时在线(不敢保证)

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

要保留小数,用printf

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


    int a=1;
    double cnt1=0,sum=0,cnt2=0;
    while(a!=-1){
        cin>>a;
        sum+=a;
        if(a>=15&&a<=30){
            cnt1++;
        }
        cnt2++;
    }
   最后输出cnt1 空格保留一位小数输出sum/cnt2
    return 0;
}
祝你AC

我要回答