//声明结构体 关键字 struct
// 声明一个用于描述学生对象的结构体类型// 声明成员变量时不能赋值,因为这是在声明结构体类型// struct student// { // int num; //学号 //成员变量之间用分号;隔开// char name[30]; //姓名 //必须指定字符数组的大小// char sex; //性别// float score; //分数// }; //不要忘了 ;// typedef struct student Student; //结构体重命名typedef struct birthdate{ int year; int month; int day;}BirthDate;typedef struct student { int num; //学号 //成员变量之间用分号;隔开 char name[30]; //姓名 //必须指定字符数组的大小 char sex; //性别 float score; //分数 int age; //年龄 BirthDate birthday; }Student; //不要忘了 ;int main(int argc, const char * argv[]) { /*//结构体数组构造类型//定义贼勾踢变量//struct 关键字//赋值 1. 设置初始值使用{} 2. 按照成员变量的顺序赋值 3.如果设置初始值为默认值0时使用{0} struct student stu1 = {1,"wangshuai",'m',88}; struct student stu2 = {2,"lisi",'m',66};//结构体可以变量可以互相赋值//结构体变量定义之后,不能在整体赋值.只能给成员变量赋值 struct student stu3 = stu1; #pragma mark -------访问结构体成员变量-------- //不能使用结构体变量名输出所有的成员变量//访问成员变量方式;结构体变量,成员变量//成员变量和基本类型变量一样使用:参与运算 printf("%d\n",stu1.num); printf("%s\n",stu1.name); printf("%c\n",stu1.sex); printf("%.2f\n",stu1.score); // 修改成员变量 成员变量可以直接赋值 stu1.score = 66; printf("%.2f\n",stu1.score); strcpy(stu1.name,"wangwu"); printf("%s\n",stu1.name); // 将控制台输入的内容,存储到成员变量中 struct student stu4 = {0}; printf("请输入学生学号:"); scanf("%d",&stu4.num); // . 优先级高于 & printf("%d ",stu4.num); #pragma mark -------trpedef---------- // typedef 要改的 改成什么 重命名// int a = 3;// typedef int low;// low a = 3; // == int a =3;//结构体的声明方式// 1 . 匿名结构体,结构体声明和变量定义 组合在一起 基本不使用// 2 . 使用typedef声明结构体// 使用typedef为结构体类型起别名 Student stu5 = {}; // 练习 有三个学生,编程找出分数最⾼者以及年龄最小者。 Student stu1 = {1,"litiandan",'m',68,17}; Student stu2 = {2,"ligangdan",'m',72,18}; Student stu3 = {3,"lijingdan",'f',86,16};//求分数最高的 Student maxscore = {0}; maxscore = stu1.score > stu2.score ? stu1 : stu2; maxscore = maxscore.score > stu3.score ? maxscore : stu3; printf("%.2f \n",maxscore.score); //求年龄最小 Student minage = {0}; minage = stu1.age < stu2.age ? stu1 : stu2; minage = minage.age < stu3.age ? minage : stu3; printf("%d\n",minage.age); //结构体的成员变量可以是其他结构体类型 //结构体的成员变量也是结构体,使用{}赋值 Student stu1 = {1,"tiandan",'m',98,17,{1998,11,11}}; //访问成员变量,使用.逐层访问 printf("year = %d month = %d day = %d ",stu1.birthday.year,stu1.birthday.month,stu1.birthday.day); stu1.birthday.year = 1990; printf("year = %d month = %d day = %d ",stu1.birthday.year,stu1.birthday.month,stu1.birthday.day);*/