题目的链接就不放上来了,自己去找
这一道题一上来之后,我的想法是:
需要先定义一个数组(然而我一上来定义成了一个浮点型的数组,后面定义a[n]时是按照整数走的。。。。。),
然先判断n\m,也就是说,每m个输出一个平均值可以输出多少次
在每一次计算
#include<stdio.h>
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int i=0,sum=0;
int a[100];
a[0]=2;
int b=n/m,c=1,d=n%m;
for(c=1;c<=b;c++)
{
for (i=0;i<m;i++)
{
sum+=a[i];
a[i+1]=a[i]+2;
}
printf("%d",sum/m);
a[0]=a[i];
sum=0;
if (c<b)
printf(" ");
}
if(n%m!=0)
{
int sum2=0;
for (i=0;i<(n%m);i++)
{
sum2+=a[i];
a[i+1]=a[i]+2;
}
printf(" %d",sum2/(n%m));
}
printf("\n");
}
return 0;
}
平均值的过程中,有一个很麻烦的问题,就是:每一次结尾之后i都不一样,而且无法给i在循环开始时定义成一个变量。。。。。。
解决的方法就是,把每一次循环的i给更新成0,每一次循环都重新从0开始,这个思路以后都可以借鉴。
我一开始在前面把数组初始化了,但是后来才发现这样做的问题,就在于,后面我们每一次都对i进行更新,所以在一开始就按照递增顺序这样把数组给定义了的话,后面会出问题(至于为什么嘛,等我调试一下程序)
所以这道题最困扰我的问题就是:
如何在每一次输出平均值的小循环里定义循环的初始值?
另外,除了把每一次的i都更新,从0重新开始之外,可不可以直接按照递增的顺序走?
对然可能有点麻烦。
代码附上