C言語の基礎講座 第2回C言語実力試験
 

Study C Ver2販売開始のお知らせ

 C言語の勉強や教育用に最適です。
 2004/8/23よりStudy C Ver2の販売を開始しました。
 Study C Ver2の新しい機能については
 こちらをご参照ください。

第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言語講座にアクセス可能な方、解答はこちらです。

お問い合わせ先 (第12回C言語の基礎講座)<前へ |  C言語のトップページに戻る |  次へ>(第13回C言語の基礎講座) Copyright(C) 2003 潟Iーキッド