c语言pat基础题0828L1068

img

img


#include<stdio.h>
int main(){
    int N;
    scanf("%d",&N);
    float arr[N],bridge[N],sum=0,av;
    for(int i=0;i<N;i++){
        scanf("%f",&arr[i]);
    }
    for(int i=0;i<N;i++){
        bridge[i]=1/arr[i];
        sum+=bridge[i];
    }
    av=sum/N;
    printf("%.2f",av);
}

我的代码出现问题,本题希望可以得到大家的指导,谢谢你的帮助!

修改如下,供参考:

#include <stdio.h>
#define N  1001    // 修改
int main() 
{
    int n;        // 修改
    scanf("%d", &n);
    float arr[N] = { 0 }, bridge[N] = { 0 }, sum = 0, av;
    for (int i = 0; i < n; i++) {
        scanf("%f", &arr[i]);
    }
    for (int i = 0; i < n; i++) {
        bridge[i] = 1 / arr[i];
        sum += bridge[i];
    }
    av = n / sum;  //av = sum / n; 修改
    printf("%.2f", av);
    return 0;
}

将第15行的变量av改为1/av即可。

修改如下:


  
#include<stdio.h>
int main(){
    int N;
    scanf("%d",&N);
    float arr[N],bridge[N],sum=0,av;
    for(int i=0;i<N;i++){
        scanf("%f",&arr[i]);
    }
    for(int i=0;i<N;i++){
        bridge[i]=1/arr[i];
        sum+=bridge[i];
    }
    av=sum/N;
    // 因为调和平均是求数列每个数的倒数的算术平均的倒数, 
    //  所以将av改为1/av即可 
    printf("%.2f",1/av);
}

img

【以下回答由 GPT 生成】

我会尝试帮你解决这个问题。

首先,在你的代码中,我注意到了几个问题:

  1. 你声明了一个整数N来表示数组的大小,但是在C语言中,数组的大小必须是常量,不能是变量。可以考虑使用动态内存分配来解决这个问题。

  2. 你声明了一个整型数组bridge来存储每个元素的倒数,但是你计算倒数的方式不正确。在C语言中,两个整数相除的结果是整数,因此你应该使用浮点数进行计算。

基于上述问题,我给出了以下修改方案:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int N;
    float* arr;
    scanf("%d", &N);

    // 动态分配内存
    arr = (float*)malloc(N * sizeof(float));

    for (int i = 0; i < N; i++) {
        scanf("%f", &arr[i]);
    }

    float* bridge = (float*)malloc(N * sizeof(float));
    float sum = 0, av;

    for (int i = 0; i < N; i++) {
        bridge[i] = 1.0 / arr[i]; // 使用1.0确保浮点数相除
        sum += bridge[i];
    }

    av = sum / N;

    printf("%.2f", av);

    // 释放内存
    free(arr);
    free(bridge);

    return 0;
}

修改后的代码解决了以下问题:

  1. 使用了动态内存分配来解决数组大小为变量的问题。
  2. 修改了计算倒数的方式。
  3. 在输出时使用printf("%.2f", av);来保留两位小数。

请尝试运行修改后的代码,并验证结果是否正确。如果还有其他问题,请随时告诉我。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^