解题思路:可以先判断切割的数量是否大于这个数列的总长度,若不超过这个数列的长度,则调用函数1;若超过则调用函数2。(写的不太好,有可以改正的地方希望大家指出,第一次写这个,还有待提高,嘿嘿O,O||)


注意事项:用数组做,我的思路考虑到数列不能再次切割的时候,应该将while循环中的最后一个数的下标记住,后面求剩余数列时要作为剩余数列的第一个数的下标

参考代码:


#include<stdio.h>

#define N 100 


void getAverge(int n,int m)//超过数列长度调用

{

int i=0,j,sum=0,temp=0,temp1=0,b=0,a[N],count=0;

for(j=0;j<n;j++) //找到所给长度的数列

{

i+=2;

a[j]=i; 

}


temp=m;

temp1=n;


while(m<n) //通过循环计算平均值

{

for(int k=b;k<m;k++,b++)

{

sum+=a[k];

}

printf("%d ",sum/temp);

sum=0;

if((2*m)<n)//判断该数列是否还可以再切割

m=2*m;

else

{

n=n-m;//n值变化使得m>n

break;

}

for(int c=m;c<temp1;c++) //利用本次循环计算出剩余数列平均值

{

sum+=a[c];

count++;

}

printf("%d ",sum/count);

}


void getAverge1(int n,int m)//不超过数列长度调用

{

int i=0,sum=0;

for(int j=0;j<n;j++)

{

i+=2;

sum+=i;

}

printf("%d ",sum/n); 

}

int main()

{

int n,m;

while(scanf("%d %d",&n,&m)!=EOF)

{

if(n<m)

{

getAverge1(n,m);

printf("\n"); 

}else{

getAverge(n,m);

printf("\n");

}

}

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论