求n个数的平均数,并输出大于平均数的数。以-1结束

本文介绍如何计算一组数值的平均数,并详细阐述了如何遍历这些数值,找出大于平均数的元素。程序以输入-1作为结束标志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
int main()
{
    int i;
    double sum=0;
    int count=0;
    int number[20];
    double aver;
    scanf("%d",&i);
    while(i!=-1)
    {
        number [count]=i;
        sum+=i;
        count++;
        scanf("%d",&i);
    }
    aver=sum/count;
    printf("平均数是:%.2f\n",sum/count);
    for(i=0;i<count;i++)
    {
        if(number[i]>aver)
        printf("%d\t",number[i]);
    }
    return 0;
}

这里写图片描述

<think>嗯,用户想用C语言实现输入多个数字,直到输入0为止,然后计算平均值。这个问题看起来不复杂,但需要仔细处理输入和循环结构。首先,我需要回忆一下C语言中如何处理连续输入,直到遇到特定条件(比如输入0)的情况。 用户提到了参考引用中的示例代码,特别是引用[1]里的例子。那里面用了while(1)循环,不断读取输入,直到输入的小于等于0时跳出循环。然后计算总和和量,再平均值。这个方法应该适用。不过要注意的是,用户可能希望输入的是多组,但根据问题描述,应该是单次输入多个数,以0结束。 接下来,需要考虑变量的初始化。比如sum和count需要初始化为0,否则可能会有垃圾值导致错误。同时,处理输入的时候,要确保在输入0时立即停止,且不将0计入总和和量中。这点在示例代码里已经做到了,用了一个if判断,如果num<=0就break。 然后,计算平均值的时候,需要注意类型转换。因为sum是整,count也是整,直接相除会得到整结果,所以需要将其中一个转换为浮点,比如用(float)sum / count,这样结果才是正确的浮点平均值。 另外,用户提到的问题中可能存在输入0的情况,这时候count可能为0,会导致除以零的错误。所以在代码中需要处理这种情况,比如在计算平均值之前检查count是否大于0,否则给出提示而不是计算。但示例引用[1]的代码没有处理这种情况,可能需要改进。 用户可能还关心如何处理输入错误,比如非字输入,但根据问题描述,似乎假设用户会输入正确的整,所以可能不需要处理这部分。但如果要更健壮,可能需要清除输入缓冲区,但这样会增加代码复杂度,可能超出当前问题的范围。 此外,用户的问题中提到“输入多组”,但根据上下文,应该是输入一组,直到0结束。需要明确这一点,避免误解。示例代码中的做法是正确的,每次循环读取一个数,直到遇到0或负停止。 总结一下,步骤应该是: 1. 初始化sum和count为0。 2. 使用无限循环读取输入。 3. 检查输入是否<=0,如果是则退出循环。 4. 否则,累加到sum,count加1。 5. 循环结束后,计算平均值,注意类型转换。 6. 处理count为0的情况,避免除以零。 现在根据这些思考,可以写出示例代码,解释每个部分的作用。同时,生成相关问题,比如如何处理无效输入、如何同时计算最小值和平均值,或者如何存储所有输入的进行排序等。</think>以下是实现输入多个数字直到输入0为止,计算平均值的C语言示例代码: ```c #include <stdio.h> int main() { int num, sum = 0, count = 0; float avg; printf("请输入正整(输入0结束):\n"); while(1) { scanf("%d", &num); if(num <= 0) break; // 输入0或负时终止循环[^1] sum += num; // 累加和 count++; // 统计输入个数 } if(count > 0) { avg = (float)sum / count; // 强制类型转换计算平均值 printf("平均值:%.2f\n", avg); } else { printf("未输入有效字\n"); } return 0; } ``` **实现说明**: 1. 使用`while(1)`创建无限循环接收输入 2. `num <= 0`时通过`break`终止循环 3. 强制类型转换`(float)`确保输出浮点型结果 4. 处理了零输入的特殊情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值