もどくんちゃんねる ガジェット部

自転車、ガジェット、映像制作、CG、Blender など

C言語 入力した値で特定の数がいくつ含まれているか調べるプログラムの作り方 charを使わない場合

入力した値で特定の数がいくつ含まれているか調べるプログラムの作り方を簡単に解説しますよ。

解説はソースコードのコメントを見てね!!!

それではどうぞ!!

 

 

 

ソースコード

#include <stdio.h>
int main(void){
    int x[128];//それぞれの桁の値を一つずつ格納する変数
    int num1,num2//num1
    int keta=0//入力した値の桁数を格納する変数(初期化大事)
    int waru=1//割る数を格納する変数。桁が4のときは1000、3のときは100。
    int count=0//3の数をカウントする用の変数。
    
    int i//for文用


    printf("整数を入力してください\n");
    scanf("%d",&num1);
    /*説明用に「5634」が入力された場合を考える。*/

    num2=num1//入力された値をnum2に代入

    /*桁数を調べている*/
    while(num2>0){ //num2が0より大きい場合はループ
        num2=num2/10//ループごとに割る10するつまり、一回目:5634/10=563 二回目:563/10=56 3回目:56/10=5 4回目:5/10=0 0になったのでループ終了
        keta++; //4回るーぷされたから値は4になる。
    }
    printf("桁数は%d\n",keta);

    /*割る数を計算している4桁なら1000、3桁なら100。*/
    for(i=0;i<keta-1;i++){
        waru=waru*10//10,100,1000となる。
    }

    printf("最初に割る数%d\n",waru); //4桁の場合は1000になる

    /*それぞれの桁の値を調べている*/
    for(i=0;i<keta;i++){ 
        x[i]=num1/waru//1回目では5634/1000=5となり、4桁目の値である5をx[0]に格納している
        num1=num1-waru*x[i]; //一回目では5634-1000*5=634という計算をしている。
        waru=waru/10;        //一回目では1000/10=100となっている。

    }
    
    /*3の数を調べている*/
    for(i=0;i<keta;i++){
        if(x[i]==3){ //桁の値が3の場合はカウント
            count++;
        }
    }
    printf("入力した数に3は%d個あるよ\n",count);
}

 

<実行結果>

i001f@DESKTOP-6Q0UAFQ:/mnt/c/wsl$ ./genki.out
整数を入力してください
5634
桁数は4
最初に割る数1000
入力した数に3は1個あるよ

 

 

役に立ったかな?!

じゃ、ばいげーーーん

広告クリックしてくれるとうれちいな!