引用结构体变量的成员 n结构体变」 注意区分: 结构体类型; 使用外 结构体变量; 中每 个成员结构体变量的成员 例 stu[i]. nul stu[]. name 翁都是变量,与它同类型变量同样使用
6 引用结构体变量的成员 ▪ 结构体变量的成员(member),也称元素 (element)或域(filed)。 ▪ 使用引用运算符 . 对结构类型变量stu[i]中每 个成员进行引用 ▪ 例: ▪ stu[i].num stu[i].name ▪ 它们都是变量,与其它同类型变量同样使用。 注意区分: •结构体类型; •结构体变量; •结构体变量的成员
例1的实现 算法 定义结构体类型 定义结构体变量 输入 输出
7 例1的实现 ▪ 算法 ▪ 定义结构体类型 ▪ 定义结构体变量 ▪ 输入 ▪ 输出
例1(1) #include <stdio. h> struct student [int num:/学号 char name[20]:姓名* char sex;/性别:m-男,f-女刘 float score[5]:成绩* float aver;/平均分* :/*定义结构体类型 struct studen↑,一般都定义为全局可用 的数据类型*/ pede struct student STU/为数据类型起别名*/ void maino t int i,j: float sum STU stul3o];供定义结构体变量*
8 例1 (1) #include <stdio.h> struct student {int num; /* 学号 */ char name[20]; /* 姓名 */ char sex; /* 性别:m-男,f-女 */ float score[5]; /* 成绩 */ float aver; /* 平均分 */ }; /* 定义结构体类型 struct student ,一般都定义为全局可用 的数据类型*/ typedef struct student STU;/*为数据类型起别名*/ void main() { int i,j; float sum; STU stu[30];/* 定义结构体变量 */
例1(2) for(i=0;i<30:i++)/输入每个学生的信息*/ [printf please input the number n: ) scan If %od, &stu[]. num): getchar printf please input the name \n scanf(%5", stu[i] name): getchar printf f or m(female or mail)?\n:): scanf( %c", &stu[i]. sex) printf( please input 5 scores: \n forj=0<5:j+)输入5门课的成绩* scanf(%f",&stu[i]. scoreLjD) sum=0:/下边计算5门课的平均分,并存放在相应成员变量中 for(=0j<5小*+ sum+=stu[]. score[]: stu[i]. aver=sum/5; printf("num\tname\t\t sex c1 c2 c3 c4 c5 aver \n") for(i=O<30:++)/*输出学生基本信息 pntf(‰ts%%3.0%0%3.0%3.0%3.0%4.1fn stu[i]. num, stu[i] name, stu[i]. sex, stu[i]. score[1, stu[i]. score[21 stu[i]. score[3], stu[i]. score[4], stu[i]. score[5], stu[i]. average)
9 例1 (2) for(i=0;i<30;i++) /* 输入每个学生的信息 */ {printf(“please input the number\n:”); scanf(“%d”,&stu[i].num);getchar(); printf(“please input the name\n:”); scanf(“%s”, stu[i].name);getchar(); printf(“f or m(female or mail)?\n:”); scanf(“%c”,&stu[i].sex); printf(“please input 5 scores:\n:”); for(j=0;j<5;j++) /*输入5门课的成绩*/ scanf(“%f”,&stu[i].score[j]); sum=0; /*下边计算5门课的平均分,并存放在相应成员变量中*/ for(j=0;j<5;j++) sum+=stu[i].score[j]; stu[i].aver=sum/5; } printf("num\tname\t\t sex c1 c2 c3 c4 c5 aver\n"); for(i=0;i<30;i++) /* 输出学生基本信息 */ {printf("%d\t%s\t %c %3.0f %3.0f %3.0f %3.0f %3.0f %4.1f\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5], stu[i].average); }
输入写成函数 void工npu( sTU al, int n) int i, J float sum for(i=O<n;i+-)/输入每个学生的信息* (printfcplease input the number \n: ) scan &stu[i]. num): getchar printf please input the name \n: ScO tut] name) 2: getchar printfCf or m(female or mail)?\n:"): scar nfsc, &stu[i]. sex) lease input 5 scores: \ or(=05:)/输入5门课的成绩* sum0:下边计算5课的平均芬,并存放在相应成员变量中 for(j=o: j<NUMOFCOURSE j++) sum+=stu[i]. score stu[i]. aver=sum/ NUMOFCOURSE: 10
10 输入写成函数 void Input( STU a[],int n) { int i,j; float sum; for(i=0;i<n;i++) /* 输入每个学生的信息 */ {printf(“please input the number\n:”); scanf(“%d”,&stu[i].num);getchar(); printf(“please input the name\n:”); scanf(“%s”, stu[i].name);getchar(); printf(“f or m(female or mail)?\n:”); scanf(“%c”,&stu[i].sex); printf(“please input 5 scores:\n:”); for(j=0;j<5;j++) /*输入5门课的成绩*/ scanf(“%f”,&stu[i].score[j]); sum=0; /*下边计算5门课的平均分,并存放在相应成员变量中 */ for(j=0;j<NUMOFCOURSE;j++) sum+=stu[i].score[j]; stu[i].aver=sum/ NUMOFCOURSE; } }