解题思路:可以先判断切割的数量是否大于这个数列的总长度,若不超过这个数列的长度,则调用函数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 人评分
1017题解浏览:605 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:547 |
星期判断机 (C语言代码)浏览:859 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:324 |
GC的苦恼 (C语言代码)浏览:621 |
输出九九乘法表 (C语言代码)浏览:1048 |
简单的a+b (C语言代码)浏览:630 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:450 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:721 |
众数问题 (C语言代码)浏览:675 |