アットウィキロゴ
 

1.3.標準入力

 さて、前回のセクションまででprintf関数を使用して文を出力する方法と変数を使用して基本的な計算を行う方法を知りました。

 今度は、出力とは逆の動作で有る入力というのをやってみましょう。

 入力というのは、その名の文字の通りプログラムに対して数値を入力することです。用途としては、プログラムに数値を与えてからその数値をもとに計算させるというなどがあります。

 その関数の名前は、scanf関数といいます。

 使用方法は以下のとおりとなっております。

scanf("書式指定文字",&入力した値を格納する変数1,&入力した値を格納する変数2...)

 また、書式指定文字は入力させたい変数の数だけ書き、入力する数値の型によってそれに対応した物を使用する必要があります。また入力できる数値はいくつでも行けるので、,区切りで「入力した値を格納する変数」をいくつ書いても構いません。
 また、入力された数値の格納先の変数の前に「&」をつけるのを忘れないでください。理由はまだ説明できませので、今は暗黙のルールだと思ってくれて結構です。

 試しに以下のプログラムを打ってみてください。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int a;
  5. scanf("%d",&a);
  6. printf("変数aの値は%dです",a);
  7. }
  8.  

 このプログラムは

  1. 変数aを宣言する
  2. scanf関数を使用して、端末から数値を入力させて、その数値を変数aに格納する。
  3. printf関数を使用して、端末にaの値を表示させる。

という仕組みになっております。

 このようにして、scanf関数を使用して端末から数値を入力させることができます。

 また、「一回のscanf関数で入力させることのできる変数の数は制限されていない」「どの変数の型でも端末から入力させることのできる」ということを踏まえて次のようなプログラムを作ってみましょう。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. double a,b;
  5. int c;
  6. scanf("%lf %lf %d",&a,&b,&c);
  7. printf("a+b=%f\n",a+b);
  8. printf("cの値は%dです\n",c);
  9. }
  10.  

 一度のscanf関数で複数の値を入力させる場合は、それだけの文の書式を用意する必要があり、その書式と書式の間に半角スペースを設ける必要があります。
 また、一度のscanf関数で二つのdouble型変数・一つのint型変数へ入力させていることから分かる通り、一度のscanf関数で入力させる数値は全て同じ種類でなくても大丈夫です。

 また、double型変数の書式指定文字なのですが、scanf関数で入力させる場合は「%lf」、printf関数で出力する場合は「%f」とする必要があるので、覚えておいてください。

 このようにして、端末から数値を入力して変数に格納するということができます。

 では、練習問題をやってもらいましょう。以下の動作をするプログラムを作ってください。

練習問題

①小数を含む三つの数値を入力させてdouble型変数a,b,cに格納し、上から順にa+b+c,a-b*c,a*(b-c,a/(b+a*c),(a*c+b)%bの演算結果を表示する。
②円の半径を入力させて、その円の円周・面積を出力せよ。但し、円周率は3.14とし、半径・円周・面積の数値は小数も扱うとする。
最終更新:2010年01月26日 17:31