next up previous
Next: 5 while 文について Up: c_lang Previous: 3 キーボードからの入力方法

Subsections


4 if文について

条件判断文には ``if文'' と ``while文'' があります。

4.1 条件判断1つの時

Octave で ``if''文を学びましたが、c言語ではどのように書くのでしょうか? 以下、プログラム例です。

---------- Program ----------------------
 #include <stdio.h>
 
  int main(void);
 
  int main(void)
  {                                 #一つのまとまりを{ }でくくる
    char  a[50], b[3];              #文字列型[文字数]
    int   n;                        #整数型

    printf("How old are you?\n");
    gets(a);                        #キーボードより読み込み
    n = atoi(a);                    #文字列型を整数に変換

    if (n >=20) {                   #if による条件判断
        printf("You are an adult.\n");
    }
    else {
        printf("You are a child.\n", b);
    }
  }

----------- Program END -----------------
このようになっております。 実行例です。
---------- 実行例 ----------------------
[nisimiya@dhcp32 C_Exercise]$ ./a.out 
How old are you?
76
You are an adult.
[nisimiya@dhcp32 C_Exercise]$ ./a.out 
How old are you?
12
You are a child.
---------- 実行例ここまで -------------

if文の書式は、読み取れましたでしょうか?

---------- if 文の書式 ----------------
if (条件) {

     処理内容 1
   
}
else {

     処理内容 2

}
---------------------------------------

4.2 条件判断2つ以上の時

テストの得点を入力し、60点未満は「あなたは不可デス。」、 60点から 79点までは「あなたは良です。」、80点以上なら「あなたは優デス。」 と 表示させるプログラムを作ってみましょう。

---------- Program ----------------------
 #include <stdio.h>
 
  int main(void);
 
  int main(void)
  {
    char  a[5];
    int   n;

    printf("Please input your english score.\n");
    gets(a);
    n = atoi(a);

    if ( n <60) {
        printf("You got a D.\n");
    }
    else if ( (n >=60) && (n < 70)) {
        printf("You got a C.\n");
    }
    else if ( (n >=70) && (n < 80)){
        printf("You got a B. Good!\n");
    }
    else {
         printf("You got an A.  Ecellent!!\n");
    }
       
  }

----------- Program END -----------------
c言語では、``else if'' となり、 else と if の間に1文字空白を入れる。 octaveでは ``elseif''とする。

4.3 演習

  1. 上記の成績評価プログラムに、S(90点以上)を付け加えよ。
  2. あるビュッフェタイプのレストランは、以下のような料金体系になってい る。 年齢を入力したとき、料金を表示するプログラムを作成せよ。

    $16歳未満 \Rightarrow (年齢)\times 80円$ $16-64歳 \Rightarrow 1500円$ $65歳以上 \Rightarrow 1000円$



Nobuo Nishimiya
平成21年6月23日