你的位置:首页 > 操作系统

[操作系统]iOS开发之c语言基础Lesson


 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;