C语言:计算数组元素平均值

这段博客展示了四种计算数组平均值的方法。第一种是固定数组的平均值计算,第二种允许用户自定义输入元素个数并计算平均值,第三种通过用户输入直到输入'q'为止来计算平均值,第四种利用递归读取整数数组并计算其平均值。所有代码均成功实现了平均值的计算并打印结果。

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

问题:使用 for 循环迭代出输出元素,并将各个元素相加算出总和,再除于元素个数:

代码1:

#include <stdio.h>

int main() {
   int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
   int sum, loop;
   float avg;

   sum = avg = 0;

  for(loop = 0; loop < 10; loop++) {
    sum = sum + array[loop];
   }

   avg = (float)sum / loop;
	   
   printf("平均值为 %.2f", avg);   

   return 0;
}

运行结果:

平均值为 4.50

代码2:用户自定义输入:

#include <stdio.h>

int main()
{
int n, i;
float num[100], sum = 0.0, average;

printf("输入元素个数: ");
scanf("%d", &n);

while (n > 100 || n <= 0)
{
    printf("Error! 数字需要在1 到 100 之间。\n");
    printf("再次输入: ");
    scanf("%d", &n);
}

for(i = 0; i < n; ++i)
{
    printf("%d. 输入数字: ", i+1);
    scanf("%f", &num[i]);
    sum += num[i];
}

average = sum / n;
printf("平均值 = %.2f", average);

return 0;
}

运行结果:

输入元素个数: 4
1. 输入数字: 1
2. 输入数字: 2
3. 输入数字: 4
4. 输入数字: 8
平均值 = 3.75

代码3:可以用 scanf 的特性来控制循环

#include <stdio.h>

int main(void)
{
float x;
printf("请输入数字:(输入q退出)");
int i=0;
float status;
float sum=0;
float avg=0;
status=scanf("%f", &x);
while ( status==1 ) {
    sum+=x;
    printf("请输入数字:(输入q退出)");
    status=scanf("%f", &x);
    i++;
}
avg=sum/(i);
printf("%.2f",avg);
return 0;
}

代码4:使用递归

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

#define SAFE_FREE(p) \
free(p);         \
p = NULL;

int *reverseSentence();
int leng;

int main()
{
int *p = NULL;
printf("输入一组整数: ");
p = reverseSentence();

int sum = 0;
for (int i = 0; i < leng; i++)
{
    sum += p[i];
}
printf("数组和:%d", sum);

SAFE_FREE(p);

return 0;
}

int *reverseSentence()
{
static int sum, num;
static int *p;
int n;
char c;
scanf("%d%c", &n, &c);

sum++;
if (c != '\n')
{
    reverseSentence();
}
else
{
    p = malloc(sizeof(int) * sum);
}
num++;
p[sum - num] = n;

if (sum == num)
{
    leng = sum;
    printf("整数数组长度:%d\n", leng);
    sum = num = 0;
}

return p;
}

运行结果:

输入一组整数: 6 99 8
整数数组长度:3
数组和:113
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零小唬

你的支持将是我创作的做大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值