为什么不能正确划分

Why is it not dividing correctly

为什么这段代码分割不正确?

这段代码应该找到所有总和可以mod b1a),以及不能[=38=的数字]. 然后输出.

平均值

代码:

#include <iostream>
using namespace std;
int main(){
    int a,b;
    cin >> a >> b;
    double asum = 0, bsum = 0;
    double acnt = 0, bcnt = 0;
    double ansa = 0, ansb = 0;
    for(int i = 1; i<=a; i++){
        if(i%b == 0){
            asum+=i;
            acnt++;
        }else{
            bsum+=i;
            bcnt++;
        }
    }
    cout << asum << " " << acnt << endl;
    cout << bsum << " " << bcnt << endl;
    ansa = asum / acnt;
    ansb = bsum / bcnt;
    printf("%.1lf", &ansa);
    cout << " ";
    printf("%.1lf",&ansb);
    return 0;
}

输入:

100 16

现在的输出:

0.0 0.0

正确输出

56.0 50.1

有谁知道发生了什么事吗?

printf("%.1lf", &ansa);

%lf 格式说明符要求参数的类型为 double(传递 float 也可以,因为它会被转换)。 &ansa 的类型是 double* ,这是一种不同的类型。程序的行为未定义。

我建议使用 std::cout。在使用它时更容易不完全破坏你的程序。