C++
 Computer >> コンピューター >  >> プログラミング >> C++

C言語:たった1つのステートメントで数値の各桁の合計を求めるプログラム

この記事では、複数のステートメントを書かずに、数値の各桁の合計を求める方法を解説します。つまり、わずか1つのステートメントだけで桁の合計を計算するテクニックです。

基本的な考え方

桁の合計を求める一般的な手順はご存じのとおりです。まず、数値を10で割った余りを取ることで最下位の桁(一の位)を取り出し、次にその数値を10で割って、これを数値が0になるまで繰り返します。

この処理を1つのステートメントで実現するには、forループを活用します。forループには3つのセクションがあります。

  • 初期化フェーズ:このケースでは何もしません(空のままにします)
  • 条件判定フェーズ:数値が0より大きいかどうかをチェックします
  • 増減フェーズ:ここで複数のタスクを実行します。まず「sum += n % 10」で最下位の桁を合計に加算し、同時に「n /= 10」で数値を10で割って減らします

カンマ演算子を使うことで、増減フェーズ内に複数の式を記述できるのがポイントです。

サンプルコード

#include<stdio.h>
main() {
   int n, sum = 0;
   printf("Enter a number: "); //ユーザーから数値を入力
   scanf("%d", &n);
   for(; n > 0; sum += n%10, n/= 10) {
   }
   printf("The sum of digits: %d", sum);
}

実行結果

Enter a number: 457
The sum of digits: 16

この例では、入力した数値「457」の各桁(4 + 5 + 7)が加算され、結果として「16」が出力されます。ループ本体が空である点に注目してください。すべての処理がfor文のヘッダー部分に集約されているため、波括弧の中には何も書く必要がありません。

この手法はコードをコンパクトにできますが、可読性の観点からは通常のwhileループや複数行での記述が好まれる場合もあります。ただし、C言語のforループとカンマ演算子の柔軟な使い方を学ぶ良い例題と言えるでしょう。

  1. C#で再帰を使用して数値の各桁の合計を求める方法

    C#では、再帰(リカーシブ)処理を利用することで、数値の各桁の合計をシンプルかつ効率的に計算できます。本記事では、実際のコード例を通じて、その実装方法と動作の仕組みを詳しく解説します。 対象となる数値の設定 まず、桁の合計を求めたい数値を変数に設定します。ここでは例として「789」を使用します。 int val = 789; Console.WriteLine(Number: {0}, val); 再帰による桁の合計の計算方法 次のメソッドでは、引数として受け取った数値を10で割った余り(最下位の桁)を取り出し、10で割った商(残りの桁)に対して自分自身を再帰的に呼び出すことで、すべての

  2. Pythonで数Nの桁数を数えるプログラムの書き方

    ある数Nが与えられたとき、その数に含まれる桁の総数を求めることを考えましょう。例えば以下のようなケースです。入力例1:N = 891452出力:6解説: 与えられた数891452は6桁の数字で構成されているため、この場合は「6」を返します。入力例2:N = 0074515出力:5解説: 先頭の0を除いた有効な桁数が5桁であるため、出力は「5」となります。この問題を解くためのアプローチこの問題は、次の手順で解決できます。数値nを入力として受け取ります。関数countDigits(n)が入力nを受け取り、桁数をカウントして返します。数値の各桁に対してループ処理を行い、カウンター変数を1ずつ増加させ