C言語の解説と演習(第二回)


内容

  1. はじめに
  2. その次の一歩
  3. 演習問題

1. はじめに

前回の C の解説はわかりましたか?今回はキーボードからの入力を取り扱います.前回の解説をまだ読んでいない人は、読んでおいてください.


2. その次の一歩

まず、「BASICプログラミング」の「input命令をつかう」をC言語に変えてみましょう.「input命令をつかう」はBASIC で書かれた次のようなプログラムでした.

10  input a
20  input b
30  print  a+b
40  end


これは 10行目で変数 a へ、20行目で変数 b へキーボードから入力した値を代入し、30行目で a+b を表示させたプログラムでしたね.これを C 言語で書きなおしてみましょう.そうすると、次のようになります.

#include  <stdio.h>

main()
{
   int a,b;
   scanf("%d",&a);
   scanf("%d",&b);
   printf("%d",a+b);
}


第一回のプログラムとほとんど同じですが、

   a=3;
   b=5;


のところが

   scanf("%d",&a);
   scanf("%d",&b);

となっているところだけが、異なっています.ここで、変数 a, b にキーボードからの入力を代入しているのです.

scanf() はキーボードから値を入力する関数で、

scanf("%d",&a)

とすると変数 a にキーボードからの入力を代入してくれます.つまり第一回目で解説した printf() の逆の働きをする関数だと思えば良いのです. printf() は

printf("%d",a)

とすると、画面へ変数 a の値を出力してくれる関数でしたが、scanf() は

scanf("%d",&a)

とすると、変数 a へ数値を入力してくれる関数です.関数 printf() に比べると、関数 scanf() では、変数 a の前に & がついていますね.これは変数のアドレスを取る演算子なのですが、後日、ポインタの解説のところで詳しく説明しますから、今は「おまじない」だと思ってください.

これで、関数 scanf() の働きがわかりました.

   scanf("%d",&a);
   scanf("%d",&b);


とすると、まず、変数 a にキーボードからの入力を代入します.それから変数 b にキーボードからの入力を代入します.今、キーボードからの入力といいましたが、エンターキーを押すまでが、一つの入力です.例えば、キーボードから

123[ENTER KEY]

と打ち込むと 123 がキーボードからの入力になります.ですから、上のCのプログラムで、変数 a, b に例えばそれぞれ 102, 315 を入力させたかったら

102[ENTER KEY] 315[ENTER KEY]

とキーボードに打ち込めば良いのです.上のプログラムを cygnus を使って実行し、上のように入力して

417

と出力されることを確認してください.以上が上のプログラムの解説です.
今回のまとめです.
.
  1. 関数 scanf() は変数にキーボードから入力した数値を代入する関数であり、関数 printf() と全く逆の働きをする.
  2. 変数 a にキーボードから入力された数値を代入するには、scanf("%d",&a) とする.
  3. 変数の前につく & はアドレスをとる演算子であるが、これについては後日、ポインターの解説のところで詳解する.


3. 演習問題

「BASICプログラミング」の「入力をわかりやすくする」のように、 変数 a の値を入力するときに

a=

変数 b の値を入力するときに

b=

計算結果を表示するときに

a+b=xxxx

(ただし、xxxxは計算結果)と画面に出るように、上のCのプログラムを書き換えよ(ヒント:関数 printf() を関数 scanf() と組み合わせて用いよ).

答えを見る