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

全体

ペーパーテスト

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

    もちろん、プログラムの意味(実行結果)が変わらないようにすること。

    解答は、最初の #include <stdio.h> は省略せよ。また、 解答欄のスペースの都合で、空行は入れずに記入せよ。なお、 putcharp-----rwhilew---e のように省略してよい。

    int main(void) {
    int i, j;
    for (i = 0; i < 9; i++) 
    if (i % 2 == 0) 
    for (j = 1; j < 9; j++)
    putchar('&');
    else 
    putchar('@'); 
    putchar('*');
    return 0;
    }
    
  2. 次のプログラムは、「整数を入力してください。」と出力してから一つの整数値を読み込んで、 その 1/3 の値を小数第 3 位まで出力し、 もし入力した整数が、-1 以下か 101 以上のときは続けて「想定外の入力です。」 と出力するプログラムである。空欄を埋めて、プログラムを完成させよ。

    #include 
    
    int main(void) {
        int n; 
        printf("整数を入力してください。"); scanf("%d", &n);
        printf("その 1/3 は %.3f です。\n",    n / 3.0       );
        if (   n < 0 || 100 < n   ) {
            printf("想定外の入力です。\n");
        }
        putchar('\n');
    
        return 0;
    }
    
  3. 以下のプログラムの空欄に、

    • 2つの double 型の引数 \(s\), \(p\) を受け取り、 \(\sqrt{s^2 - 4 p}\) を返す関数 double diff(double s, double p)

    を定義せよ。(平方根を求めるライブラリー関数は sqrt である。)

    #include <stdio.h>
    #include <math.h>
    
    
    
    
    
    
    int main(void) { double s = 7, p = 10; printf("2数の和が %.2f、積が %.2f のとき、差は %.2f です。\n", s, p, diff(s, p)); return 0; }

    このプログラムは

    2数の和が 7.00、積が 10.00 のとき、差は 3.00 です。
    

    と出力する。

  4. 正解は以下の通りである。(問題文の掲載は省略する。)

    (ⅰ). C
    (ⅱ). C
    (ⅲ). A
    (ⅳ). D
    (ⅴ). D
    (ⅵ). B
    (ⅶ). A
    (ⅷ). B
    (ⅸ). D
    (ⅹ). B
    

オンラインテスト


Koji Kagawa