PASCAL:帮忙修改!~

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:25:25
此题为ZOJ的ACM的第1057题,如下:
两个人玩牌。每人五张,其上的数字从1到5.
每轮翻转一张比大小。如果一样大就没有分数得
否则就分两种情况:
1:两者只差一分(这就叫undercut),第二种情况:相差的
分数在一分以上.在后一种情况中,点数大的人得到他自己牌上
的分.在第一种情况中点数小的人得到两个人的点数的总和.
但有一种特殊情况:当分值是1和2时,点数小的人得到的分数应为6分。
而不是3分(1+2). 输入:两个人手中的牌输出:两个人得到的分数样例:
Sample Input
5
5 3 1 3 5
3 3 3 3 4
4
2 3 1 1
1 5 5 5
0

Sample Output
A has 5 points. B has 12 points. [每输出一个数据,要再换行]

A has 0 points. B has 21 points. [注意最后一个数据输出后,一定不要换行]

我的程序如下:
program p1057;
var n,a,b:integer;a1,b1:array[1..20]of integer;
procedure unc(var x:integer);
var i:integer;
begin
if x<>0 then begin
for i:=1 to x do
read(a1[i]);
readln;
for i:=1 to x do
read(b1[i]);
readln;
a:=0;b:=0;
for i:=1 to x do
begin
if (a1[i]=1)and(b1[i]=2) then a:=a+6
else if (b1[i]=1)and(

由于我没有学过这个PASCAL,对有些语法,不太熟悉,比如:说数组,不知道在PASCAL 里面的数组是否和C++里面从 0 开始 (如果是那样的话,你数组小了一个) .
但是仔细看了下,能看懂你的程序,么有发现什么错误,只是好像感觉你输出数据似乎有点问题(当然,百度贴上去后,空格有的不见了),你每组数据输出好象没有空一行.我找了半天,没有发现有跳行的语句~(呵呵`,只是凭感觉哦~)

貌似你的程序没错!