问题描述:
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a[105]={2};
int i,n,m,j,k=0,sum=0;
for(i=1;i<=104;i++)
a[i]=a[i-1]+2;
while(cin>>n>>m){
k=0;
if((n%m)==0){ //当n是m的整倍数
for(j=0;j<(n/m);j++)
{ sum=0;
for(i=1;i<=m;i++)
sum=sum+a[k++];
cout<<sum/m;
if(j!=((n/m)-1))
cout<<' ';
}
cout<<endl;
}
int p=0;
p=(n-(n/m)*m);
if((n%m)!=0) 如果n不是m的整倍数
{
for(j=0;j<(n/m);j++)
{ sum=0;
for(i=1;i<=m;i++)
sum=sum+a[k++];
cout<<sum/m;
if((j+1)<=(n/m))
cout<<' ';
}
sum=0;
for(i=0;i<p;i++)
sum=sum+a[k++];
cout<<sum/p<<endl;
}
}
return 0;
}
因为格式输出的原因,浪费了大量的时间去掉行末尾的空格,真的是菜的一笔啊。。。