#include<stdio.h>
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int i,j=0,sum=0;
int a[n+1],b[n/m+1]; 
for(i=0;i<n;i++)
{
a[i]=2*(i+1);	//公差为2可看作是公差为1在乘以2
sum+=a[i];	//每m项求和
if((i+1)%m==0)  //判断是否已到达m项
{
b[j++]=sum/m;	//把所求平均数赋给另一个数组
sum=0;	//sum初始为0,以便于下一组数求和
}
}

if(i%m!=0)	//判断是否有为满足m项就结束
{
b[j]=0;
for(int k=i%m-1;i-k<=i;k--)     //求余数确定有几个数在m范围内,然后逐个相加
{
b[j]+=a[i-k-1];	//在上一个for循环结尾时i加了一个,在此减去,在减去多出m的个数
}
b[j++]/=i%m;	//对b[j]项求平均数,此处j++是为了与上一个for循环处的j++相对应,以便于下一行for语句确定终止条件
}

for(int k=0;k<j;k++)
printf("%d ",b[k]);	//利用for语句逐个输出平均值
puts("");	//输出完换行
}
return 0;
}

解题思路:第一步:利用for语句对数组进行赋值,并对数组值求和

第二步:在赋值时进行判断是否以满足m个的条件,若满足则求平均值并赋给新的数组储存起来(记着对下一个求和变量初始化)

第三步:判断第二步是否正常结束,若不是正常结束求出这几个数的平均数并储存

第四步:输出所有储存的平均数值

注意事项:由于我没有看其他人的解题思路,外加本身也是菜鸟一枚,代码可能有很多不够优化或者错误请不要在意,另外第一次分享没有经验,再加上时间仓促,注释和思路交代的可能不够清楚,希望大神路过可以指点指点,没有思路的小伙伴希望可以给你提供一点思路,好了,废话不多说了。看代码吧

点赞(2)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论