我1+…100奇数的平均值 为啥呢出不来结果啊

img


我1+…100奇数的平均值 为啥呢出不来结果啊 辛苦看一下 谢谢您💗

你的i++只有在i是奇数的时候才能执行,如果i是偶数就死循环了;所以把i++写在if外面或者for语句里;

该回答引用chatgpt:

#include <stdio.h>

int main() {
    int sum = 0;
    int count = 0;

    for (int i = 1; i <= 100; i += 2) {
        sum += i;
        count++;
    }

    float average = (float) sum / count;

    printf("1到100中的奇数的平均值为 %.2f", average);

    return 0;
}


修改如下,供参考:

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7598057
  • 这篇博客你也可以参考下:对1到100的整数进行分解
  • 除此之外, 这篇博客: 猜一个1-100的数字中的 注释也是必不可少的 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    Markdown将文本转换为 HTML

  • 以下回答来自chatgpt:

    我建议先检查你计算平均值的代码是否正确,可以将代码部分贴出来供我参考。如果代码没有问题,可能是你的计算逻辑有误,需要重新审视一下代码并进行排查。

    此外,参考资料中的代码片段提供了一个实现数组初始化和排序的方法,但并未提及如何计算平均值。如果需要计算奇数的平均值,可以在数组初始化时只生成奇数,然后求平均值即可。具体实现代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    
    #define RANDSIZE 100
    #define ARSIZE 50    // 只需要奇数大小缩小一半
    
    void Init_Ar(int* br, int n)
    {
        assert(br != NULL);
        int i = 0;
        while (i < n)
        {
            int tmp = rand() % RANDSIZE + 1;
            if (tmp % 2 == 1 && i == 0){
                br[i] = tmp;
                ++i;
            }
            else if (tmp % 2 == 1 && i > 0 && tmp != br[i - 1])    // 保证无重复
            {
                br[i] = tmp;
                ++i;
            }
        }
    }
    
    float GetMean(int* br, int n)
    {
        float sum = 0;
        for(int i = 0; i < n; i++){
            sum += br[i];
        }
        return sum / n;
    }
    
    int main()
    {
        const int n = ARSIZE;
        int ar[n] = {};
        Init_Ar(ar, n);
    
        printf("数组:\n");
        for(int i=0; i<n; i++){
            printf("%d ", ar[i]);
        }
    
        printf("\n");
        printf("奇数平均值: %.2f\n", GetMean(ar, n));
    
        return 0;
    }
    

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