第4回 多分岐・これまでの復習問題


第2回の演習の解答例

(1)画面に

  ¥100もらった 

  ”また来週”

と画面に表示するようなプログラムを作ろう.

解答例:


#include <stdio.h>

void main()
{
	printf(".¥¥100もらった¥n");
	
	printf(".¥"また来週.¥"¥n");
}



(3)コマンドプロンプトに好きなアルファベットの大文字1文字を絵で表してみよう.

解答例(Mの場合):


#include <stdio.h>

void main()
{
	printf("|\    /|¥n");
	printf("| \  / |¥n");
	printf("|  \/  |¥n");
	printf("|      |¥n");

}



(4)掛け算九九の9の段を,以下のように式と答えを表すプログラムを作ろう.

解答例:


#include <stdio.h>

void main()
{
	printf("9の段の式と答えを表す.¥n");
	printf("9×1=9¥n");
	printf("9×2=18¥n");
	printf("9×3=27¥n");
	printf("9×4=36¥n");
	printf("9×5=45¥n");
	printf("9×6=54¥n");
	printf("9×7=63¥n");
	printf("9×8=72¥n");
	printf("9×9=81¥n");
}

多分岐

先週の発展問題のように,肥満度を細かく判定するにはどうしたらよいか.

複数の条件のどれに当てはまるかを検討するためには,if() - else if() - else を組み合わせて使う.

基本的な分岐の流れは,以下のようにプログラム中の上から順に判定・分岐がされる.

1.1 身長を入力する
1.2 体重を入力する

2. BMI値を計算する

3.1 BMI値が
3.1A 18.5未満 「やせ」
3.1B 25未満 「普通」
3.1C 30未満 「やや肥満」
3.1D 35未満 「肥満1」
3.1E 40未満 「肥満2」
3.1F それ以外 「肥満3」



#include <stdio.h>

void main()
{
    float weight, height, BMI;   /* weightは体重,heightは身長 */

    printf("体重は?[kg]");
    scanf("%f", &weight);
    
    printf("身長は?[m]");
    scanf("%f", &height);

    BMI = weight / height / height;

    printf("BMI値は,%fです.¥n", BMI);

    if ( BMI < 18.5 ) {
 
        printf("やせ¥n");              /* BMIが18.5未満の時実行 処理1*/
 
    } else if ( BMI < 25 ) {
 
        printf("普通¥n");                  /* BMIが25未満の時実行 処理2*/
 
    } else if ( BMI < 30 ) {
 
        printf("やや肥満¥n");              /* BMIが30未満の時実行 処理3*/
 
    } else if ( BMI < 35 ) {
 
        printf("肥満1¥n");              /* BMIが35未満の時実行 処理4*/
 
    } else if ( BMI < 40 ) {
 
        printf("肥満2¥n");              /* BMIが40未満の時実行 処理5*/
 
    } else {
 
        printf("肥満3¥n");              /* BMIが40以上の時実行 処理6*/
 
    }
 }

ダメな例



#include <stdio.h>

void main()
{
    float weight, height, BMI;

    printf("体重は?[kg]");
    scanf("%f", &weight);
    
    printf("身長は?[m]");
    scanf("%f", &height);

    BMI = weight / height / height;

    printf("BMI値は,%fです.¥n", BMI);

    if ( BMI < 18.5 ) {
        printf("やせ¥n");
    } 

    if ( BMI < 25 ) {
        printf("普通¥n");
    } 

    if ( BMI < 30 ) {
        printf("やや肥満¥n");
    } 

    if ( BMI < 35 ) {
        printf("肥満1¥n");
    } 

    if ( BMI < 40 ) {
        printf("肥満2¥n");
    } 

    if ( BMI >= 40 ) {
        printf("肥満3¥n");
    }
 }

なぜダメなのかを考えてみよう!!


あまり良くない例



#include <stdio.h>

void main()
{
    float weight, height, BMI;

    printf("体重は?[kg]");
    scanf("%f", &weight);
    
    printf("身長は?[m]");
    scanf("%f", &height);

    BMI = weight / height / height;

    printf("BMI値は,%fです.¥n", BMI);

    if ( BMI < 18.5 ) {
        printf("やせ¥n");
    } 

    if ( 18.5 <= BMI && BMI < 25 ) {
        printf("普通¥n");
    }

    if ( 25 <= BMI && BMI < 30 ) {
        printf("やや肥満¥n");
    } 

    if ( 30 <= BMI && BMI < 35 ) {
        printf("肥満1¥n");
    }

    if ( 35 <= BMI && BMI < 40 ) {
        printf("肥満2¥n");
    } 

    if (BMI >= 40 ) {
        printf("肥満3¥n");
    }

 }


演習

提出する時は,用紙の右上に年,組,番号,名前を明記すること!!

1.半径rの球の体積,表面積を求めるプログラムを組め.(π=3.14とする.)

2.テストの点数(0点から100点の整数)をキーボードから入力し,その値によって以下の通り,S,A,B,C,Fを画面に表示するプログラムを組め.

    点数      成績 
90点以上 S
80点以上90点未満 A
70点以上80点未満 B
60点以上70点未満 C
60点未満 F

3.整数nをキーボードから入力し,まずnの正負を判断し、次に偶数か奇数かを判定し,画面に出力するプログラムを組め.(0を入力した時には「入力された数は0です」と画面に出力しよう)

4.西暦を入力し,うるう年かどうかを判定するプログラムを組め.(4で割り切れ,かつ100では割り切れない年,もしくは400で割り切れる年がうるう年.)

5.何時間,何分,何秒と3つの整数をキーボードから入力すると,秒数に換算して画面に表示するプログラムを組め.(例えば時間,分,秒をそれぞれ 1,30,15と入力すると,5415と画面に表示する.)

6.A君とBさんがじゃんけんをする.グー=1,チョキ=2,パー=3として,A君とBさんの手をそれぞれ入力すると,A君とBさんのどちらが勝ったのかを判定するプログラムを組め.

7.2次方程式ax2+bx+c=0(a≠0)の係数a,b,cを入力し,判別式D(=b2-4ac)の値を求め,D>0の時は「2つの実数解」,D=0の時は「重解」,D<0の時は「2つの虚数解」と画面に表示するプログラムを組め.

8.1日の作業時間を入力し,アルバイト料を求めるプログラムを組め.基本は7時間以内で,時間単価は850円である.7時間を越えた場合の計算方式は次の通りである.

・10時間以内の場合

7時間を越えた部分につき,単価900円

・10時間を越えた場合

7時間を越えた部分は単価900円,10時間を越えた部分は単価1000円として計算する.そして全体を1.2倍する.