有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2 4 2
Sample Output
3 6 3 7
没什么好说的,都写代码里把。
这个题目我感觉难的地方还是输出,输出要求很严格,具体实现放在代码里备注吧。
#include<stdio.h>
void main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int sum=0,count=0;//利用count 来控制空格
int a=2,i;
for(i=0;i<n;i++)
{
sum+=a;
a+=2;
//现在开始对sum累加,直到满足m个数
if((i+1)%m==0)
{
count++;
//如果不是第一个要输出的就输出一个空格
if(count!=1) printf(" ");
printf("%d",sum/m);
sum=0;
}
}
//如果正好n是m的倍数,就说明前面已经输出完了。
//直接输出换行就可以。
if(n%m==0) printf("\n");
//如果n不是m的倍数,这个时候sum就是剩下数字的和,因为最后没有满m个所以sum没有被清零
//所以还要再输出一个空格+值+换行符。
else printf(" %d\n",sum/(n%m));
}
}
OK,AC