Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7
思路
1.没给定多少组,用scanf()!=EOF退出循环
2.设定计数器,求和,每m个求平均
3.对计数器等清零,为下次循环做准备
注意:
注意清零,有一个未清零,下次循环就是错的
注意输出格式,该了几次才通过(*_*)
code
#include<stdio.h>
#include<string.h>
int main()
{
int a[100]={0};int i;
for(i=1;i<=100;i++) a[i]=i*2;//数组a存放递增数列
int aver[100];
int n,m;int j=0;
int count=0;int sum=0;
int flag=0;//立一个flag,输出做准备
while(scanf("%d%d",&n,&m)!=EOF)//退出循环的条件
{
for(i=1;i<=n;i++)
{
count++;
sum=sum+a[i];
if(count%m==0){
aver[j++]=sum/m;sum=0;count=0;//对计数器和sum清零
}
}//遍历,把结果存放在aver数组
if(count!=0)//如果没到m个,即有剩余,另求平均
{
aver[j]=sum/count;sum=0;count=0;
flag=1;//有剩余,改变flag;有j个值,无剩余,有j-1个值
}
if(flag)
{
for(i=0;i<=j;i++)
{
if(i==0) printf("%d",aver[i]);
else printf(" %d",aver[i]);
}
printf("\n");
memset(aver,0,sizeof(aver)); j=0; flag=0;//对结果,计数器清零,为下次循环做准备
}
else
{
for(i=0;i<j;i++)
{
if(i==0) printf("%d",aver[i]);
else printf(" %d",aver[i]);
}
printf("\n");
memset(aver,0,sizeof(aver)); j=0; flag=0;
}
}
return 0;
}