一道C语言的题,不会做,麻烦大家帮下忙,感谢

编写一个程序,它反复要求用户输入一个整数n,后跟一系列n个数字,然后打印这些数字的平均值。程序必须使用动态内存分配函数在每次输入新整数时分配数组,并在计算每个平均值后取消... 编写一个程序,它反复要求用户输入一个整数n,后跟一系列n个数字,然后打印这些数字的平均值。程序必须使用动态内存分配函数在每次输入新整数时分配数组,并在计算每个平均值后取消分配数组。当用户为整数输入0时,程序应该停止。
程序的行为应如下(冒号后面的数字由用户输入):
输入整数:4
输入4个数字:1 2 3 4
平均值为:2.5
输入整数:0

(下面是提示)算法设计过程:
1.声明变量。最重要的是,您需要一个指向int(称为数组)的指针类型变量来存储动态内存分配函数返回的内存块的地址。此指针将存储内存块的地址,您将在其中放置用户输入的数字。
2.提示用户并读取n的值。
3.使用malloc/calloc分配一个大小为n的整数数组,将返回值分配给指针变量数组,然后将用户的整数值读取到数组中。
4.计算整数值的平均值(应该是浮点值)并打印出来。
5.释放为整数值(数组指针)分配的内存块。
6.设置一个for循环,重复步骤2到6,直到用户为整数n输入0。
展开
 我来答
White_MouseYBZ
2019-04-29 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6505万
展开全部

首先要说的是此题有悖编程思想——计算n个整数的平均值是一件很容易的事,连数组都用不着,题目却不但要数组而且还要动态数组,这样舍近求远并不可取。

#include "stdio.h"
#include <stdlib.h>
int main(int argc,char *argv[]){
int n,*p,i,sum;
while(1){
printf("Please enter n(int 0<=n)...\n");
if(scanf("%d",&n)!=1 || n<0){
printf("Input error, exit...\n");
return 0;
}
if(n==0)
break;
if((p=(int *)malloc(sizeof(int)*n))==NULL){
printf("Application memory failure...\n");
return 0;
}
printf("Please enter %d integers...\n",n);
for(sum=i=0;i<n;scanf("%d",p+i),sum+=p[i++]);
free(p);
printf("The average are %g\n",sum/(n+0.0));
}
return 0;
}

运行样例:

cylz0703
2019-04-29 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:83%
帮助的人:4381万
展开全部

C语言实现,按以上输入输出格式要求,循环统计n个整数的平均值,参考代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int *a,i,n,sum;
    while(1){
     sum=0;
printf("输入整数:");
     scanf("%d",&n);
     if(n<1)return 0;
     a=(int *)malloc(n*sizeof(int));
     if(a==NULL) return 1;
     printf("输入%d个数字:",n);
    for(i=0;i<n;++i)
     scanf("%d",&a[i]);
     for(i=0;i<n;++i)
     sum+=a[i];
     printf("平均值为:%g\n",(float)sum/n);
     free(a);
}
    return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式