目次

 

 

Top >C言語入門 とりあえずのC言語

6. 配列:用例

配列:用例
用例 6.1

 月、日を入力し、1月1日から、何日目であるかを表示するプログラムです

 1月1日を1日目とし、うるう年ではないものとします

#include <stdio.h>

main( )
{
            // 1月~11月の日数
    int     month_days[] = { 31,28,31,30,31,30,31,31,30,31,30 };
    int     month, day;    // 月、日
    int     days = 0;
    int     i;

    printf( "何月ですか?\n" );
    scanf( "%d", &month );

    printf( "何日ですか?\n" );
    scanf( "%d", &day );

    for( i = 0 ; i < ( month - 1 ) ; i++ )
        days += month_days[i];

    printf( "今日は1月1日から、%d日目です。\n", days + day );
}
  • 各月の日数を配列に保持します
  • このプログラムでは、月に13以上を入力すると実行時エラーになってしまいますから注意してください
  • 各月の日数ではなく、その月までの日数を保持するようにすれば、for文による計算が不要になります
用例 6.2

 1月~6月までの降水量を入力し、グラフとして表示するプログラムです

#include <stdio.h>

main( )
{
    int     mm[6];    // 降水量
    int     i, n;

    // 降水量を入力
    for( i = 0 ; i < 6 ; i++ ){
        printf( "%d月の降水量は?(mm)\n", i + 1 );
        scanf( "%d", &mm[i] );
    }

    // グラフを表示
    printf( "\n*:10mm\n" );

    for( i = 0 ; i < 6 ; i++ ){
        int     count = ( mm[i] + 5 ) / 10;    // 四捨五入

        printf( "\n%d月:", i + 1 );

        for( n = 0 ; n < count ; n++ )
            printf( "*" );
    }
}
  • *1つは10mmを表します
  • *の数は四捨五入して計算しています

 実行結果です

1月の降水量は?(mm)
49
2月の降水量は?(mm)
60
3月の降水量は?(mm)
115
4月の降水量は?(mm)
130
5月の降水量は?(mm)
128
6月の降水量は?(mm)
165

*:10mm

1月:*****
2月:******
3月:************
4月:*************
5月:*************
6月:*****************
PAPER BOWL
NEZEN