[C言語]1からnまでの整数の総和を求めるプログラム(while/for解説)

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

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

整数型変数 n を定義し,1 以上の値をキーボードから入力して,1 から n までの整数の総和を求めるプログラムを作成せよ.

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

整数型変数 n を定義し,1 以上の値をキーボードから入力して,1 から n までの整数の総和を求めるプログラムを作成せよ.

サンプルコード

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

#include<stdio.h>

int main(){

    /*整数型変数nを定義*/
    int n;
    /*合計値を格納する整数型変数sumを定義*/
    int sum=0;
    /*システム制御用の整数型変数iを定義*/
    int i;

    /*数値をキーボードから代入*/
    printf("1以上の数値を入力してください\n");
    printf("入力:n=");
    scanf("%d",&n);

    /*1~nまでの整数の総和を求める*/
    /*forループ,またはwhileループを利用する*/
  /*iは1から始まり1ループ終わるごとにiは+1される*/
    for(i=1;i<n+1;i++){
        /*sumにiを足していく*/
        /*sum+=iとsum=sum+iは同じ挙動をする*/
        sum+=i;
    }

    printf("出力:sum=%d",sum);

    return 0;
}

実行結果

実行結果は以下の通り

1以上の数値を入力してください
入力:n=10
出力:sum=55

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

繰り返し処理

繰り返し処理には代表的なものにwhile文とfor文があります。それぞれの扱い方を紹介します。

while文

while文基本形

while(/*条件式*/){
     /*コード*/
}

()内に条件を書き、その条件が満たされている間は{}内のコードを実行します。つまり、コードを実行する前に条件チェックを行う前置判定となります。

  1. 条件チェック
  2. 〇の時コード実行➝1に戻る
  3. ×の時終了

条件を満たす間は永遠にループします。

do-while文

do{
  /*コード*/
}while(/*条件式*/);

最初に{}内のコードを実行し、その後に()内の条件を確認します。条件を満たしていれば再びコードを実行します。つまり、コードを実行した後に条件チェックを行う後置判定となります。

  1. コードを実行
  2. 条件チェック
  3. 〇➝1に戻る
  4. ×の時終了

条件式に関係なく必ず一回はコードを実行します。その後条件を満たす間は永遠にループします。

while文無限ループ

while(1){
     /*コード*/
     if(/*条件*/) break;
}

)内に1を入れると無限ループとなります。条件無しでループし続けるため他の方法でループを抜けなければいけません。

代表的なものがifbreakです。無限ループ中にifの条件を満たす時が来たらbreakでループを強制終了するという方法です。

for文

for文基本形

for(/*ループ変数初期化*/ ; /*条件式*/ ; /*繰り返し処理*/){
   /*コード*/
}

while文に比べ複雑に見えますがこちらもよく使います。わかりづらいので具体例で解説します。

for( ①i = 0 ; ②i < 10 ; ③i ++ ){
   a = a + 10;
}

①ループ回数を記憶するための変数を初期化
②条件式
③コードを実行した後に必ず実行される処理

まずループ回数を記憶するための変数 i を初期化します。これはループに入る前に一回のみ実行される処理です。i を0にします。
次に条件式を満たしているならばコードを実行します。今回の場合は a に10足します。
最後にコードを実行した後 i を++、つまり+1します。1周目が終わった現在 i は1になっています。これは条件式の i < 10 を満たすので再びループに入ります。

0回目、1回目、2回目、… 、9回目まで繰り返しコードを実行し、9回目の最後に i = 10となり条件式を満たさないのでループを抜けます。計10回コードを実行しました。

for文無限ループ

for( ;  ; ){
   /*コード*/
   if(/*条件*/) break;
}

()内になにも書き込まないと無限ループとなります。while文同様、条件無しでループし続けるため他の方法でループを抜けなければいけません。

for文でも代表的なものがifbreakです。無限ループ中にifの条件を満たす時が来たらbreakでループを強制終了するという方法です。

おすすめ参考書紹介

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

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

コメント

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