2019 年度プログラミング・中間テスト・解答例

全体

ペーパーテスト

  1. 以下のプログラムは動作はするがインデンテーションが滅茶苦茶でプログラムの構造を正しく反映していない。 (そして、おそらく作成者の意図したようには動かない。) プログラムの構造を明確にするために「プログラミング」のインデンテーションの約束事(別紙)に厳密に従って(特に Ⅴ 番目のルールに注意)、必要に応じてブレースを挿入し、インデントしなおせ。ただし、 ブレース内の字下げは紙幅の制限のため 3文字分とせよ。

    もちろん、プログラムの意味(実行結果)が変わらないようにすること。 (つまり、作成者の(よくわからない)意図を忖度するのではなく、 コンパイラーが解釈する通りにインデントすること。

    解答は、最初の #include <stdio.h> は省略せよ。また、 解答欄のスペースの都合で、(最後は別として)空行は入れずに記入せよ。

    int main(void) {
    int i, j;
    for (i = 0; i < 6; i++)
    if (i % 2 == 0) 
    for (j = 0; j < i; j++)
    putchar('*');
    if (i % 3 == 0) 
    for (j = 0; j < i; j++)
    putchar('@');
    putchar('\n');
    return 0; 
    }
    
  2. 次のプログラムは一つの整数値を読み込んで、 それを3.14倍した値と、10倍してから(整数として)9で割った値を表示するプログラムである。

    たとえば、30 を入力すると、

    それを 3.14 倍した値は 94.200000 です。
    それを 10 倍してから 9 で割った値は 33 です。
    

    と出力する。 空欄を埋めて、プログラムを完成せよ。

    int main(void) {
        int num;
        printf("整数を入力して下さい: ");
        scanf("%d    ", &num );
        printf("それを 3.14 倍した値は %f    です。\n",   num * 3.14);
        printf("それを 10 倍して 9 で割った値は %d    です。\n",   num * 10 / 9  );
        return 0;
    }
    
  3. 次のプログラムの出力を書け。

    int main(void) {
        int k = 45;
    
        if (k % 5 == 0) {
            printf("A ");
        } 
        if (k % 15 == 0) {
            printf("B ");
        } else if (k % 9 == 0) {
            printf("C ");
        } else if (k % 3 == 0) {
            printf("D ");
        }
        printf("\n");
        return 0;
    }
    
  4. 以下の空欄を埋めて、 初項 5、公比 3 の等比数列 5, 15, 45, 135, … の 99999 以下の部分を出力する プログラムを完成させよ。

    int main(void) {
        int n;
        for (                         ) {
            printf("%d ", n);
        }
    
        putchar('\n');
        return 0;
    }
    
  5. 以下のプログラムは、整数の組のデータを (i,j) という形式で出力する。 このプログラムの出力を書け。ただし、 空白は明示的に空白記号(␣)を、 改行は明示的に矢印(↓)を書くこと。
    int main(void) {
    int main(void) {
        int i, j, n = 4;
        for (i = 0; i < 2 * n; i += 2) {
            for (j = i; j < 2 * n; j += 3) {
                printf("(%d,%d) ", i, j);
            }
            printf("\n");
        }
        return 0;
    }
    

オンラインテスト


Koji Kagawa