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


問題3.

以下の3つの異なる言語で書かれたプログラムはどれも、 10進正整数が入力されると2進数に変換するものである。 選択した言語について、空欄の部分を埋めよ。空欄には一つの代入文が入る。 [2点]


Cプログラム(3)


#include <stdio.h>

#define p 2           
#define MaxKETA 32    /* 最大桁数 */

main()
{  
    long n;
    int i,k,keta[MaxKETA];

    printf("正の整数を入力しなさい。\n");
    scanf("%ld", &n);
    printf("10進数の%ldは%d進数では", n,p);
    for (k=0; n>0; k++, n/=p) 
        -----------------
       |     空欄箇所    |    
        -----------------
    for (i=k-1; i>=0; i--) 
        printf("%d", keta[i]);
    printf("です。\n");
    exit(0);
}


QuickBASICプログラム(3)


CONST p=2, MaxKETA=32
DIM SHARED keta(MaxKETA) AS INTEGER

PRINT "正の整数を入力しなさい。"
INPUT n
PRINT "10進数の";n;"は";p;"進数では";
k=0
WHILE n>0
    k=k+1
     -----------------
    |     空欄箇所    |    
     -----------------
    n=n\p
WEND
FOR i=k TO 1 STEP -1
    PRINT USING "#"; keta(i);
NEXT i
PRINT "です。"
END


Pascalプログラム(3)


PROGRAM test3;
CONST p=2;   
      maxKeta=32;  { 最大桁数 }
VAR n : longint;
    i,k : integer;
    keta : ARRAY[1..maxKeta] OF integer;

BEGIN
    writeln('正の整数を入力しなさい。');
    readln(n);
    write('10進数の', n, 'は', p, '進数では');
    k:=0;
    WHILE n>0 DO
    BEGIN
        k:=k+1;
         -----------------
        |     空欄箇所    |    
         -----------------
        n:=n DIV p
    END;
    FOR i:=k DOWNTO 1 DO write(keta[i]);
    writeln('です。')
END.


JOI'94へ戻る

JOIホームページへ戻る