iOS开发之c语言基础Lesson-07 结构体 上课笔记 与 试题练习

 1 ///////////////Lesson 07 结构体 上课笔记 ////////////////

 2 //结构体作用:1.是一种自定义的数据类型,可以用来定义变量  3 // 2.是一个大容器,比数组灵活,可以存储不同数据类型的变量  4 //结构体定义 :定义就是一种格式,一种模板, 只要按照该格式就能定义出结构体  5 //定义一个学生结构体  6 //typedef, 类型重定义,给类型重新取一个名字,新的名字和原有的名字的作用是一样的  7 //typedef两种定义方式:1.先定义结构体, 后typedef  8 // 2.定义结构体的同时,定义typedef

 9 typedef struct student{  10     int num;  11     char name[20];  12     int age;  13     char gender;  14     float score;  15 }Student;  16 //点结构体  17 //struct point{  18 // int x;  19 // int y;  20 //};  21 //typedef struct point point; //point代替struct point

 22 ////矩形结构体

 23 //struct rectangle{  24 // float width;  25 // float length;  26 //};

 27 ////立方体结构体

 28 //struct cube{  29 // float width;  30 // float height;  31 // float length;  32 //};

 33 int main(int argc, const char * argv[]) {  34 // @autoreleasepool {  35 //        // insert code here...  36 // NSLog(@"Hello, World!");  37 // }

 38     

 39 /////使用结构体类型(struct + 结构体名字), 定义结构体变量

 40 // struct student stu1 = {"Ashen", 24, 'm'};  41 // Student stu2 = {"Ying", 23, 'f'};  42 //    

 43 // struct point p1 = {12, 14};  44 // struct rectangle r1 = {3.0, 4.0};  45 // struct cube c1 = {3.0, 4.0, 5.0};  46 //    

 47 ////////访问结构体成员 结构体变量.结构体成员

 48 // printf("%s ", stu1.name);  49 // strcpy(stu1.name, "Ashen-Zhao");  50 // printf("%s ", stu1.name);

 51     

 52     

 53 ///////结构体变量的赋值操作

 54 // Student stu1 = {"Ashen", 33, 'm'};  55 // Student stu2 = {0};  56 // Student stu3 = {0};  57 //    //1.单一成员赋值  58 // strcpy(stu2.name, stu1.name);  59 // stu2.age = stu1.age;  60 // stu2.gender = stu1.gender;  61 //    //2.结构体变量整体拷贝  62 //    //如果想把一个数组中的元素,拷贝到另外一个数组中,数组不能直接通过赋值号(=)赋值, 此时可以把数组放到结构体中,通过结构体变量来完成拷贝操作。  63 // stu3 = stu1;  64 // printf("%s ", stu3.name);

 65     

 66 ////////////练习

 67     // Student stu1 = {"Ashen1", 21, 'm', 90};  68     // Student stu2 = {"ying", 22, 'f', 80};  69     // Student stu3 = {"zhao", 23, 'm', 100};  70     //

 71     //

 72     //    //找出分数 最高 者者者者者者者者者者者者  73     // Student maxScoreStu = {0}; //存储分数最高的人  74     //    // if (stu1.score > stu2.score) {  75     //    // if (stu1.score > stu3.score) {  76     //    // maxScoreStu = stu1;  77     //    // }else{  78     //    // maxScoreStu = stu3;  79     //    // }  80     //    // }else if(stu2.score > stu3.score){  81     //    // maxScoreStu = stu2;  82     //    // }else{  83     //    // maxScoreStu = stu3;  84     //    // }  85     //

 86     //

 87     // maxScoreStu = stu1.score > stu2.score ? stu1.score > stu3.score ? stu1 : stu3 : stu2.score > stu3.score ?stu2 : stu3;  88     //

 89     //

 90     // printf("name:%s, age:%d, score:%.2f", maxScoreStu.name, maxScoreStu.age, maxScoreStu.score);

 91     

 92     //////////////结构体数组  93     ////定义结构体数组,存储5个学生

 94     // Student students[5]={  95     // {1001, "Ashen", 24, 'f', 100},  96     // {1003, "Ying", 23, 'm', 76},  97     // {1004, "BenBen", 22, 'f', 90},  98     // {1005, "Dandan", 18, 'm', 89},  99     // {1002, "Love", 31, 'f', 56} 100     // };

101     ////1输出所有学生的信息 102     //// for (int i = 0; i < 5; i++) { 103     //// printf("num:%d,name:%s,age:%d,gender:%c,score:%.2f \n", students[i].num, students[i].name, students[i].age, students[i].gender, students[i].score); 104     //// } 105     ////2找出成绩最高者

106     // Student maxScoreStu = {0}; 107     // for (int i = 0; i < 5; i++) { 108     // if (students[i].score > maxScoreStu.score) { 109     // maxScoreStu = students[i]; 110     // } 111     // } 112     // printf("%.2f \n", maxScoreStu.score);

113     ////3年龄最小的

114     // Student minScoreStu = students[0]; //存储数组中第一个学生的信息,假设第一个学生的年龄最小, 与其他的学生进行比较。 115     // for (int i = 1; i < 5; i++) { 116     // if (students[i].age < minScoreStu.age) { 117     // minScoreStu = students[i]; 118     // } 119     // } 120     // printf("%d\n", minScoreStu.age);

121     ////4按年龄升序排序

122     //

123     //

124     // for (int i = 0; i < 5 - 1; i++) { 125     // for (int j = 0; j < 5 - 1 - i; j++) { 126     // if(students[j].age > students[j + 1].age){ 127     // Student temp = students[j]; //交换两个结构体变量, 而不是只交换年龄 128     // students[j] = students[j + 1]; 129     // students[j + 1] = temp; 130     // } 131     // } 132     // } 133     // for (int i = 0; i < 5; i++) { 134     // printf("%d , %s \n", students[i].age, students[i].name); 135     // }

136     

137 /////////////////结构体的内存对齐方式 ,以占字节数最大的类型的字节的陪数分配

138 // typedef struct person{ 139 // char name[12]; 140 // char gender; 141 // int age; 142 // }Person; 143 // printf("%lu\n", sizeof(Person));

144 ////、、、、、结构体嵌套(在一个结构体中, 结构体的成员又是另外一个结构体的变量)

145     typedef struct birth{ 146         int year;  //出生年份

147         int month; //出生月份

148         int day;   //出生日

149  }Birth; 150     

151     typedef struct teacher{ 152         char name[12];//姓名

153         int age;//年龄

154  Birth birthday; 155  }Teacher; 156     

157     Teacher tea1 = {"Jack", 24, {1991, 5, 23}}; 158     printf("%s, %d, %d, %d, %d", tea1.name, tea1.age, tea1.birthday.year, tea1.birthday.month, tea1.birthday.day); 159     

160     

161     

162     return 0;

 

你可能感兴趣的:(ios开发)