[C言語] do-while文を使って足し算して総和を求める方法
C言語におけるdo-while
文は、少なくとも一度はループを実行したい場合に便利です。
この構造を使って数値の総和を求めるには、まず変数を初期化し、do
ブロック内で数値を加算します。
その後、条件が満たされるまでwhile
部分でループを続けます。
この方法は、ユーザーからの入力を受け取って合計を計算する際などに役立ちます。
do-while文を使った足し算の実装
C言語におけるdo-while
文は、少なくとも一度はループ内の処理を実行したい場合に便利です。
ここでは、do-while
文を使って数値を足し合わせ、総和を求める方法を解説します。
サンプルコードの紹介
以下に、do-while
文を使って1から10までの整数を足し合わせるサンプルコードを示します。
#include <stdio.h>
int main() {
int sum = 0; // 総和を格納する変数
int i = 1; // ループカウンタ
// do-while文を使って1から10までの整数を足し合わせる
do {
sum += i; // iをsumに加算
i++; // iをインクリメント
} while (i <= 10); // iが10以下の間ループを続ける
printf("1から10までの総和は: %d\n", sum); // 結果を出力
return 0;
}
コードの詳細な解説
このセクションでは、上記のサンプルコードの各部分について詳しく説明します。
初期化部分の説明
int sum = 0;
総和を格納するための変数sum
を0で初期化します。
この変数は、ループ内で数値を累積するために使用されます。
int i = 1;
ループカウンタi
を1で初期化します。
この変数は、どの数値を現在加算しているかを追跡するために使用されます。
do-while文のループ条件
do { ... } while (i <= 10);
do-while
文は、do
ブロック内の処理を実行した後にwhile
の条件を評価します。
ここでは、i
が10以下である限りループを続けます。
do
ブロック内の処理は少なくとも一度は実行されます。
ループ内での処理
sum += i;
現在のi
の値をsum
に加算します。
これにより、1から10までの数値が順次sum
に加えられます。
i++;
i
をインクリメントします。
これにより、次のループで次の整数がsum
に加算されます。
実行結果の確認方法
このプログラムを実行すると、以下のような出力が得られます。
1から10までの総和は: 55
この結果は、1から10までの整数をすべて足し合わせた総和が55であることを示しています。
do-while
文を使用することで、ループ内の処理が少なくとも一度は実行されることが保証され、正しく総和が計算されます。
応用例
do-while
文を使った足し算の基本を理解したところで、いくつかの応用例を見ていきましょう。
これらの例は、実際のプログラムでの使用方法を示し、do-while
文の柔軟性を理解するのに役立ちます。
ユーザー入力を用いた総和計算
ユーザーから入力された数値を足し合わせるプログラムを作成することができます。
以下のコードは、ユーザーが0を入力するまで数値を入力し続け、その総和を計算します。
#include <stdio.h>
int main() {
int sum = 0; // 総和を格納する変数
int number; // ユーザーからの入力を格納する変数
do {
printf("数値を入力してください (終了するには0): ");
scanf("%d", &number); // ユーザーからの入力を取得
sum += number; // 入力された数値をsumに加算
} while (number != 0); // 入力が0でない限りループを続ける
printf("入力された数値の総和は: %d\n", sum); // 結果を出力
return 0;
}
配列を使った総和計算
配列内の数値をすべて足し合わせるプログラムを作成することも可能です。
以下のコードは、配列内の数値の総和を計算します。
#include <stdio.h>
int main() {
int numbers[] = {1, 2, 3, 4, 5}; // 数値を格納した配列
int sum = 0; // 総和を格納する変数
int i = 0; // ループカウンタ
int length = sizeof(numbers) / sizeof(numbers[0]); // 配列の長さを計算
do {
sum += numbers[i]; // 配列の要素をsumに加算
i++; // インデックスをインクリメント
} while (i < length); // 配列の全要素を処理するまでループを続ける
printf("配列内の数値の総和は: %d\n", sum); // 結果を出力
return 0;
}
条件付きの総和計算
特定の条件を満たす数値のみを足し合わせることもできます。
以下のコードは、偶数のみを足し合わせる例です。
#include <stdio.h>
int main() {
int sum = 0; // 総和を格納する変数
int i = 1; // ループカウンタ
do {
if (i % 2 == 0) { // 偶数かどうかをチェック
sum += i; // 偶数ならsumに加算
}
i++; // インデックスをインクリメント
} while (i <= 10); // 1から10までの数値を処理
printf("1から10までの偶数の総和は: %d\n", sum); // 結果を出力
return 0;
}
負の数を含む場合の処理
負の数を含む場合でも、do-while
文を使って総和を計算することができます。
以下のコードは、負の数を含む配列の総和を計算します。
#include <stdio.h>
int main() {
int numbers[] = {-1, 2, -3, 4, -5}; // 負の数を含む配列
int sum = 0; // 総和を格納する変数
int i = 0; // ループカウンタ
int length = sizeof(numbers) / sizeof(numbers[0]); // 配列の長さを計算
do {
sum += numbers[i]; // 配列の要素をsumに加算
i++; // インデックスをインクリメント
} while (i < length); // 配列の全要素を処理するまでループを続ける
printf("配列内の数値の総和は: %d\n", sum); // 結果を出力
return 0;
}
大きな数の総和を求める際の注意点
大きな数を扱う場合、整数型のオーバーフローに注意が必要です。
C言語では、int型
の範囲を超えるとオーバーフローが発生し、予期しない結果を招くことがあります。
大きな数を扱う場合は、long long型
を使用することを検討してください。
#include <stdio.h>
int main() {
long long sum = 0; // 大きな数を扱うためにlong long型を使用
int i = 1; // ループカウンタ
do {
sum += i; // iをsumに加算
i++; // インデックスをインクリメント
} while (i <= 1000000); // 1から100万までの数値を処理
printf("1から100万までの総和は: %lld\n", sum); // 結果を出力
return 0;
}
このように、do-while
文はさまざまな状況で柔軟に使用することができます。
各例を参考にして、実際のプログラムに応用してみてください。
まとめ
do-while
文は、少なくとも一度はループ内の処理を実行したい場合に便利な構文です。
この記事では、do-while
文を使った足し算の基本的な実装方法から、応用例、注意点について解説しました。
これを機に、do-while
文を活用して、より柔軟なプログラムを作成してみてください。