Copyright (C) IOI日本委員会 1994. All rights reserved.


問題1.

以下の3つの異なる言語で書かれたプログラムは、どれも同じ動作をし、 同じ結果を出力する。 この出力結果を答えよ。空白や改行があれば、それも明示せよ。 [2点]


Cプログラム(1)

#include <stdio.h>

main()
{
    int x,y,z,w;

    x = 1;  y = 2;  z = 3;  
    for (w=1; w<=3; w++) {
        if (x<y) {
            if (z>y) {
                if (z>x || x==y) printf("%d\n", x);
                else printf("%d\n", y);
            }
            else printf("%d", z);
        }
        switch (w) {
            case 1 : y = 0;         break;
            case 2 : z--;  y += z;  break;
            case 3 : x *= 2;
        }
    }
    exit(0);
}


QuickBASICプログラム(1)

X=1: Y=2: Z=3
FOR W=1 TO 3
    IF X<Y THEN
        IF Z>Y THEN
            IF Z>X OR X=Y THEN PRINT X ELSE PRINT Y
        ELSE PRINT Z;
        END IF
    END IF
    SELECT CASE W
        CASE 1: Y=0
        CASE 2: Z=Z-1: Y=Y+Z
        CASE 3: X=2*X
    END SELECT
NEXT W
END


Pascalプログラム(1)


PROGRAM test1;
VAR x,y,z,w : integer;

BEGIN 
    x:=1; y:=2; z:=3; 
    FOR w:=1 TO 3 DO 
    BEGIN 
        IF x<y THEN IF z>y THEN IF (z>x) OR (x=y) THEN writeln(x)
                                                  ELSE writeln(y)
                           ELSE write(z);
        CASE w OF
            1 : y:=0;
            2 : BEGIN z:=z-1; y:=y+z END;
            3 : x:=2*x;
        END
    END
END.                  


JOI'94へ戻る

JOIホームページへ戻る