変数は必ず宣言してから用いる.(int n, double x,など)
変数の代入には = を用いる.( = の右側の式の値が,左側の変数に代入される)
変数の表示の仕方は整数型と実数(浮動小数点)型で違う. printf("%d",n),printf("%lf",x)
変数の入力の仕方も整数型値で違う. scanf("%d",&n), scanf("%lf",&a)
ブロック文
今日でてくる
if
文や
for, while
文では
ブロック文
と呼ばれるものが使われます.ブロック文とは、文を一まとめにしたもので、
{
}
で囲まれています.
if
文
, if-else
文
プログラムを作成していると、条件によって処理を分岐させたい場合がよく出てきます.例えば、先ほどの確認問題(割り算)等です。(下のプログラムは解答例です。確認しつつファイル名を
if-1.c
としてエディターで打ち込んでください.)
- - - - - - - - -
- - - - - - -
#include <stdio.h>
int main()
/*
実数型の変数
a, b, c
を用意する
*/
double a, b, c;
/*
実数型変数
a
に入力
*/
printf("
実数
a
を入力してください:
");
scanf("%lf", &a);
/*
実数型変数
b
に入力
*/
printf("
実数
b
を入力してください:
");
scanf("%lf", &b);
/*
実数型変数
c
に
a/b
の結果を代入
*/
c = a/b;
/*
変数
c
の内容を画面に表示
*/
printf("a/b=%lf\n", c);
- - - - - - - - -
- - - - - - -
このプログラムを実行し、実数
a,b
をそれぞれ入力すると、
a/b
の結果を画面に出力します.ところで、
b
として
0
を入力するとどうなるでしょうか?やってみると分かりますが、なにかエラーが出ます.
このように、実数型に限らず
0
で割ろうとすると実行時にエラーになる(コンパイルは成功する)
ので、それを回避することを考えねばなりません.そこで、
条件文
が登場します.まずは、サンプルプログラムでみてみましょう.先の
if-1.c
を次のように変更してください(説明の為に色をつけていますが、色は無視してください).
- - - - - - - - -
- - - - - - -
#include <stdio.h>
int main()
/*
実数型の変数
a, b, c
を用意する
*/
double a, b, c;
/*
実数型変数
a
に入力
*/
printf("
実数
a
を入力してください:
");
scanf("%lf", &a);
/*
実数型変数
b
に入力
*/
printf("
実数
b
を入力してください:
");
scanf("%lf", &b);
/* b
が
0
であるかによって分岐
*/
if (b == 0.0)
printf("0
での割り算はできません.
\n");
/*
実数型変数
c
に
a/b
の結果を代入
*/
c = a/b;
/*
変数
c
の内容を画面に表示
*/
printf("a/b=%lf\n", c);
- - - - - - - - -
- - - - - - -
if (b == 0.0)
からが条件文です.このプログラムでは、入力された
b
の値が
0
に等しければ
青色の部分
が実行され、それ以外の場合は
赤色の部分
が実行されます.
整数
m
が入力されると、それが奇数か偶数かを判定するプログラムを作成せよ.
(注:剰余を求める演算子
%
を利用
.
これは整数型変数
m, n
に対し、
m%n
は
m
を
n
で割ったときの余りを与える.この演算子は整数型変数にのみ利用可能.)
2つの実数
s, t
を入力すると
, s
>
t, s = t, s
<
t
か判定して表示するプログラムを作成せよ.(
If-else
文のパターン3を参考)
3つの実数
, a, b, c
を入力すると
, x
に関する2次方程式
, ax
2
+ bx + c = 0
が実数解を持つか判定し
,
表示するプログラムを作成せよ.
「
a==100
」 または 「
a==200
」 なら
といった、場合を扱いたいときがあります.このような
「かつ」
や
「または」
に相当する
論理演算子
を使うことで、より複雑な条件をあらわすことができます.
例えば、うるう年は
「4で割り切れ かつ 100で割り切れない年」
「400で割り切れる年」
のどちらかに当てはまる年のことです.例えば入力された年(西暦)を上の条件に照らし合わせ、うるう年かどうかを判定するプログラムは次のようになります.
if
文の中身に注意しつつ
,
ファイル名を
if-2.c
として打ち込んで
,
実行してみてください
.
途中でてくる
%
は剰余を与えるものでした(上述).
- - - - - - - - -
- - - - - - -
#include <stdio.h>
int main()
int n;
printf("
年
=");
scanf("%d", &n);
if (
(n%4 == 0)
&& (n%100 != 0)
)
printf("
うるう年です
\n");
if (
n%400 == 0
)
printf("
うるう年です
\n");
- - - - - - - - -
- - - - - - -
途中でてくる
&&
が関係演算子で、「かつ」をあらわします.関係演算子には
&&
のほかに次のようなものがあります.
関係演算子
&&
は
&
が2つであることに注意してください(
||
も同様).
&
1つでも他の意味がありますので、コンパイルエラーにはなりません.しかし、期待した動作とはならないので注意が必要です.
先の日本語でのうるう年の定義は
「4で割り切れ かつ 100で割り切れない年」 または 「400で割り切れる年」
と書き直すことができます.つまり、先の2つの
if
文を一つにまとめて次のように書くこともできます.
- - - - - - - - -
- - - - - - -
#include <stdio.h>
int main()
int n;
printf("
年
=");
scanf("%d", &n);
if (
((n%4
== 0) && (n%100 != 0)) || (n%400 == 0)
)
printf("
うるう年です
\n");
- - - - - - - - -
- - - - - - -