有个疑惑,望指点

P5719 【深基4.例3】分类平均

qiiie_yyy @ 2023-04-06 17:58:34

过样例的时候B的平均值是50.0 我以为数据是错的,但是后面算了一下发现没问题 如果是因为printf用法什么的也希望告知一下(差不多才学半年有些地方不太懂)谢谢!

#include<iostream>
using namespace std;
int main(){
    int n,k;
    cin>>n>>k;
    double ap,bp;
    int ag=0,bg=0,az=0,bz=0;
    for(int i=1;i<=n;i++){
        if(i%k==0){
            ag++;
            az+=i;
        }
        else{
            bg++;
            bz+=i;
        }
    }
    ap=az/ag;
    bp=bz/bg;

    printf("%.1lf %.1lf",ap,bp);
    return 0;
}

by TheShuMo @ 2023-04-06 18:29:03

@qiiie_yyy az\ 首先你所有定义的变量都是 int 类型的,所以对 int 类型进行的任何运算都会切断小数,所以要不你在运算的时候把其中一个数强制转换成 double

(double)az/ag; (double)bz/bg; 这时候出来的就是非整数了。

或者直接全部用double定义(把int 换成double)


by qiiie_yyy @ 2023-04-08 13:51:54

@The_ShuMo 好的好的!非常感谢!!


|