// main.m #import <Foundation/Foundation.h> //struct{ // char name[20]; // int age; // //}stu={"葫芦娃",18}; // int main(int argc, const char * argv[]) { /*** 结构体的 成员变量可以是不同的数据类型,例如(int char,,, ) 数组是由相同类型的元素构成的 结构体 命名: 标示符 (struct)结构体名{ //成员变量 类型说明符 变量名;( 变量名 变量名的命名规范) ..... }; ***/ //定义一个存储点信息的结构体 // typedef struct mypoint // { // int x; // int y; // // }point; // point a={1,2}; // //定义一个存储矩形信息的结构体 // struct juxing{ // // int chang; // int kuan; // // }; // //定义存储人特征的结构体 // struct persen{ // // // char name[20]; // int age; // int bobby[20]; // int sex; // // }; // //定义一个汽车结构体 // //定义一个汽车人的结构体 // typedef struct car // { // // int lunzi; // char color[20]; // char pinpai[20]; // int pailiang; // // }ca; // ca che={4,"黄色","但凡",2}; // printf("该车轮子%d个,颜色:%s,品牌:%s,排量%d\n",che.lunzi,che.color,che.pinpai,che.pailiang); // // //定义一个女朋友 // struct Girlf // { // char name[20]; // int age; // float height; // float weight; // char sex; // // // }; // //结构体变量是由结构体类型修饰的变量叫做结构体变量 // //格式: // // struct 结构体名 变量名={ 初值 }; // //1.他可以直接给我们结构体内的成员变量进行赋值,注意,赋值是和我们结构体内部成员变量是一一对应的; // struct Girlf gf={"赛貂蝉",30,1.20,250.00,‘m‘}; // printf("我的女朋友叫:%s,今年:%d岁,身高:%.2f米,体重:%.2f,最可怕的他还是个%c的",gf.name,gf.age,gf.height,gf.weight,gf.sex); // //这里的点语法和我们oc中学习的语法很相似,都是通过我们的对像(也就是变量名)对其内部的属性进行一一对应的, // //赋值 // // gf.name="小白",//字符串不可以直接赋值,想要进行赋值,我们需要使用 strcpy() // // strcpy(gf.name, "二狗蛋"); // // printf("我的女朋友叫:%s,今年:%d岁,身高:%.2f米,体重:%.2f,最可怕的他还是个%c的",gf.name,gf.age,gf.height,gf.weight,gf.sex); // // // typedef struct teacher { // // char name[20]; // int age; // int gonghao; // // }tea; // tea mathteacher={"龚杰",30,16010157}; // printf("我是数学老师是:%s ,年龄%d ,工号:%d ",mathteacher.name,mathteacher.age,mathteacher.gonghao); // // // struct dog{ // // char name[20]; // char color[20]; // // }; // struct dog g={"放的","黄色"}; // printf("我的狗狗:%s,颜色:%s",g.name,g.color); // //匿名结构体 // struct{ // char name[20]; // int age; // // }stu={"葫芦娃",18}; // stu.age=20; // printf("%d",stu.age); // // stu.age=20; // //结构体内部计算 // struct student{ // // int age; // char sex; // double height; // int weight; // // }stu; // printf("%lu",sizeof(stu)); // struct student{ // // int a; // char d[20]; // double b; // float c; // // }stu; // printf("%lu",sizeof(stu)); //Typedef //为我们现有的结构体 另起一个新的名字,用新起得名字 代替我们能原有的结构体 //语法:typedef 原类型名 新类型名 //下方的typedef int ZX代表的是 给我们int 类型起了一个新的名字 叫 ZX ZX代表的是 int //结构体可以直接赋值,但是数组不可以直接赋值,要是想直接进行赋值,我们可以把数组放在结构体当中进行直接赋值 // typedef int ZX; // typedef float fd; // // ZX num=9; // ZX num1=12; // fd num2=12.3; // // struct student{ // // char name[20]; // // }; // struct student stu1={"二傻子"}; // // //使用 typedef // typedef struct Student student; // student stu2={"二愣子"}; // // typedef struct personer // { // // char name[20]; // int age; // // }person; // // person p1={"小丽",22}; // //有三个学生,编程找出分数最高以及年龄最小者 // typedef struct student{ // int num; // char name[20]; // int age; // // }stu; // stu s1={89,"小红",18}; // stu s2={90,"小绿",20}; // stu s3={78,"小黄",15}; // //定义接收分数最高 // stu s4={0}; // stu temp1; // stu temp; // //定义接收年龄最小的 // stu s5={0}; // s4=s1.num>s2.num?s1:s2; // s4=s4.num>s3.num?s4:s3; // printf("分数最高的:%d,%s,%d\n",s4.num,s4.name,s4.age); // s5=s1.age<s2.age?s1:s2; // s5=s5.age<s3.age?s5:s3; // printf("年龄最小:%d,%s,%d\n",s5.num,s5.name,s5.age); // // //成绩降序 // stu s6[]={89,"小红",18,90,"小绿",20,78,"小黄",15}; // for (int i=0; i<2;i++ ) { // for (int j=0; j<2-i; j++) { // if (s6[j].num<s6[j+1].num) { // temp=s6[j]; // s6[j]=s6[j+1]; // s6[j+1]=temp; // } // } // }for (int i=0; i<3; i++) { // printf("%d,%s,%d\n",s6[i].num,s6[i].name,s6[i].age); // } // printf("\n"); // //年龄升序 // // stu s7[]={89,"小红",18,90,"小绿",20,78,"小黄",15}; // for (int i=0; i<2;i++ ) { // for (int j=0; j<2-i; j++) { // if (s7[j].age>s7[j+1].age) { // temp1=s7[j]; // s7[j]=s7[j+1]; // s7[j+1]=temp1; // } // } // }for (int i=0; i<3; i++) { // printf("%d,%s,%d\n",s7[i].num,s7[i].name,s7[i].age); // } // printf("\n"); //编程找出下列四人中成绩最高者,并按照姓名进行冒泡排序(升序)并打印出全部信息 // typedef struct person{ // // char name[20]; // int num; // char hoobby[20]; // int age; // }per; // per per1={"zrt",60,"ritian",18}; // per per2={"ylc",70,"nvren",20}; // per per3={"hlw",80,"yeye",7}; // per per4={"fj",30,"sg",24}; // // per per5={0}; // per per6[]={per1,per2,per3,per4}; // per temp; // per5=per1.num>per2.num?per1:per2; // per5=per5.num>per3.num?per5:per3; // per5=per5.num>per4.num?per5:per4; // // // printf("成绩最高的%s,%d,%s,%d\n",per5.name,per5.num,per5.hoobby,per5.age); // // //strcmp(<#const char *#>, <#const char *#>) // for (int i=0; i<3; i++) { // for (int j=0; j<3-i; j++) { // if (strcmp(per6[j].name, per6[j+1].name)>0) { // temp=per6[j]; // per6[j]=per6[j+1]; // per6[j+1]=temp; // } // } // }for (int i=0; i<4; i++) { // printf("按照姓名排序:姓名%s,成绩%d,爱好%s,年龄%d\n",per6[i].name,per6[i].num,per6[i].hoobby,per6[i].age); // } //结构体嵌套 结构体的成员为结构体 // typedef struct Date{ // // int year; // int month; // int day; // // }MyDate; // typedef struct person // { // char name[20]; // int age; // MyDate birthday; // // }per; // per per1={"丑葫芦",18,{1997,12,20}}; // printf("姓名%s,今年%d,出生日期%d年%d月%d日",per1.name,per1.age,per1.birthday.year,per1.birthday.month,per1.birthday.day); // typedef struct person{ char name [20]; int age; int num; char b[20] }per; per p1={"小丽",18,34,"吃饭"}; per p2={"??黄",19,56,"睡觉"}; per p3={"小白",3,78,"干"}; per p4[3]={p1,p2,p3}; //通过对应的下标找到对应的结构体然后我们使用点(.)语法点出我们想要的属性(实例变量) printf("今年%d岁\n",p4[0].num); printf("我是最吊的,我叫%s\n",p4[2].name); return 0; }
时间: 2024-10-13 01:46:20