pat1008段错误
来源:互联网 发布:淘宝产品摄影 编辑:程序博客网 时间:2024/06/10 23:33
段错误 您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
存在段错误代码:
#include<stdio.h>#define SIZE 110void reverse(int ary[], int from, int to){int t;while(from < to){t = ary[from];ary[from] = ary[to];ary[to] = t;from++;to--;}return;}int main(){#ifdef ONLINE_JUDGE#elsefreopen("E:\\in.txt", "r", stdin);#endifint n, m;while(scanf("%d %d", &n, &m) != EOF){int i,ary[SIZE];for(i=0;i<n;i++){scanf("%d", &ary[i]);}reverse(ary, 0, n-m-1);reverse(ary, n-m,n-1);reverse(ary, 0, n-1);for(i=0;i<n-1;i++){printf("%d ",ary[i]);}printf("%d\n", ary[i]);}return 0;}
根据提示,可能是数组越界,正常的想法是默认了n>=m, 但是题目并没有给出,一个包含6个数的数组,就不能循环右移吗?
m>n,时,移动m次与移动m%n,的效果是相同的,所以执行m=m%n,便可使m<n。全部Case通过。
#include<stdio.h>
#define SIZE 110
void reverse(int ary[], int from, int to){
int t;
while(from < to){
t = ary[from];
ary[from] = ary[to];
ary[to] = t;
from++;
to--;
}
return;
}
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
#endif
int n, m;
while(scanf("%d %d", &n, &m) != EOF){
m=m%n;
int i,
ary[SIZE];
for(i=0;i<n;i++){
scanf("%d", &ary[i]);
}
reverse(ary, 0, n-m-1);
reverse(ary, n-m,n-1);
reverse(ary, 0, n-1);
for(i=0;i<n-1;i++){
printf("%d ",ary[i]);
}
printf("%d\n", ary[i]);
}
return 0;
}
0 0
- pat1008段错误
- PAT1008
- PAT1008
- pat1008
- PAT1008
- pat1008
- PAT1008
- PAT1008
- pat1008
- pat1008
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- android解析xml文件的方式(其一)
- android解析xml文件的方式(其二)
- Android异步下载网络图片(其三)
- CF 377C Captains Mode(状压dp+博弈)
- memcached 按键查找和批量查找
- pat1008段错误
- C++ 冒泡、堆排序、插入排序算法
- try-catch语句
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 2014/2/24
- SAP alv(lvc)的抬头标题设定(html_top_of_page)
- 低功耗的设置
- 当你真正喜欢一样东西
- libmxml (Mini-XML) arm-linux 移植笔记