杭电2015题 偶数求和

Problem 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、先取值,再进行循环
2、循环前考虑设置变量标记空格,sum总值的归0,和单值的增加
3、最后考虑不足m个时,如何处理
注:每次设置变量时,思考变量的作用域

#include <stdio.h>
int main()
{
    int n, m;
    while(scanf("%d%d", &n, &m) != EOF) 
	{
        int sum=0, ai=2, count=0, i;          //sum表示每m个数的总值,ai表示递增偶数,count用来标记打印空格
        for(i=1; i<=n; i++)                   //长度为n,表示循环n次;
		{                                     
            sum += ai;                        
            ai += 2;                          
            if( i % m == 0)                   //表示每m个数
			{                                 
                count++;                      
                if(count != 1)                //表示输出第2个值后,开始打印空格
                    printf(" ");              
                printf("%d", sum / m);        //打印平均值
                sum = 0;                      
            }                                 
        }                                     
        if(n % m == 0)                        
            printf("\n");                     
        else                                  
            printf(" %d\n", sum / (n % m));   //最后不足m个,实际数量求m值。注意输出打印%d前一定要加个" %d"
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42766201/article/details/84634002