Top >C言語 練習問題集

10. 構造体

練習問題 10 - 1

int 型のメンバー x と y を持つ構造体 POINT を定義し、以下のプログラムを実行しなさい

void main( void )
{
    struct POINT aBigDipper[] = { {8,5}, {11,1}, {25,2},
                                {26,6}, {36,9}, {46,12}, {58,12} };
    char    space[15][61];
    int     i, j;

    for( i = 0 ; i < 15 ; i++ )
    {
        for( j = 0 ; j < 60 ; j++ )
            space[i][j] = ' ';

        space[i][j] = 0;
    }

    for( i = 0 ; i < 7 ; i++ )
        space[ aBigDipper[i].y ][ aBigDipper[i].x ] = '*';

    for( i = 0 ; i < 15 ; i++ )
        printf( "%s\n", space[i] );
}

練習問題 10 - 2

何月であるかを表す数値(1~12)と降水量(整数:mm)をメンバーとする構造体を定義し、4ヵ月分の月と降水量を入力して表示するプログラムを作成しなさい

表示例:
1月   49mm
2月   60mm
3月  115mm
4月  130mm

練習問題 10 - 3

以下の内容のプログラムを作成しなさい

  • int型のメンバー x と y を持つ構造体 POINT を定義する
  • 構造体 POINT を引数とし、各メンバーの値を2倍にした POINT を戻り値とする関数を定義する
  • 構造体 POINT 型の変数の各メンバーに値を設定し、作成した関数によって値を2倍にする
  • 構造体 POINT 型の変数の各メンバーの値を表示する

練習問題 10 - 4

以下の内容のプログラムを作成しなさい

  • 学生の試験結果を表す、次のメンバーを持った構造体を定義する
    ・名前(char型配列)
    ・試験の得点(int型)
    ・成績評価(char型)
  • 成績評価を設定する関数を定義する
    ・作成した構造体のポインタを引数とする
    ・試験の得点によって成績評価に文字を設定する
        80点以上→'A'、70点以上→'B'、60点以上→'C'、60点未満→'D'
  • 作成した構造体の変数に、名前と試験の得点を入力する
  • 作成した関数によって、成績評価を設定する
  • 構造体の内容(名前、試験の得点、成績評価)を表示する
名前は?
田中
得点は?
75
田中、75点、成績 B

練習問題 10 - 5

前問で作成した構造体と関数を使用して、4人分の名前と得点を入力し、評価を設定して表示するプログラムを作成しなさい

練習問題 10 - 6

以下は、都市の名前と位置を表示するプログラムである
名前と位置を一覧表示する関数 ShowCityInfo を完成させなさい

引数は、CITYINFO構造体の配列と配列の要素数である

struct POSITION
{
    double  latitude;     // 緯度
    double  longitude;    // 経度
};

struct CITYINFO
{
    char    name[50];
    struct POSITION    pos;
};

void ShowCityInfo( struct CITYINFO* aCity, int count )
{
    /* この部分を記述する */
}

void main( void )
{
    struct CITYINFO aCity[] = { { "東京", 35.41, 139.45 },
                                { "大阪", 34.41, 135.29 },
                                { "名古屋", 35.11, 136.54 } };

    ShowCityInfo( aCity, 3 );
}

表示例:

東京、緯度:35.410000、経度:139.450000
大阪、緯度:34.410000、経度:135.290000
名古屋、緯度:35.110000、経度:136.540000
PAPER BOWL
NEZEN