求助C语言

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

hello098 @ 2023-08-30 11:07:09

//给定 n 和 k,从 1 到 n 之间的所有正整数可以分为两类:A 类数可以被 k 整除(也就是说是 k 的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。
#include <stdio.h>
int main()
{
    int n,k,x,y,sum1 = 0,sum2 = 0;
    scanf("%d %d",&n ,&k );
    int a[n],b[x],c[y];

    for(int i = 0;i < n; i ++){
        if(a[i] % k == 0){
        int x = 0;
            b[x] = a[i];
            x ++;
        }else{
        int y = 0;
            b[y] = a[i];
            y++;

        }
    }

    for(int i = 0;i < x; i ++){
        sum1 +=b[i]; 
    }
    for(int i = 0; i < y; i ++){
        sum2 +=c[i];
    }

    printf("%.1f %.1f",sum1/(x + 1),sum2/(y + 1));

    return 0;
}

by Patpowder @ 2023-08-30 11:43:26

你这个不就是C++嘛

你的代码好离谱,建议重写

不就是循环 1n,遍历每个数字是否是 k 的倍数嘛,统计一下,最后输出每类数除以 n 的百分数嘛,设A类数字是 x1 个,B类数字有 x2 个,那就是

printf("%.1f %.1f",x1/(double)n*100,x2/(double)n*100);

所以,建议重写,

给你看看我的代码吧(遮脸

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

int n,k;
int A_tot,A_amo;
int B_tot,B_amo;

int main() {

    cin>>n>>k;

    for(int i=1;i<=n;i++){
        if(i%k == 0){
            A_tot += i;
            A_amo += 1;
        } else {
            B_tot += i;
            B_amo += 1; 
        }
    }

    cout <<fixed<<setprecision(1)<<(double)A_tot/A_amo<<" "<<(double)B_tot/B_amo<<endl;
    // 这段以前写的,那时候不会用printf()

    return 0;
}
*/

by Patpowder @ 2023-08-30 11:47:20

草了,注释漏了一段没删


|