解题思路:可以先判断切割的数量是否大于这个数列的总长度,若不超过这个数列的长度,则调用函数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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复