[c言語] for文の入れ子構造(九九の掛け算、三角形をアスタリスクでお絵かき)

C言語

今日はfor文の入れ子構造について勉強していきましょう。自分はここからつまづき始めした。難しいと思いますが、サンプルコードをうまく使って説明していきます。具体的には九九のプログラムと、三角形の表示です。早速いきましょう。

九九のプログラム

#include <stdio.h>

int main(void){

  int i,j;
  printf("九九の掛け算を表示します\n");

  for(i=1; i<=9; i++){
    for(j=1; j<=9; j++){
      printf("%3d  ",i*j);
    }
    printf("\n");
  }

  return 0;

}

/* 実行結果
九九の掛け算を表示します
  1    2    3    4    5    6    7    8    9  
  2    4    6    8   10   12   14   16   18  
  3    6    9   12   15   18   21   24   27  
  4    8   12   16   20   24   28   32   36  
  5   10   15   20   25   30   35   40   45  
  6   12   18   24   30   36   42   48   54  
  7   14   21   28   35   42   49   56   63  
  8   16   24   32   40   48   56   64   72  
  9   18   27   36   45   54   63   72   81  
*/

printf関数のところで%3dとなっていますが、これは整数を少なくとも3桁の10進数で表示をするという意味です。

ちなみに%5.1fだと浮動小数点を少なくとも5桁で表示し、小数点以下は一桁で表示します。

流れ的には下の写真をみてください。

簡単にいうとまず、i=1のときにj=1~9を実行し、終ったらiを1足してまた同じ処理を行う、これをi=9になるまで、続けると言った感じです。

アスタリスクを使ったお絵かき(三角形)

次は、三角形を二重のfor文で書いていきます。

これも下の写真をみてください。

#include <stdio.h>

int main(void){

  int i,j,length;

  printf("右下の直角二等辺三角形を書きます。\n");

  printf("辺の長さ: "); scanf("%d",&length);

  for(i=1; i<=length; i++){
    for(j=1; j<=length-i; j++){
      printf(" ");
    }
    for(j=1; j<=i; j++){
      printf("*");
    }
    printf("\n");
  }

  return 0;

}

/* 実行結果

右下の直角二等辺三角形を書きます。
辺の長さ: 5
    *
   **
  ***
 ****
*****

*/

青の部分がアスタリスクの部分で、赤の部分が空白の部分となります。

字が汚いですね。すみません。変数の変化の流れはこんな感じですね。うーーーんやっぱり難しい!

今回は右下の三角形を例題にしてみましたが、左下の三角形などいろいろな三角形を表示するプログラムを自分で書いてみるのもいいかもしれません。もし時間があるなら、全てのパターンの三角形表示のプログラムも掲載したいと思います。

以上で終了となります。ありがとうございました。

コメント

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