C言語の除算と剰余演算子を使って数値の最初と最後の桁の合計を求める方法
問題
キーボードから4桁の数値を入力したとき、その数値の最初の桁と最後の桁の合計を求めるには、どのようなCプログラムを書けばよいのでしょうか。
解決方法
このプログラムでは、実行時に4桁の数値を入力として受け取り、以下のロジックを用いて最初の桁と最後の桁の合計を計算します。
a=n%10;
b=n/1000;
result = a + b;
ロジックの解説
・n % 10:10で割った余りを求めることで、数値の最後の桁(1の位)を取得できます。
・n / 1000:1000で割ることで、4桁の数値の最初の桁(千の位)を取得できます。
・この2つの値を足し合わせることで、最初と最後の桁の合計が求まります。
それでは、このロジックを実際のプログラムに適用して、4桁の数値の最初と最後の桁の合計を求めてみましょう。
サンプルプログラム(4桁の場合)
以下は、除算演算子と剰余(モジュロ)演算子を使用して、4桁の数値の最初と最後の桁の合計を求めるCプログラムです。
#include<stdio.h>
main(){
int n,a,b,result;
printf("Enter a four digit number: ");
scanf("%d",&n);
a=n%10;
b=n/1000;
result = a + b;
printf("After adding first and last digit is %d", result);
getch();
}
実行結果
上記のプログラムをコンパイルして実行すると、以下のような結果が表示されます。
Enter a four digit number: 2345
After adding first and last digit is 7
入力した数値「2345」の場合、最後の桁は「5」、最初の桁は「2」であるため、合計は「7」となります。
サンプルプログラム(6桁の場合)
同じロジックは、桁数が異なる数値にも応用できます。6桁の数値の最初の桁を取得するには、100000で除算します。以下は、6桁の数値の最初と最後の桁の合計を求めるCプログラムです。
#include<stdio.h>
main(){
int n,a,b,result;
printf("Enter a six digit number: ");
scanf("%d",&n);
a=n%10;
b=n/100000;
result = a + b;
printf("After adding first and last digit is %d", result);
getch();
}
実行結果
上記のプログラムを実行すると、以下のような結果が表示されます。
Enter a six digit number: 346713
After adding first and last digit is 6
入力した数値「346713」の場合、最後の桁は「3」、最初の桁は「3」であるため、合計は「6」となります。
まとめ
このように、剰余演算子(%)と除算演算子(/)を組み合わせることで、数値の特定の桁を簡単に取り出すことができます。剰余演算子で最後の桁を取得し、桁数に応じた数値で除算することで最初の桁を取得できるため、除数を変更すれば任意の桁数の数値に柔軟に対応できます。
-
C言語で文字列⇔数値の相互変換を行う方法|sscanf関数とsprintf関数の使い方
はじめにC言語のプログラミングにおいて、「文字列から数値への変換」および「数値から文字列への変換」とは何を意味するのでしょうか?本記事では、標準ライブラリ関数を使った双方向の変換方法を、構文・サンプルコード・実行結果とあわせて解説します。解決策:使用する2つの関数C言語には、この変換を実現するための関数が用意されています。sscanf() ― 文字列を数値に変換するsprintf() ― 数値を文字列に変換する文字列から数値への変換(sscanf)sscanf()関数を使うことで、文字列として格納されたデータを、書式指定子に従って解析し、数値として各変数に読み込むことができます。scanf()
-
【Python】桁の配列から最小の数を作り、先頭と末尾の桁でできる数が素数かどうか判定する方法
問題の概要 0〜9の数字だけを要素に持つ配列 digits が与えられます。まず、これらの桁をすべて使って作れる最小の数を求めます。次に、その数の先頭の桁と末尾の桁を組み合わせてできる2桁の数(順方向・逆方向の2通り)が素数かどうかを判定し、生成した数と素数の結果を出力します。 たとえば、入力が digits = [5, 2, 1, 7] の場合を考えてみましょう。桁を昇順に並べると最小の数は 1257 になります。先頭と末尾の桁は「1」と「7」なので、組み合わせは 17 と 71 の2つ。この2つはどちらも素数であるため、プログラムは 1257、17、71 を返します。 解法のアプローチ