大佬求助

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

Irisss @ 2022-12-05 13:42:18

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,k;
    cin>>n>>k;
    float sum1;
    float sum2=0;
    float pin1,pin2;
    for(int i=1;i<=n;i++){
        if(i%k==0){
            sum1+=i;
            pin1++;
        }
        if(i%k!=0){
            sum2+=i;
            pin2++;
        }
    }
//  cout<<sum2<<endl;
    printf("%.1f",sum1/pin1);
    cout<<" ";
    if(sum2==0){
        cout<<"0.0";
        return 0;
    }
    if(sum2!=0){
        printf("%.1f",sum2/pin2);
    }
    return 0;
}

下载数据带进程序发现是对的。


by Powerful_25 @ 2022-12-05 13:45:43

@Irisss pin1pin2没赋初值。


by ztj000 @ 2022-12-05 13:48:51

sum1,pin1,pin2都要定义为0


by HYdroKomide @ 2022-12-05 13:49:47

这种变量建议在主函数外定义,自动赋初值为 0


by Powerful_25 @ 2022-12-05 13:51:01

@Irisss 还有sum1未赋初值以及或许精度问题(?)


by Powerful_25 @ 2022-12-05 13:53:17

@Irisss 另外建议下次不要只是带入程序,而是在代码间加调试输出然后运行一下捏


by ztj000 @ 2022-12-05 13:53:31

@sherry0218 float精度够了


by Powerful_25 @ 2022-12-05 13:54:03

@ztj000 哦哦谢谢


by Irisss @ 2022-12-05 14:00:46

@sherry0218 赋值之后仍然有三个点数据不对,另外我想请问一下什么叫在代码间加调试输出,不明白是什么意思。


by donnieguo @ 2022-12-05 14:05:44

@Irisss 就是说在循环或判断中加入一句输出语句(内容随便)看有没有输出,输出就代表走进去了,没输出就代表没走进去。


by Irisss @ 2022-12-05 14:10:58

@donnieguo 哦我明白了,其实这种语句,我在调试的时候经常用,只是提交的时候不习惯打斜杠就直接删除了


| 下一页