用C语言编写一个程序(不是C++)

用含while语句,编写一个C程序。然后计算输入数字的累加和(输入数字的个数不定),然后计算输入数字累加和的平均值。(问题的本质是,如何表示求平均数的除数的个数,因为输入数字的个数不确定)。

细节你自己写,我给你提供一个思路,也就是伪代码:
1.一个变量用来记录输入数字的和 SUM
2.一个变量用来记录输入的数字的个数 NUM
3.while没循环一次,接收一个数字输入,求和一次+SUM,数字个数加1(NUM+1)
4.结束后求平均值:SUM/NUM;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-03
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main()
{
int* pdata=NULL; // 指向所有数字的指针
int* temp=NULL; // 临时指针变量
int data=0; // 读入的数字
int count=0; // 输入的数字个数
int increment=3; // 内存空间增长幅度
int capacity=0; // 最多能读入多少个数字
char answer=0; // 提示用户是否继续输入
int sum=0;
int average=0;
int i=0;
do
{
if(capacity==count) // 如果最大容量与实际读入的容量相同,则分配更多的空间
{
capacity+=increment;
temp=(int*)malloc(sizeof(int)*capacity);
if(!temp)
{
printf("error: not enough memory.\n");
exit(1);
}
if(!pdata) // 如果之前没有数据,则直接将分配空间的首地址赋给pdata
pdata=temp;
else // 如果之前有数据,则先将之前数据复制过去
{
for(i=0;i<count;i++)
*(temp+i)=*(pdata+i);
free(pdata);
pdata=temp;
}
temp=NULL;
}
printf("enter a digit:\n");
scanf("%d",&data);

*(pdata+count++)=data;

printf("go on ?(y/n)\n");
scanf(" %c",&answer);

}while(tolower(answer)=='y');

for(i=0;i<count;i++)
{
sum+=*(pdata+i);
}
average=sum/count;
printf("average=%d\n",average);

return 0;
}
第2个回答  2012-03-03
#include<stdio.h>
#define N 100
void main()
{
int a[N],j=0,count=0,sum=0;
float ave;
printf("Input a number:");
scanf("%d",&a[j]);
while(a[j]!=-1)
{
sum+=a[j];
count++;
j++;
printf("Input a number:");
scanf("%d",&a[j]);
}
ave=(float)sum/count;
printf("\n\n\n\n%f\n",ave);
}
count用来记载输入的数的个数
相似回答