【C練習問題】整数値から、割合を求めるプログラム

※本サイトはアフィリエイト広告を利用しています。
アイキャッチIT技術
この記事は約3分で読めます。
スポンサーリンク

問題文

2つの整数値を読み込んで、1つ目に読み込んだ値が、2つ目に読み込んだ値の何%に当たるかを表示するプログラムを作成せよ。

【表示例】

二つの整数を入力してください。

整数x:32

整数y:76

xの値はyの値の42%です。

※【表示例】中の赤文字は、ユーザによる入力を求める箇所

 青文字は、計算により変動する箇所

うおな
うおな

今回の問題では、ユーザからは必ず1以上の正の整数が入力される。

使用する変数は、全て整数型を用い、浮動小数点数型への型変換などは行なわないという制約のもと、取り組みます。

プログラムの手順

  1. int型の変数nx, ny, calcを宣言する
  2. 整数の入力を求めるメッセージを出力する
  3. キーボードからの入力を受けつけ、整数xの値をnx、整数yの値をnyに代入する
  4. 割合を求める計算を行なう
  5. 計算結果を表示例に従って、出力する
フローチャート

サンプルプログラム

#include <stdio.h>

int main(void)
{
	int nx, ny, calc;

	puts("二つの整数を入力してください。");

	printf("整数x:");
	scanf("%d", &nx);

	printf("整数y:");
	scanf("%d", &ny);

	calc = 100 * nx / ny;

	printf("xの値はyの%d%%です。", calc);

	return 0;

}

1.int型の変数nx, ny, calcを宣言する

int nx, ny, calc;
うおな
うおな

int型の変数を3つ宣言しています。

int nx = 0;
int ny = 0;
int  = calc;
うおな
うおな

このように、変数を宣言する時は、合わせて初期化も行なうと、不定値が混入する恐れがなくなります。

2.整数の入力を求めるメッセージを出力する

puts("二つの整数を入力してください。");
うおな
うおな

puts関数を用いて、文字列を出力すると同時に、改行も行なっています。

3.キーボードからの入力を受けつけ、整数xの値をnx、整数yの値をnyに代入する

printf("整数x:");
scanf("%d", &nx);

printf("整数y:");
scanf("%d", &ny);
うおな
うおな

printf関数で、入力してほしい値を示し、scanf関数を用いて、変数に格納しています。

4.割合を求める計算を行なう

calc = 100 * nx / ny;
うおな
うおな

今回は、整数型の変数のみを用いるという制約を設けています。

そこで、単純に割合を求めようとすると、小数点以下を変数に格納できず、計算が上手くできません

そこで、予めnxの値に100をかけることで、対応をしています。

5.計算結果を表示例に従って、出力する

printf("xの値はyの%d%%です。", calc);
うおな
うおな

printf関数を用いて、計算結果の表示を行なっています。

%dと変換指定子を設定したところに、第2引数のcalcの値が挿入されます。

また、printf関数において、%は、変換指定子の始まりを指定する際に使用するため、「%%」という風に、2つ%を入力する必要があります。

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