一个问题,不懂

7680 2002-01-18 02:24:12
这个程序是用于把n个数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数的。
#include<iostream.h>
void move(int*,int,int);

void main()
{
int number[20],n,m,i;
cin>>n
>>m;
for(i=0;i<n-1;i++)
cin>>number[i];
move(number,n,m);
for(i=0;i<n-1;i++)
cout<<number[i]<<endl;
}

void move(int *array,int n,int m)
{
int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
{
*p=*(p-1);
}
*array=array_end;
m--;
if(m>0) move(array,n,m);
}

我运行的结果如下:
输入:
5
2
21 34 45 33 35
输出:
35
-858993460
21
34
45
第二个数怎么会出现溢出?
...全文
76 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
7680 2002-01-18
  • 打赏
  • 举报
回复
继续结
7680 2002-01-18
  • 打赏
  • 举报
回复
结了
晨星 2002-01-18
  • 打赏
  • 举报
回复
你太粗心了。
main函数里的两个for语句中都应该把i < n - 1改成i < n。
washington1 2002-01-18
  • 打赏
  • 举报
回复
将主程序中的i<n-1改成i<=n-1就行了,否则越界了
washington1 2002-01-18
  • 打赏
  • 举报
回复
将主程序中的i<n-1改成i<=n-1就行了,否则越界了
7680 2002-01-18
  • 打赏
  • 举报
回复
楼上的,关键是怎么处理啊,哪里出问题了
washington1 2002-01-18
  • 打赏
  • 举报
回复
将主程序中的i<n-1改成i<=n-1就行了,否则越界了。
washington1 2002-01-18
  • 打赏
  • 举报
回复
将主程序中的i<n-1改成i <=n-1就行了,否则可能数组越界了。
alou 2002-01-18
  • 打赏
  • 举报
回复
我没有仔细看源代码,但是问题在于新序号>n情况下的处理。请自行解决。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧