a = 6, b = 5 のとき,次の各計算結果を表示するプログラムを作成せよ.
解答例:
#include <stdio.h>
void main()
{
    int a, b;
    a = 6;
    b = 5;
    printf("a = %d ¥n b = %d ¥n ", a, b);
    printf("a + b = %d ¥n", a+b); 
    printf("a - b = %d ¥n", a-b); 
    printf("a x b = %d ¥n", a*b); 
    printf("a / b = %d ¥n", a/b); 
    printf("a %% b = %d ¥n", a%b); /* ここはコメント.%%で画面に%が出力される */
    printf("底辺a,高さbの三角形の面積 = %d¥n", a*b/2); 
    printf("a^2 + ab = %d ¥n", (a+b)*a); 
}
結果:
a = 6 b = 5 a + b = 11 a - b = 1 a x b = 30 a / b = 1 a % b = 1 底辺a,高さbの三角形の面積 = 15 a^2 + ab = 66
あれ,割り算の結果が思い通りになりませんね.
わり算の結果(商)は,実数になるはずなので,
    printf("a / b = %f ¥n", a/b);
としてみよう.さあ,どうでしょう?
    a / b = 0.000000
ますますおかしくなりましたね.これは,同じ型同士で演算をすると結果も同じ型になるからである.
上の例だと,
[整数]=[整数]÷[整数]
となるため,商が正しく求まりません.そこで,別の実数の変数を用意して,
[実数]=[整数]÷[整数]
となるように,書き換えてみよう.
#include <stdio.h>
void main()
{
    int a, b;
    float c;
    a = 6;
    b = 5;
    c = a / b;
    printf("a / b = %f¥n", c); 
}
結果:
a / b = 1.000000
まだ,おかしいですね.
わり算をうまく行うには,
[実数]=[実数]÷[実数]
としなくてはならない.そこで整数から実数に変数の型を変換する必要がある. 型を変換することを キャスト と呼ぶ.
#include <stdio.h>
void main()
{
    int a, b;
    float c;
    a = 6;
    b = 5;
    c = (float)a / (float)b;
    printf("a / b = %f ¥n", c); 
}
結果:
a / b = 1.200000
やっと,意図した結果が得られた.
このように,計算の途中で型が思い通りにならないことが多く出てくる.気をつけてプログラムを作ろう.
これまで,プログラム内で扱う値は,あらかじめ(=コンパイル時に)プログラムに記述してあるものしか扱えなかった.
そこで、上のプログラムにおいて,変数 a や変数 b に後から(=実行時に)値を設定できるようにしよう.
キーボードからデータを入力するには scanf()関数を用いる.
基本的な文法は既にに学んだ printf() 関数とよく似ている.

scanf() 関数は,printf() 関数によく似ているが,値を格納する変数の前に必ず & をつける必要がある.
この記号の意味(変数のアドレスを取り出す演算子)は情報処理・演習2(後期)に扱う.
キーボードから変数に値を入力し,画面に表示するプログラム:
#include <stdio.h>
void main()
{
    int a;
    float b;
    printf("a = ");
    scanf("%d", &a);
    
    printf("b = ");
    scanf("%f", &b);
    printf("a = %d ¥n", a);
    printf("b = %f ¥n", b);
}
さて今度は,ある整数を入力したとき,その整数が正か負かを判定し,結果を画面に表示するにはどうしたらよいか考えてみよう.
プログラムを作成するときは,課題が与えられたらいきなりプログラミングに取りかからず,必ず計算手順(アルゴリズム)を検討する.
| 1.整数を入力する 2.正負を判定する | 
となる.それぞれを,詳細に検討すると,
| 1.整数を入力する | 
| 2.1 整数が0以上か? 2.1T 成立するとき 「正の整数です」 | 
これを,C言語を用いてプログラムにしてみよう.
英語でif~, ~, は,「もし~ならば,~」と,条件を表すことができる.
C言語でも同様に条件によってプログラムの流れを切り替える(制御する)方法が必要である.
プログラム中において,変数と数の大小などを比較し,その結果によって処理を変えることを条件分岐と呼ぶ.
C言語の if 文の最も簡単な分岐の例をフローチャートで表すと,

となり,条件が成り立つときは処理1を実行し,成り立たないときは処理1を実行せず,その先に進む.
さらに,if~else~文では,

このように,条件が成り立つときは処理1を実行し,成り立たないときは別の処理2を実行するという流れが実現できる.
数の大小を比較する演算子を比較演算子と呼び,比較の条件が成立した場合を「真(True)」,不成立の場合を「偽(False)」という.
| 演算子 | はたらき | 使い方 | 意味 | 
| = = | 等しい | a = = b | a と b は等しい | 
| != | 等しくない | a != b | a と b は等しくない | 
| < | 小なり | a < b | a は b より小さい | 
| > | 大なり | a > b | a は b より大きい | 
| <= | 以下 | a <= b | a は b 以下 | 
| >= | 以上 | a >= b | a は b 以上 | 
注意: =>,=<, =! という比較演算子は存在しない.
複数の条件を組み合わせてより複雑な条件を作るには,論理演算子を用いる.
| 演算子 | はたらき | 使い方 | 意味 | 
| && | かつ | a = = 5 && b = = 3 |  | 
| || | または | a = = 2 || b < -2 |  | 
| ! | ~ではない | ! (a = = 0) |  | 
では if 文を使って整数の正負判定プログラムを作ってみよう.
#include <stdio.h>
void main()
{
    int n;    
    printf("整数を入力して下さい");
    scanf("%d", &n);
    if ( n >=0 ) 
    {
        printf("正の整数です¥n ");          /*整数が0以上の時に実行される 処理1*/
    }
    else
    {
        printf("負の整数です¥n ");               /* 整数が0未満の時に実行される 処理2*/
    }    
}
(1)先週の課題(2)において,変数a, b をキーボードから入力して計算するように変更してみよう.
(2)人は1kg減量するためには7500kcal消費する必要があるとする。
みんながビリーズブートキャンプでダイエットすると1週間のトレーニングで2500kcal消費できる.
キーボードから今の体重(kg)と目標体重(kg)を入力すると,あと何kcal消費する必要があるか画面に表示するプログラムを作成せよ.
*体重は浮動小数型で定義しなさい*
(3)次に,もし求めた消費カロリーが2500kcal 以上だったら「一週間以上ビリー確定!」
と画面に表示されるようにプログラムを改良しよう.
(4)以下の表のように,求めた消費カロリーがさらに細かく分類され,ビリー継続期間を画面に表示するようにプログラムを改良しよう.
| 消費カロリー(kcal) | ビリー継続期間 | 
| 0以内 | ビリーとトレーニングする必要はありません | 
| 0〜2500 | ビリーと1週間くらい運動だね | 
| 2500〜10000 | ビリーと1ヵ月頑張ってみよう | 
| 10000〜20000 | ビリーと2ヵ月頑張ってみよう | 
| 20000〜30000 | ビリーと3ヵ月頑張ってみよう | 
| 30000〜40000 | ビリーと4ヵ月頑張ってみよう | 
| 40000以上 | やっぱり食生活から見直そう |