杭电ACM2015,提示编译错误,求解!

TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmissio... Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8019 Accepted Submission(s): 3528
Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7

#include<stdio.h>
int main()
{
int n,m,i,sum,a[1000],aver[1000],k,j;
while(scanf("%d %d",&n,&m)!=EOF)
{
for(i=1,sum=0,j=0;i<=n;i++)
{
a[i]=2*i;//初始化
sum=sum+a[i];
j=i/m;
if(i%m==0)//如果i是m的倍数
{
aver[j]=sum/m;
sum=0;//sum清零
}
if(i%m!=0&&(n-i)<m)
{
if(i==n&&n>m)aver[j+1]=sum/(n-m);
}
if(n<=m)
{
k=j+1;aver[k]=sum/n;
}
}
for(i=1;i<=k;i++)
{
if(aver[i]==0)continue;
printf("%d",aver[i]);
if(i!=k)printf(" ");
}
printf("\n");
}
return 0;
}
展开
 我来答
C加语言初学者
2012-03-30 · TA获得超过278个赞
知道答主
回答量:219
采纳率:0%
帮助的人:203万
展开全部
感觉你的算法太复杂了,其实归纳法,归纳下就行了。看下我写的代码看看吧。
#include<iostream>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int i=0;
while(n>0)
{
if(n>m||n==m)cout<<m+1+(i++)*2*m<<' ';
else cout<<m+1+(i++)*2*m-(m-n)<<' ';
n=n-m;
}
cout<<endl;
}
return 0;
}
我提交了,不知道为什么会这样结果Presentation Error
百度网友28b4182
2012-03-30 · TA获得超过7222个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1838万
展开全部
不是编译错误,而是运行错误,你是数组越界了.你看看吧里越界了.是不是有些数值没有初始化啊?
追问
越界?怎么可能?我定义的数组并没有小于使用的数组范围啊。。。。初始化?额。。。我测试了好几组数据了,都是正确的啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式