C言語入門 第2回実力試験




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



第2回実力試験

2-1. 配列(配列のサイズは5にします)の各要素に1から5を代入し、printf()で各要素の内容を表示してみましょう。

2-2. 2-1を配列の最後の要素から表示するように書き換えてみましょう。

2-3. 2-1を配列の各要素に10を加えてから表示するように書き換えてみましょう。

2-4. 次のプログラムに平均値を表示する機能を付け加えてみましょう。
int     print_bar(int);

main()
{
        int n,
            sum,
            data[5];

        sum = 0;
        for (i = 0; i < 5; i++) {
                printf("input data %d: ", i);
                scanf("%d", &data[i]);
        }
        for (i = 0; i < 5; i++) {
                print_bar(data[i]);
        }
        for (i = 0; i < 5; i++) {
                sum = sum+data[n];
        }
        printf("SUM = %d\n", sum);
}

print_bar(n)
int n;
{
        int i;

        for (i = 0; i < n; i++) {
                 printf("*");
        }
        printf("\n");
}
2-5. forループとputchar()を使いAからZを表示させてみましょう。

2-6. 2-5と同じ方法でaからzを表示させてみましょう。

2-7. 2-5を文字とそのアスキーコード(10進数で)が表示されるように書き換えてみましょう。

2-8. 次のアスキーコード表を表示するプログラムをforループとprintf()で作ってみましょう。 printfで16進数を表示させるには%dの代わりに%xを使います。
10進  16進 文字10進  16進 文字10進  16進  文字
------------------------------------------------
 32   0x20      64   0x40    @  96   0x60    `
 33   0x21    !  65   0x41    A  97   0x61    a
 34   0x22    "  66   0x42    B  98   0x62    b
 35   0x23    #  67   0x43    C  99   0x63    c
 36   0x24    $  68   0x44    D 100   0x64    d
 37   0x25    %  69   0x45    E 101   0x65    e
 38   0x26    &  70   0x46    F 102   0x66    f
 39   0x27    '  71   0x47    G 103   0x67    g
 40   0x28    (  72   0x48    H 104   0x68    h
 41   0x29    )  73   0x49    I 105   0x69    i
 42   0x2a    *  74   0x4a    J 106   0x6a    j
 43   0x2b    +  75   0x4b    K 107   0x6b    k
 44   0x2c    ,  76   0x4c    L 108   0x6c    l
 45   0x2d    -  77   0x4d    M 109   0x6d    m
 46   0x2e    .  78   0x4e    N 110   0x6e    n
 47   0x2f    /  79   0x4f    O 111   0x6f    o
 48   0x30    0  80   0x50    P 112   0x70    p
 49   0x31    1  81   0x51    Q 113   0x71    q
 50   0x32    2  82   0x52    R 114   0x72    r
 51   0x33    3  83   0x53    S 115   0x73    s
 52   0x34    4  84   0x54    T 116   0x74    t
 53   0x35    5  85   0x55    U 117   0x75    u
 54   0x36    6  86   0x56    V 118   0x76    v
 55   0x37    7  87   0x57    W 119   0x77    w
 56   0x38    8  88   0x58    X 120   0x78    x
 57   0x39    9  89   0x59    Y 121   0x79    y
 58   0x3a    :  90   0x5a    Z 122   0x7a    z
 59   0x3b    ;  91   0x5b    [ 123   0x7b    {
 60   0x3c    <  92   0x5c    \ 124   0x7c    |
 61   0x3d    =  93   0x5d    ] 125   0x7d    }
 62   0x3e    >  94   0x5e    ^ 126   0x7e    ~
 63   0x3f    ?  95   0x5f    _ 127   0x7f  


2-9. scanf()で入力した文字列の長さを調べ5文字以下ならshort、それより長ければ longと表示するプログラムを作ってみましょう。

2-10. 次のプログラムの合格点60をマクロ定義に変えてみましょう。 また、得点はscanf()で入力できるようにします。
main()
{
        int tokuten;

        tokuten = 40;
        if (tokuten >= 60) {
                printf("goukaku");
        }
        if (tokuten < 60) {
                printf("fugoukaku");
        }
}
2-11. マクロは文字列や文字定数を置き換えることもできます。文字列をマクロで 置き換えてprintf()で表示してみましょう。

2-12. 文字定数をマクロで置き換えてputchar()で表示してみましょう。

2-13. カッコで囲んだ式(1+2)をマクロで置き換え、マクロ名を2倍にした結果を 表示してみましょう。

2-14. カッコで囲まれていない式1+2をマクロで置き換え、マクロ名を2倍にした結果を 表示してみましょう(2-13と結果がことなる理由を考えて見ましょう)。

2-15. グローバル変数を宣言して関数main()で代入した値が、他の関数から参照できる ことを確認してみましょう。

2-16. 2-15の呼び出された関数でもグローバル変数に代入し、関数main()で値が 変化しているかを確認してみましょう。

2-17. 2-16でグローバル変数と同じ名前のローカル変数を宣言して、その影響を 観察してみましょう。

2-18. 次のプログラムを参考にして直方体の3辺から体積と表面積を計算する関数を 作ってみましょう。
int      func(int, int);

int a, b;

main()
{
        func(10, 3);
        printf("%d\n%d\n", a, b);
}

func(x, y)
int x, y;
{
        a = x / y;
        b = x % y;
}
2-19. 次のプログラムの変数sumをグローバル変数に書き換えてみましょう。 また、sumの最初の値に100を代入しておきます(結果は110になります)。
main()
{
        add(1);
        add(2);
        add(3);
        printf("%d\n", add(4));
}

add(n)
int n;
{
        static int sum;

        sum += n;
        return (sum);
}
2-20. while文を使って文字列" Study "を20回表示してみましょう。

2-21. while文を使って 1, 2, 3, ・・・, 20 と表示してみましょう。

2-22. while文を使って 2, 4, 6, ・・・, 40 と表示してみましょう。

2-23. do...while文を使って2-20から2-22を書き換えてみましょう。

2-24. for、if、break文を使って2-20から2-22を書き換えてみましょう。 for文は無限ループ(for(;;))で使用します。

2-25. 次のプログラムをoneからtenまで表示できるように書き換えてみましょう。
main()
{
        int i;

        printf("INPUT:");
        scanf("%d", &i);
        switch (i) {
        case 1:
                printf("one");
                break;
        case 2:
                printf("two");
                break;
        case 3:
                printf("three");
                break;
        default:
                printf("difficult");
                break;
        }
}

解答例はC言語のトップページの一番下にあります。 自分でよく考えてから見るようにしましょう。