Runtime Error:Segmentation fault

pascal里vara:array[1..50]ofinteger;i,j,ls,mask,n,s:longint;beginread(n);fori:=1tondore... pascal里
var
a:array[1..50]of integer;
i,j,ls,mask,n,s:longint;
begin
read(n);
for i:=1 to n do
read(a[i]);
for j:=n-1 downto 1 do begin
mask:=0;
for i:=1 to j do begin
if a[i]>a[i+1] then
begin
ls:=a[i+1] ;
a[i+1]:=a[i];
a[i]:=ls;
mask:=1;inc(s);
end;
end;
if mask=0 then break;
end;
write(s);
end.

问题 A: 车厢重组(carry.pas)
时间限制: 1 Sec 内存限制: 128 MB
提交: 50 解决: 12
[提交][状态][讨论版]
题目描述
在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。
输入
输入文件有两行数据,第一行是车厢总数N(不大于100000),第二行是N个不同的数表示初始的车厢顺序。
输出
一个数据,是最少的旋转次数
样例输入
4
4 3 2 1
样例输出
6

在评测系统里显示Runtime Error:Segmentation fault
Runtime Error:Segmentation fault
Runtime Error:Segmentation fault
Runtime Error:Segmentation fault
Runtime Error:Segmentation fault
Runtime Error:Segmentation fault
Runtime Error:Segmentation fault
Runtime Error:Segmentation fault

辅助解释:
Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域

求高手指教
展开
 我来答
qzhao_1
2017-06-14 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4289万
展开全部
关于 PASCAL 语言的编程,由于好久没有编写程序,现在已经忘记得差不多了。但是 C 语言里面的判断逻辑上的相等是两个 = 号。即:==。你的 if mask=0 是否应该使用: if mask == 0 ? 表示逻辑上的相等?
另外,你再检查一下你的几个循环体内部的程序结构是否清晰?我个人感觉上你的几个循环体内部程序结构上不是很清晰。那就容易造成数组越界、或者内存越界的情况。因此会提示:Segmentation Fault。
chenweiyishita
2013-12-01
知道答主
回答量:6
采纳率:0%
帮助的人:3.2万
展开全部
有可能是因为你某些变量没赋初值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式