在C語(yǔ)言中,elemtype
通常與結(jié)構(gòu)體(struct
)一起使用,以描述結(jié)構(gòu)體中各個(gè)成員的數(shù)據(jù)類型。處理復(fù)雜數(shù)據(jù)時(shí),結(jié)構(gòu)體提供了一種靈活的方式來組織和管理不同類型的數(shù)據(jù)。
以下是一個(gè)使用結(jié)構(gòu)體處理復(fù)雜數(shù)據(jù)的示例:
#include <stdio.h>
// 定義一個(gè)結(jié)構(gòu)體類型,用于表示一個(gè)學(xué)生
struct Student {
int id; // 學(xué)生ID
char name[20]; // 學(xué)生姓名
float score; // 學(xué)生成績(jī)
struct { // 嵌套結(jié)構(gòu)體,表示學(xué)生的課程成績(jī)
char course[20]; // 課程名稱
float grade; // 課程成績(jī)
} courses[3]; // 假設(shè)每個(gè)學(xué)生最多選修3門課程
};
int main() {
// 創(chuàng)建一個(gè)結(jié)構(gòu)體變量,用于存儲(chǔ)學(xué)生的信息
struct Student stu;
// 給結(jié)構(gòu)體的成員賦值
stu.id = 1;
strcpy(stu.name, "張三");
stu.score = 90.5;
// 給嵌套結(jié)構(gòu)體的成員賦值
strcpy(stu.courses[0].course, "數(shù)學(xué)");
stu.courses[0].grade = 95.0;
strcpy(stu.courses[1].course, "英語(yǔ)");
stu.courses[1].grade = 88.0;
strcpy(stu.courses[2].course, "計(jì)算機(jī)科學(xué)");
stu.courses[2].grade = 92.0;
// 輸出學(xué)生的信息
printf("學(xué)生ID: %d\n", stu.id);
printf("姓名: %s\n", stu.name);
printf("總分: %.2f\n", stu.score);
printf("課程成績(jī):\n");
for (int i = 0; i < 3; i++) {
printf(" %s: %.2f\n", stu.courses[i].course, stu.courses[i].grade);
}
return 0;
}
在這個(gè)示例中,我們定義了一個(gè)Student
結(jié)構(gòu)體類型,用于表示一個(gè)學(xué)生。結(jié)構(gòu)體中包含了一個(gè)嵌套的結(jié)構(gòu)體數(shù)組,用于存儲(chǔ)學(xué)生的課程成績(jī)。通過這種方式,我們可以靈活地處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如學(xué)生的個(gè)人信息和課程成績(jī)等。