第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用来记载输入的数的个数