プログラミング演習 初級編 2004年7月8日(木) 奈良先端科学技術大学院大学 情報科学研究科 猿渡 洋 斎藤 将人 新保 仁 構造体 異なる型のデータをひとまとめにして管理. 配列は同じ型のデータのみをまとめられる. 以下の形式で「宣言」する。 struct 構造体名 { 型 メンバ名; 型 メンバ名; … }; 「構造体名.メンバ名」で参照. プログラム例1 (構造体を使わない場合) #include <stdio.h> main() { char name[100]; int age; printf("Enter your name.\n"); scanf("%s", name); printf("How old are you?\n"); scanf("%d", &age); printf("%s is %d years old.\n", name, age); } 例2:例1を構造体で書く #include <stdio.h> struct person { char name[100]; int age; }; 次ページへつづく 使用する関数 (この場合main()) の前で、構造体を宣言 例2:例1を構造体で書く(つづき) 前ページのつづき main() { struct person x; 構造体変数を確保 printf("Enter your name.\n"); scanf("%s", x.name); 構造体内のメンバは printf("How old are you?\n"); 「構造体変数名.メンバ名」 scanf("%d", &(x.age)); で参照する printf("OK. %s is %d years old.\n", x.name, x.age); } 構造体の配列 #include <stdio.h> struct person { char name[100]; int age; }; 次ページへつづく 構造体の配列(つづき) main() { struct person man[5]; 構造体変数を配列で確保 int i; for (i = 0; i < 5; i++) { printf("Enter name and age (%d of 5)\n", i+1); scanf("%s", man[i].name); scanf("%d", &(man[i].age)); } for (i = 0; i < 5; i++) { printf("%s: %d\n", man[i].name, man[i].age); } } 定数による構造体メンバの初期化 struct date { int year, month, day; }; struct person { char name[100]; struct date birthday; }; struct person beatles[4] = { {"John Lennon", {1940, 10, 9}}, {"Paul McCartney", {1942, 6, 18}}, {"George Harrison", {1943, 2, 25}}, {"Ringo Starr", {1940, 7, 7}} }; 演習問題 演習4-1 商品データベース管理 以下のデータを格納する構造体を定義し、以下の値 をプログラム中で代入し、その内容を出力するプログ ラムを作成せよ。 (ヒント:商品IDを配列の添字にしてよい) 商品名 商品ID 単価(円) Pencil 0 60 Eraser 1 50 Ruler 2 120 演習問題(2) 演習4-2 (演習4-1の続き) 複数の商品のIDと個数を入力として、その内訳と合計金額を計 算するレジ計算プログラムを作成せよ. 商品IDと個数は、IDとして -1 が入力されるまで読み込む こと.(for や while を使う)上限は 10 とする. 内訳と合計を以下のような形式で出力すること. item unit price qty sub-total ------------------------------------------Ruler 120 2 240 Eraser 50 5 250 ------------------------------------------total 490
© Copyright 2024 ExpyDoc