繰り返し処理 - for -

課題1

数字を入力させて、その数字の分だけ文字列を表示させる 下記のプログラムをfor1.cとして書き、様々な数値で試して 正しく実行されることを確認せよ。

#include <stdio.h>

int main(void) {

    int i, x;

    printf("数字を1つ入力してください ");
    scanf("%d", &x);

    for (i=1; i<=x; i++){ 
        printf("%d回目の表示\n", i);
    }

    return (0);
}
(実行結果)
% ./a.out
数字を1つ入力してください 5
1回目の表示
2回目の表示
3回目の表示
4回目の表示
5回目の表示

課題2

数字を入力させて、1からその数字までの和を表示させる プログラムがある。 ******で隠された部分は自分で補って、下記のプログラムをfor2.cとして書 き、様々な数値で試して正しく実行されることを確認せよ。

#include <stdio.h>

int main(void) {

    int i, x, sum=0;

    printf("数字を1つ入力してください ");
    scanf("%d", &x);

    for (i=1; i<=x; i++){
        ******************* 
    }
    printf("1から%dまでの和 = %d\n", x, sum);

    return (0);
}
(実行結果)
% ./a.out
数字を1つ入力してください 6
1から6までの和 = 21

課題3

下記の実行結果のように図形を表示するプログラムをfor3.cとして 書き、正しく実行されることを確認せよ。


#include <stdio.h>

int main(void) {

    int i, j;

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

    return (0);
}
(実行結果)
% ./a.out
**********
*********
********
*******
******
*****
****
***
**
*

課題4

下記の実行結果のように図形を表示するプログラムをfor4.cとして 書き、正しく実行されることを確認せよ。


#include <stdio.h>

int main(void) {

    int i, j;

    for (i=0; i<10; i++){
        for (j=0; j<i; j++){
            printf(" ");
        }
        for (j=0; j<10; j++){
            printf("*");
        }
        printf("\n");
    }

    return (0);
}
(実行結果)
% ./a.out
**********
 **********
  **********
   **********
    **********
     **********
      **********
       **********
        **********
         **********

課題5

課題3、4を参考にして、下記の実行結果のように図形を表示するプログラムを for5.cとして書き、正しく実行されることを確認せよ。

% ./a.out
**********
 *********
  ********
   *******
    ******
     *****
      ****
       ***
        **
         *

課題6

課題5を参考にして、下記の実行結果のように図形を表示するプログラムを for6.cとして書き、正しく実行されることを確認せよ。

% ./a.out
*******************
 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *

課題7

for文を使用して、九九の値を表示するプログラムをfor7.cとして書き、数字の 桁が揃っている点も含めて正しく表示されることを確認せよ。

(実行結果)
% ./a.out
   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

課題8

特定の月のカレンダーを表示させたい。その月の1日の曜日と、日数を入力さ せて、for文を使用して下記のようなカレンダーを表示させたい。 そのようなプログラムをfor8.cとして書き、数字の 桁が揃っている点も含めて正しく表示されることを確認せよ。

補足:曜日を指定する数字が0から6までの数字でない場合、 また月の日数が28から31までの数字でない場合に、例外処理するのが 望ましいが、可能であれば対応するように。

(実行結果)
% ./a.out
カレンダーを表示させます
表示させたい月は何曜日から始まりますか?次の数字で答えてください
0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
5
表示させたい月は何日ありますか?数字を入力してください
28
 日 月 火 水 木 金 土
                 1  2
  3  4  5  6  7  8  9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28
%
% ./a.out
カレンダーを表示させます
表示させたい月は何曜日から始まりますか?次の数字で答えてください
0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
0
表示させたい月は何日ありますか?数字を入力してください
28
 日 月 火 水 木 金 土
  1  2  3  4  5  6  7
  8  9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
%
% ./a.out
カレンダーを表示させます
表示させたい月は何曜日から始まりますか?次の数字で答えてください
0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
0
表示させたい月は何日ありますか?数字を入力してください
31
 日 月 火 水 木 金 土
  1  2  3  4  5  6  7
  8  9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31
%

課題9(余力のある人だけ)

課題8を発展させて、 特定の3ヶ月連続のカレンダーを表示させたい。最初の月の数、 最初の月の1日の曜日と、3ヶ月分の日数を入力させて、下記のようなカレンダーを 表示させたい。 そのようなプログラムをfor9.cとして書き、数字の 桁が揃っている点も含めて正しく表示されることを確認せよ。

補足: 最初の月が1から12までの数字でない場合、 曜日を指定する数字が0から6までの数字でない場合、 また月の日数が28から31までの数字でない場合に、例外処理するのが 望ましい。

補足:関数を使用して作成した方が効率的である。

(実行結果)
% ./a.out
カレンダーを3ヶ月連続で表示させます
最初の月は何月ですか?1〜12の数字で答えてください
11
最初の月は何曜日から始まりますか?次の数字で答えてください
0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
3
最初、真ん中、最後の月は何日ありますか?数字を入力してください
30 31 31
         11月
 日 月 火 水 木 金 土
           1  2  3  4
  5  6  7  8  9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28 29 30

         12月
 日 月 火 水 木 金 土
                 1  2
  3  4  5  6  7  8  9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30
 31

          1月
 日 月 火 水 木 金 土
     1  2  3  4  5  6
  7  8  9 10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30 31

%
% ./a.out
カレンダーを3ヶ月連続で表示させます
最初の月は何月ですか?1〜12の数字で答えてください
13
月を正しく入力してください
%
% ./a.out
カレンダーを3ヶ月連続で表示させます
最初の月は何月ですか?1〜12の数字で答えてください
3
最初の月は何曜日から始まりますか?次の数字で答えてください
0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
8
曜日の数を正しく入力してください
%

課題10(余力のある人だけ)

課題9を発展させて、 下記の実行結果のように3ヶ月分を1段にして、1年分のカレンダーを表示させた い。1月1日の曜日と、うるう年かどうかを入力させるものとし、 各月の日数は予め配列に格納しておくものとする。 そのようなプログラムをfor10.cとして書き、数字の 桁が揃っている点も含めて正しく表示されることを確認せよ。

補足:課題9と同様、関数を使用して作成した方が効率的である。

(実行結果)
% ./a.out
1年分のカレンダーを表示します
1月1日の曜日を数字で入力してください
0:日 1:月 2:火 3:水 4:木 5:金 6:土
6
うるう年(2月が29日)であれば1、そうでなければ0を入力してください
0
          1月                    2月                    3月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
                    1          1  2  3  4  5          1  2  3  4  5
  2  3  4  5  6  7  8    6  7  8  9 10 11 12    6  7  8  9 10 11 12
  9 10 11 12 13 14 15   13 14 15 16 17 18 19   13 14 15 16 17 18 19
 16 17 18 19 20 21 22   20 21 22 23 24 25 26   20 21 22 23 24 25 26
 23 24 25 26 27 28 29   27 28                  27 28 29 30 31      
 30 31                                                             

          4月                    5月                    6月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
                 1  2    1  2  3  4  5  6  7             1  2  3  4
  3  4  5  6  7  8  9    8  9 10 11 12 13 14    5  6  7  8  9 10 11
 10 11 12 13 14 15 16   15 16 17 18 19 20 21   12 13 14 15 16 17 18
 17 18 19 20 21 22 23   22 23 24 25 26 27 28   19 20 21 22 23 24 25
 24 25 26 27 28 29 30   29 30 31               26 27 28 29 30      

          7月                    8月                    9月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
                 1  2       1  2  3  4  5  6                1  2  3
  3  4  5  6  7  8  9    7  8  9 10 11 12 13    4  5  6  7  8  9 10
 10 11 12 13 14 15 16   14 15 16 17 18 19 20   11 12 13 14 15 16 17
 17 18 19 20 21 22 23   21 22 23 24 25 26 27   18 19 20 21 22 23 24
 24 25 26 27 28 29 30   28 29 30 31            25 26 27 28 29 30   
 31                                                                

         10月                   11月                   12月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
                    1          1  2  3  4  5                1  2  3
  2  3  4  5  6  7  8    6  7  8  9 10 11 12    4  5  6  7  8  9 10
  9 10 11 12 13 14 15   13 14 15 16 17 18 19   11 12 13 14 15 16 17
 16 17 18 19 20 21 22   20 21 22 23 24 25 26   18 19 20 21 22 23 24
 23 24 25 26 27 28 29   27 28 29 30            25 26 27 28 29 30 31
 30 31                                                             

%
% ./a.out
1年分のカレンダーを表示します
1月1日の曜日を数字で入力してください
0:日 1:月 2:火 3:水 4:木 5:金 6:土
1
うるう年(2月が29日)であれば1、そうでなければ0を入力してください
1
          1月                    2月                    3月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
     1  2  3  4  5  6                1  2  3                   1  2
  7  8  9 10 11 12 13    4  5  6  7  8  9 10    3  4  5  6  7  8  9
 14 15 16 17 18 19 20   11 12 13 14 15 16 17   10 11 12 13 14 15 16
 21 22 23 24 25 26 27   18 19 20 21 22 23 24   17 18 19 20 21 22 23
 28 29 30 31            25 26 27 28 29         24 25 26 27 28 29 30
                                               31                  

          4月                    5月                    6月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
     1  2  3  4  5  6             1  2  3  4                      1
  7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
 14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
 21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
 28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
                                               30                  

          7月                    8月                    9月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
     1  2  3  4  5  6                1  2  3    1  2  3  4  5  6  7
  7  8  9 10 11 12 13    4  5  6  7  8  9 10    8  9 10 11 12 13 14
 14 15 16 17 18 19 20   11 12 13 14 15 16 17   15 16 17 18 19 20 21
 21 22 23 24 25 26 27   18 19 20 21 22 23 24   22 23 24 25 26 27 28
 28 29 30 31            25 26 27 28 29 30 31   29 30               

         10月                   11月                   12月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
        1  2  3  4  5                   1  2    1  2  3  4  5  6  7
  6  7  8  9 10 11 12    3  4  5  6  7  8  9    8  9 10 11 12 13 14
 13 14 15 16 17 18 19   10 11 12 13 14 15 16   15 16 17 18 19 20 21
 20 21 22 23 24 25 26   17 18 19 20 21 22 23   22 23 24 25 26 27 28
 27 28 29 30 31         24 25 26 27 28 29 30   29 30 31            

%

課題11(余力のある人だけ)

課題10を発展させて、 1段に表示する月数(列数)を1, 2, 3の中から選択させて、 1年分のカレンダーを表示させたい。1〜3以外の数字が入力されたら、 3列表示するものとする。

1月1日の曜日と、うるう年かどうかを入力させるものとし、 各月の日数は予め配列に格納しておくものとする。 そのようなプログラムをfor11.cとして書き、数字の 桁が揃っている点も含めて正しく表示されることを確認せよ。

% ./a.out
1年分のカレンダーを表示します
1月1日の曜日を数字で入力してください
0:日 1:月 2:火 3:水 4:木 5:金 6:土
1
うるう年(2月が29日)であれば1、そうでなければ0を入力してください
1
1段に表示する月の数を1〜3の数字で入力してください
1
          1月        
 日 月 火 水 木 金 土
     1  2  3  4  5  6
  7  8  9 10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30 31         

          2月        
 日 月 火 水 木 金 土
              1  2  3
  4  5  6  7  8  9 10
 11 12 13 14 15 16 17
 18 19 20 21 22 23 24
 25 26 27 28 29      

          3月        
 日 月 火 水 木 金 土
                 1  2
  3  4  5  6  7  8  9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30
 31                  

          4月        
 日 月 火 水 木 金 土
     1  2  3  4  5  6
  7  8  9 10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30            

          5月        
 日 月 火 水 木 金 土
           1  2  3  4
  5  6  7  8  9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28 29 30 31   

          6月        
 日 月 火 水 木 金 土
                    1
  2  3  4  5  6  7  8
  9 10 11 12 13 14 15
 16 17 18 19 20 21 22
 23 24 25 26 27 28 29
 30                  

          7月        
 日 月 火 水 木 金 土
     1  2  3  4  5  6
  7  8  9 10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30 31         

          8月        
 日 月 火 水 木 金 土
              1  2  3
  4  5  6  7  8  9 10
 11 12 13 14 15 16 17
 18 19 20 21 22 23 24
 25 26 27 28 29 30 31

          9月        
 日 月 火 水 木 金 土
  1  2  3  4  5  6  7
  8  9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30               

         10月        
 日 月 火 水 木 金 土
        1  2  3  4  5
  6  7  8  9 10 11 12
 13 14 15 16 17 18 19
 20 21 22 23 24 25 26
 27 28 29 30 31      

         11月        
 日 月 火 水 木 金 土
                 1  2
  3  4  5  6  7  8  9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30

         12月        
 日 月 火 水 木 金 土
  1  2  3  4  5  6  7
  8  9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31            

% ./a.out
1年分のカレンダーを表示します
1月1日の曜日を数字で入力してください
0:日 1:月 2:火 3:水 4:木 5:金 6:土
1
うるう年(2月が29日)であれば1、そうでなければ0を入力してください
1
1段に表示する月の数を1〜3の数字で入力してください
2
          1月                    2月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土 
     1  2  3  4  5  6                1  2  3
  7  8  9 10 11 12 13    4  5  6  7  8  9 10
 14 15 16 17 18 19 20   11 12 13 14 15 16 17
 21 22 23 24 25 26 27   18 19 20 21 22 23 24
 28 29 30 31            25 26 27 28 29      

          3月                    4月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土 
                 1  2       1  2  3  4  5  6
  3  4  5  6  7  8  9    7  8  9 10 11 12 13
 10 11 12 13 14 15 16   14 15 16 17 18 19 20
 17 18 19 20 21 22 23   21 22 23 24 25 26 27
 24 25 26 27 28 29 30   28 29 30            
 31                                         

          5月                    6月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土 
           1  2  3  4                      1
  5  6  7  8  9 10 11    2  3  4  5  6  7  8
 12 13 14 15 16 17 18    9 10 11 12 13 14 15
 19 20 21 22 23 24 25   16 17 18 19 20 21 22
 26 27 28 29 30 31      23 24 25 26 27 28 29
                        30                  

          7月                    8月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土 
     1  2  3  4  5  6                1  2  3
  7  8  9 10 11 12 13    4  5  6  7  8  9 10
 14 15 16 17 18 19 20   11 12 13 14 15 16 17
 21 22 23 24 25 26 27   18 19 20 21 22 23 24
 28 29 30 31            25 26 27 28 29 30 31

          9月                   10月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土 
  1  2  3  4  5  6  7          1  2  3  4  5
  8  9 10 11 12 13 14    6  7  8  9 10 11 12
 15 16 17 18 19 20 21   13 14 15 16 17 18 19
 22 23 24 25 26 27 28   20 21 22 23 24 25 26
 29 30                  27 28 29 30 31      

         11月                   12月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土 
                 1  2    1  2  3  4  5  6  7
  3  4  5  6  7  8  9    8  9 10 11 12 13 14
 10 11 12 13 14 15 16   15 16 17 18 19 20 21
 17 18 19 20 21 22 23   22 23 24 25 26 27 28
 24 25 26 27 28 29 30   29 30 31            

% ./a.out
1年分のカレンダーを表示します
1月1日の曜日を数字で入力してください
0:日 1:月 2:火 3:水 4:木 5:金 6:土
1
うるう年(2月が29日)であれば1、そうでなければ0を入力してください
1
1段に表示する月の数を1〜3の数字で入力してください
5
          1月                    2月                    3月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
     1  2  3  4  5  6                1  2  3                   1  2
  7  8  9 10 11 12 13    4  5  6  7  8  9 10    3  4  5  6  7  8  9
 14 15 16 17 18 19 20   11 12 13 14 15 16 17   10 11 12 13 14 15 16
 21 22 23 24 25 26 27   18 19 20 21 22 23 24   17 18 19 20 21 22 23
 28 29 30 31            25 26 27 28 29         24 25 26 27 28 29 30
                                               31                  

          4月                    5月                    6月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
     1  2  3  4  5  6             1  2  3  4                      1
  7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
 14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
 21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
 28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
                                               30                  

          7月                    8月                    9月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
     1  2  3  4  5  6                1  2  3    1  2  3  4  5  6  7
  7  8  9 10 11 12 13    4  5  6  7  8  9 10    8  9 10 11 12 13 14
 14 15 16 17 18 19 20   11 12 13 14 15 16 17   15 16 17 18 19 20 21
 21 22 23 24 25 26 27   18 19 20 21 22 23 24   22 23 24 25 26 27 28
 28 29 30 31            25 26 27 28 29 30 31   29 30               

         10月                   11月                   12月        
 日 月 火 水 木 金 土   日 月 火 水 木 金 土   日 月 火 水 木 金 土
        1  2  3  4  5                   1  2    1  2  3  4  5  6  7
  6  7  8  9 10 11 12    3  4  5  6  7  8  9    8  9 10 11 12 13 14
 13 14 15 16 17 18 19   10 11 12 13 14 15 16   15 16 17 18 19 20 21
 20 21 22 23 24 25 26   17 18 19 20 21 22 23   22 23 24 25 26 27 28
 27 28 29 30 31         24 25 26 27 28 29 30   29 30 31            

%

須ア純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座
[C言語 演習問題トップページ] [須ア純一ホームページ]