前回の練習問題の解答例

#include <stdio.h>

int main(void)
{
	printf("こんにちは世界\n");
	return 0;
}
「こんにちは世界」だけが全角文字で、他は全て半角文字である。
字下げにはTabキーを使う。 何らかの事情でTabキーを使えない場合は、半角スペースを何個か入力すればよい。 その場合、「半角スペース○個で字下げ1個分」と決め、字下げの位置を揃えることが大切である。

整数の表示

printfで整数を表示してみよう。
#include <stdio.h>

int main(void)
{
	printf("今日は%d月%d日です。\n",10,6);
	return 0;
}
printfの文中に%dが2つある。実行の時には、%dに右の数値が順に当てはめられて、「今日は10月6日です」と表示される。 日本語(全角文字)が混じる時は、全角と半角の区別に注意すること。%dと\nは半角である。

加算と減算

足し算と引き算を計算する。
#include <stdio.h>

int main(void)
{
	printf("10たす6は%dです。\n",10+6);
	printf("10ひく6は%dです。\n",10-6);
	return 0;
}
%dに計算結果が当てはめられて表示される。

乗算と除算

掛け算と割り算を計算する。
#include <stdio.h>

int main(void)
{
	printf("10かける6は%dです。\n",10*6);
	printf("10わる6の商は%dです。\n",10/6);
	return 0;
}
乗算は「*」、除算は「/」で表す。 除算の結果は商のみであり、余りは計算されない。

剰余

割り算の余り(剰余)を計算する。
#include <stdio.h>

int main(void)
{
	printf("10わる6の余りは%dです。\n",10%6);
	return 0;
}
%は剰余を計算する記号である(商は求めず剰余だけを計算する点に注意すべし)。
なお、数値を当てはめるための%dは%を含んでいるが、剰余とは無関係である。

演算子まとめ

上に出てきた計算の記号を演算子という。
整数の演算子
演算演算子
加算+
減算-
乗算*
除算の商/
剰余%


演算順序

演算順序は、基本的には数学と同じ。 ただし、整数の除算が商だけを計算する点には注意が必要である。
  1. 複数の演算子がある場合は、左から順に実行される。
  2. ただし、乗算・除算が加算・減算より優先される。
  3. ただし、丸括弧()がある場合は、丸括弧の中が優先される。
左から順の例
#include <stdio.h>

int main(void)
{
	printf("7+2-4の答は%dとなります。\n",7+2-4);
	return 0;
}
答は 5 となる。 7+2-4 が一度に計算されるのではなく、7+2 が計算された後で 9-4 が計算されている。

除算を含む例
#include <stdio.h>

int main(void)
{
	printf("7*2/4の答は%dとなります。\n",7*2/4);
	printf("7/4*2の答は%dとなります。\n",7/4*2);
	printf("2/4*7の答は%dとなります。\n",2/4*7);
	return 0;
}
数学ならば、7*2/4 と 7/4*2 と 2/4*7 の答はどれも3.5である。 しかし、C言語では、整数の除算は商だけを計算するので、計算順序により答が異なる。
7*2/4 は、まず 7*2 が計算され、次に 14/4 が計算されるので、答は 3 となる。
7/4*2 は、まず 7/4 が計算され、次に 1*2 が計算されるので、答は 2 となる。
2/4*7 は、まず 2/4 が計算され、次に 0*7 が計算されるので、答は 0 となる。
除算の部分が、それぞれ 14/4=3、7/4=1、2/4=0 と商だけを求めていることに注意しなければならない。

乗算が優先される例
#include <stdio.h>

int main(void)
{
	printf("7+2*4の答は%dとなります。\n",7+2*4);
	return 0;
}
2*4 が先に計算されるので、7+8 で答は 15 となる。

丸括弧内が優先される例
#include <stdio.h>

int main(void)
{
	printf("(7+2)*4の答は%dとなります。\n",(7+2)*4);
	return 0;
}
7+2 が先に計算されるので、9*4 で答は 36 となる。

練習問題

80円のみかんを12個と180円のりんごを4個買った時の合計金額を計算し「合計金額は○○円です。」と表示するプログラムを作りなさい。