永发信息网

pascal编程高手看下

答案:3  悬赏:50  手机版
解决时间 2021-05-17 10:39

我编一串程序,运行时显示exitcode=201;请各位看看错在哪儿了(我先知道哪里错了,为什么错了,各位不用再打一遍了.....)

以下是代码:

program random;
var a:array[1..10]of integer;
    n,i,j,m,s:integer;
begin
    asssign(input,'random.in');reset;
    asssign(output,'random.out');rewrite;
    read(n);readln;
    s:=n;
    for i:=1 to n do read(a[i]);
    for i:=1 to n do
        for j:=1 to n do if a[i]>a[j] then begin
            m:=a[j];
            a[j]:=a[i];
            a[i]:=m;
                                            end;
        for i:=1 to n do
            for j:=i to n do
                if a[i]=a[j] then begin
                for j:=j+1 to n do
                a[j]:=a[j+1];
                s:=s-1;
                                   end;
    write(s);
    writeln;
    for i:=1 to s do write(a[s]);
    readln;
    close(input);
    close(output);
end.

最佳答案

exitcode=201是下标出界的意思


 for i:=1 to n do
    for j:=i to n do——————这里的循环变量用了J
    if a[i]=a[j] then begin
    for j:=j+1 to n do ————这里也用了J 两处的循环变量应该不同 你改下
    a[j]:=a[j+1];  ————>当n=10时 这里下标出界 所以上一句的for语句的终止值改为n-1
    s:=s-1;
    end;

全部回答

你这是明明的随机数的程序吧,建议增大n,同时,去重的语句建议用repeat或者while,因为去重之后n会减小,后面运行到n就没用的,因为此时n已经小于原来的n了。并且,去重应该写成for j:=i+1 to n do,因为如果是i到n,当j=i的时候,就会把这个数去掉。还有!你的输出应该是write(a[i],' ');,而不是a[s],要不会错的,不输出空格也会错,因为你会看不清楚到底输出了哪些数字。

这个程序其实有三个错误。

应该是这里下标出界了吧 for j:=j+1 to n do
    a[j]:=a[j+1];
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
继承者们国语哪里能看,哪个网站可以看到韩剧
怎么用wingdings制作特殊符号?
W7系统优势在哪?
手机QQ2009自动关闭怎么解决?
川汇区周口川汇区张涵宣百货商行地址在哪里啊
中午吃什么减肥,我在减肥,中午吃什么比较好
双牌县永州山珍酒家地址有谁知道?有点事想过
请问南平市区哪有单身公寓出租
鞍山英派斯的景日来教练上哪了?
600021明天怎么操作
煮米饭为什么会夹生,米饭夹生怎么办???
平江县岳阳紫砂煲拌饭地址是什么,有没有知道
谁有这个软件的序列号
金牛和水瓶会有美好的爱情吗?
谁有适合诺基亚5230用的八面玲珑滑动解锁软件
推荐资讯
飞车k24改装方案
求电影美丽人生的介绍
开县西方坡的电话号码段是好多 ?
Dnf打天帷深渊被关泡泡里了怎么办?
卢氏县三门峡唐狮(卢氏迎宾馆东北)这个地址在
写美好明天时光的句子,有时候,因为无法挽留
松滋市荆州正新鸡排(千禾顺店)怎么去啊,谁知
诺基亚C5能不能下载信息密码锁
出汗多挂什么科,手,脚,腋下多汗,挂什么科
往来招待所地址有知道的么?有点事想过去
买玫琳凯的东西需不需要什么证件
为什么男生的表白老是让人觉得有点开玩笑呢?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?