递增偶数数列按顺序每m个求平均【C语言】

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}
原创文章 27 获赞 26 访问量 7795

猜你喜欢

转载自blog.csdn.net/unseven/article/details/105015850
今日推荐