[C言語]「偶数であれば2で割り,奇数であれば3倍して1を足す」という操作を繰り返すと必ず1になるプログラム(if文解説)

プログラミング
<<プログラミングを学びたい方はこちら!>>

今回は以下のプログラムの書き方を解説していきます。

偶数であれば 2 で割り,奇数であれば 3 倍して 1 を足す」という操作を繰り返すと,いつか必ず1になるプログラム

計算過程も出力するプログラムで紹介します。

サンプルコードと実行結果

偶数であれば 2 で割り,奇数であれば 3 倍して 1 を足す」という操作を繰り返すと,いつか必ず1になるプログラム

サンプルコード

コードは以下の通り (/**/で囲まれた部分は説明文のためコードではないです)

#include<stdio.h>

int main(){

    /*整数型変数nを定義*/
    int n;

    /*nの数値をキーボードから代入*/
    /*while(1)またはfor(;;)で無限ループ*/
    /*breakで無限ループ終了*/
    while(1){
        printf("入力:n=");
        scanf("%d",&n);
        if(n<1){
            printf("1以上の数値を入力してください.\n");
        }else{
            break;
        }
    }
    printf("\n");

    /*偶数であれば2で割る*/
    /*奇数であれば3倍して1を足す*/
    /*1になったら終了*/
    while(n!=1){
        if(n%2==0){
            printf("偶数のため÷2\n");
            printf("%d ÷ 2 = %d\n",n,n/=2);
        }else{
            printf("奇数のため×3して+1\n");
            printf("%d × 3 = %d\n",n,n*=3);
            printf("%d + 1 = %d\n",n,n+=1);
        }
    }

    /*結果を表示*/
    printf("\n出力:n=%d",n);

    return 0;
}

実行結果

実行結果は以下の通り

入力:n=13

奇数のため×3して+1
39 × 3 = 39
40 + 1 = 40
偶数のため÷2
20 ÷ 2 = 20
偶数のため÷2
10 ÷ 2 = 10
偶数のため÷2
5 ÷ 2 = 5
奇数のため×3して+1
15 × 3 = 15
16 + 1 = 16
偶数のため÷2
8 ÷ 2 = 8
偶数のため÷2
4 ÷ 2 = 4
偶数のため÷2
2 ÷ 2 = 2
偶数のため÷2
1 ÷ 2 = 1

出力:n=1

補足説明を以下でしていきます。

条件分岐

ある一定の条件を満たしたときのみに実行したいコードがある場合、条件分岐にif文を使います。

if文

条件1つ

if(/*条件式*/) /*実行したいコード*/

{ }の中にコードを記述してもよいです。

条件2つ

if(/*条件式1*/){
    /*実行したいコード*/
}else{
    /*実行したいコード*/
}

1つ目の条件式のみ記述します。条件式1を満たさない場合はelseのコードを実行します。

条件3つ以上

if(/*条件式1*/){
    /*実行したいコード*/
}else if(/*条件式2*/){
    /*実行したいコード*/
}else if(/*条件式3*/){
    /*実行したいコード*/
}......
}else{
    /*実行したいコード*/
}

条件式1から順に記述していき、最後の条件式になったらその内容は記述せずelseのみで終わらせます。

おすすめ参考書紹介

「苦しんで覚えるC言語」はひとつひとつの要素をスローモーションでゆっくり確実に解説していることが特徴です。真面目にC言語を覚えたい初心者向けで、コツコツと確実に力をつけていくことができます。

「スッキリわかるC言語入門 第2版 (スッキリわかる入門シリーズ)」は「苦しんで覚えるC言語」に比べより親しみやすいイラストや構成で苦手意識を持ちにくい工夫が施されています。

コメント

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