今回は以下のプログラムの書き方を解説していきます。
キーボードから二つの整数 a,b を入力し,繰り返し処理と引き算のみを利用して a÷b を計算するプログラムを作成せよ.ただし,a 及び b が負の数の場合には,0 以上の値が入力されるまで入力処理を繰り返すこと.
前回は「繰り返し処理と足し算のみを利用して a×b を計算するプログラム」を紹介しましたが、今回は除算を利用しないa÷bの書き方を紹介します。
![](https://gmeblo.com/wp-content/uploads/2022/08/4b56633bf8566cec9e575429b6eb67c3-160x90.jpg)
サンプルコードと実行結果
サンプルコード
コードは以下の通り (/**/で囲まれた部分は説明文のためコードではないです)
#include<stdio.h>
int main(){
/*整数型変数a,b,cを定義*/
int a,b,c;
/*a,bの数値をキーボードから代入*/
/*while(1)またはfor(;;)で無限ループ*/
/*breakで無限ループ終了*/
while(1){
printf("入力:a=");
scanf("%d",&a);
if(a<0){
printf("0以上の数値を入力してください.\n");
}else{
break;
}
}
while(1){
printf("入力:b=");
scanf("%d",&b);
if(b<0){
printf("0以上の数値を入力してください.\n");
}else{
break;
}
}
c=0;
while(a>=b){
/*aからbを引いた回数をカウント*/
a-=b;
c++;
}
/*結果を表示*/
printf("出力:a ÷ b = %d あまり %d\n",c,a);
return 0;
}
実行結果
実行結果は以下の通り
入力:a=9
入力:b=4
出力:a ÷ b = 2 あまり 1
a 及び b が負の数の場合
入力:a=-4
0以上の数値を入力してください.
入力:a=-7
0以上の数値を入力してください.
入力:a=9
入力:b=-2
0以上の数値を入力してください.
入力:b=-5
0以上の数値を入力してください.
入力:b=3
出力:a ÷ b = 3 あまり 0
0以上の数値を入力するまで繰り返し入力を求めます。
サンプルコードの挙動
例えば、9 ÷ 3 は 3 が 9 の中に何個入るかを考えます。つまり 9 が 0以下になるまで 9 から 3 を繰り返し引いていけばよいということです。
9 – 3 = 6 >>1回目( 6 >= 3 なのでループ続行)
6 – 3 = 3 >>2回目( 3 >= 3 なのでループ続行)
3 – 3 = 0 >>3回目( 0 < 3 なのでループを抜ける)
商は、繰り返し引いた回数なので 3 となります。
また、 7 ÷ 2 のように余りが出る場合でも
7 – 2 = 5 >>1回目( 5 >= 2 なのでループ続行)
5 – 2 = 3 >>2回目( 5 >= 2 なのでループ続行)
3 – 2 = 1 >>3回目( 1 < 2 なのでループを抜ける)
商は、繰り返し引いた回数なので 3 となり、余りは、最後の引き算の答えなので 1 となります。
おすすめ参考書紹介
「苦しんで覚えるC言語」はひとつひとつの要素をスローモーションでゆっくり確実に解説していることが特徴です。真面目にC言語を覚えたい初心者向けで、コツコツと確実に力をつけていくことができます。
「スッキリわかるC言語入門 第2版 (スッキリわかる入門シリーズ)」は「苦しんで覚えるC言語」に比べより親しみやすいイラストや構成で苦手意識を持ちにくい工夫が施されています。
コメント