C言語:プログラム作成問題 Lv.1

challenge_C言語logo C言語プログラミングにチャレンジ

C言語での画面出力(printf関数)、ASCIIコードエスケープシーケンス文字変数計算式について一通り理解している方向けのプログラム作成問題です。

自分の氏名を2行で表示するプログラム

printf関数を1つだけ使ってあなたの氏名を2行で表示させてください。

ファイル名: yourname.c

実行イメージ

ながさき
しゅんや
#include <stdio.h>

int main(void)
{
	printf("ながさき\nしゅんや\n");

	return 0;
}

「おつりは¥92円です」と表示する

次の表示を行うプログラムを作成してください。
注意)¥92 の部分は全て半角文字で表示してください。

ファイル名: oturi92.c

実行イメージ

おつりは\92円です

参考

#include <stdio.h>

int main(void)
{
	printf("おつりは\\92円です\n");

	return 0;
}

変数同士の計算をする

整数型変数の xy にそれぞれ 234432 を代入する。
xとyの合計を画面に表示してください。

ファイル名: xtasuy.c

実行イメージ

666
#include <stdio.h>

int main(void)
{
	int x = 234, y = 432;

	printf("%d\n", x+y);

	return 0;
}

上記は変数xとyの2つだけを利用しているが、例えば合計用の変数を宣言して次のようにしても良い。

#include <stdio.h>

int main(void)
{
	int x = 234, y = 432, gokei;

	gokei = x + y;
	printf("%d\n", gokei);

	return 0;
}

どちらが良い、という訳ではなく状況に応じてこうしたことが出来るようになればいいと思う。
プログラム上で何度も合計値を利用するのであれば、後者の方が何度もx+yの計算式を記述する必要がなくなるため使いやすい。

5教科の得点を変数に入れて合計と平均を表示する

5教科のテストの得点をそれぞれ変数に代入しておきます。
5教科の合計点平均点を表示してください。

ファイル名: 5kyoka.c

実行イメージ(得点が 90, 80, 78, 55, 95の場合の例)

合計は398点
平均は79点
#include <stdio.h>

int main(void)
{
	int kokugo = 90, sansu = 80, rika = 70, syakai = 30, ongaku = 95;
	int gokei, heikin;

	gokei = kokugo + sansu + rika + syakai + ongaku;
	heikin = gokei / 5;

	printf("合計は%d点\n", gokei);
	printf("平均は%d点\n", heikin);

	return 0;
}

上記プログラムの場合、変数型にintを使っているため、全て整数での扱いとなります。
その場合、平均点での割り算計算では小数点以下が切り捨てとなります。
もし、小数点以下も含めて計算をしたい場合は解答例2のように実数型変数(float または double )を利用する必要があります。

#include <stdio.h>

int main(void)
{
	int kokugo = 90, sansu = 80, rika = 78, syakai = 55, ongaku = 95;
	int gokei;
	double heikin;

	gokei = kokugo + sansu + rika + syakai + ongaku;
	heikin = (double)gokei / 5.0;

	printf("合計は%d点\n", gokei);
	printf("平均は%f点\n", heikin);

	return 0;
}

実行イメージ

合計は398点
平均は79.600000点

10行目の記述

heikin = (double)gokei / 5.0;

(double) の部分ですが、キャスト演算子といって一時的に変数gokeiをdouble型にキャスト(変換)しています。計算結果を実数としたい場合は双方の値を実数値にする必要があるため、割る数も 5 ではなく 5.0 としています。

表示結果に0が多くて気になる場合は、printf関数の書式指定を利用して

printf(“平均は%.1f点\n”, heikin);

などのようにすると小数点以下の桁数を制御できます。

イメージ

平均は79.6点

コメント

タイトルとURLをコピーしました