single
配列および他の構造体を含むStruct
メニューを表示するにはスワイプしてください
いくつかの構造体では、1つのオブジェクトが複数の関連するサブオブジェクトを含む場合、ネストされた構造体の配列を使用する必要があります。たとえば、学生が複数のコースを履修できる場合、Student構造体の内部にコースを構造体の配列として表現するのが適切です。
例文法:
OuterStruct.NestedStruct[1].NestedField;
ネストされた構造体配列の要素にアクセスするには、まず外側の構造体を参照し、次にインデックスを使って配列の目的の要素を選択し、最後にその要素の特定のフィールドにアクセスします。
実践例
各学生が名前、年齢、そして複数のコースを持っているとします。各コースにはタイトル、担当教員、単位数が含まれます。
main.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }
この例では、Student構造体は3つの要素を持つcourses型のCourse配列を持っています。各コースには、それぞれタイトル、担当講師、単位数があります。特定のコースにアクセスするには、配列のインデックスとドット演算子を使用します:student.courses[1].instructor。
ネストされた構造体の配列を使用することで、コースを持つ学生、商品を持つ店舗、著者を持つ書籍など、繰り返しのサブオブジェクトを持つオブジェクトを表現するのに便利です。
スワイプしてコーディングを開始
学生は、固定サイズの配列としてネストされた構造体 Student を含む構造体 Course で表されます。各コースには、名前、担当教員、単位数が含まれています。関数はすべてのコースを反復処理し、単位数を合計する必要があります。
戻り値の型が calculateTotalCredits の関数 int を実装してください。
- 関数内で、
int型の変数totalを0で初期化します。 forループを使用して、0からコース数(3)まで反復処理します。- 各コースについて、
creditsにアクセスし、それをtotalに加算します。 - 最終的な
totalの値を返します。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください