C语言--结构体
#import <Foundation/Foundation.h> typedef struct students{ }Stu; int main(int argc, const char * argv[]) { //结构体,里面的是成员(变量) struct teacher { char name[30]; char sex; int age; char course[30]; }; //struct teacher类型 a变量名 struct teacher a = {"cuilaoshi",'m',18,"language C"}; // Teacher c = {"cuilaoshi",'m',18,"language C"}; struct cup { float price;//价钱 char color[30];//颜色 int capacity;//容量 }; //struct cup类型 b变量名 {20.5,"red",500}初值 struct cup b = {20.5,"red",500}; //使用typedef 重新定义类型 //1.定义结构体的同时,就取别名 //2.先定义结构体,再取别名 typedef struct teacher Teacher; Teacher c = {"cuilaoshi",'m',18,"language C"}; //类跟结构体很相似 // 访问结构体成员表示,结构体变量.成员 a.name strcpy(a.course, "Objective-C"); a.sex='f'; //打印结构体,可以在main函数,也可以定义函数打印 printf("%s",a.name); printf(" %c ",a.sex); printf(" %d ",a.age); printf(" %s",a.course); //匿名结构体 //结构体赋值 //结构体可以直接赋值 //有三个学生,编程找出分数最高者以及年龄最小者 //字符串赋值拷贝 return 0; }
#import <Foundation/Foundation.h> #import "Student.h" #import "MyRect.h" int main(int argc, const char * argv[]) { // 有三个学?生,编程找出分数最?高者以及 // 年龄最?小者 #pragma mark----------------结构体数组 stu s[3]={ {"zhangsan",23,90,{1990,9,28}}, {"zuoyoudong",25,88,{1991,9,20}}, {"fanghao",24,89,{1992,8,8}} }; stu max = s[0]; #pragma mark----------------结构体中求最大值与最小值 //注意定义最小,不要初始值为0,否则最小总是0,可以定义为第一个元素s[0] stu min = s[0]; //i可以从1开始,因为定义时,已经假设第一个元素s[0]最小或最大,然后让它去跟数组其它元素(第二个,第三个去计较就行了) for (int i = 0; i<3; i++) { if (min.age>s[i].age) { min.age=s[i].age; } if (max.score<s[i].score) { max.score = s[i].score; } } #pragma mark----------------结构体中冒泡排序 // for (int i = 0; i<3-1; i++) { // for (int j =0 ; j<3-1-i; j++) { // if (s[j].score<s[j+1].score) { // stu temp = {0}; // temp = s[j]; // s[j] = s[j+1]; // s[j+1] = temp; // } // } // } bubbleSort(s, 3); printfStu(s, 3); // for (int i = 0; i<3; i++) { // printf("%s %d %.2f \n",s[i].name,s[i].age,s[i].score); // } // printf("分数最?高者是:%s,年龄最?小者是:%s",max.name,min.name); #pragma mark----------------结构体中三目运算符求最大值,最小值 // stu s = {"zuoyoudong fanghao zhangsan",{20,21,18},90.5}; // stu s1 = {"zhangsan",23,90,{1990,9,28}}; // stu s2 = {"zuoyoudong",25,88,{1991,9,20}}; // stu s3 = {"fanghao",24,89,{1992,8,8}}; // //点语法,可以读成的 // printf("%d",s2.birthday.month); // //// //分数最高者 // stu max = {0}; // max = s1.score>s2.score?s1:s2; // max = max.score>s3.score?max:s3; #pragma mark----------结构体占多少内存空间 // //按最大类型的整数倍分配空间sizeof // printf("%s %lu",max.name,sizeof(stu)); //// //年龄最小者 // stu min = {0}; // min = s1.age<s2.age?s1:s2; // min = min.age<s3.age?min:s3; // printf(" %s",min.name); Lpoint p = LpointMake(100, 50); LSize si = LpsizeMake(100, 80); return 0; }
#import "Student.h" #pragma mark----------结构体声明写在.h文件中 struct date { int year; int month; int day; }; typedef struct date Date; typedef struct students{ char name[20];//姓名 int age;//年龄 float score;//分数 Date birthday;//生日 }stu; void bubbleSort(stu s[],int count); void printfStu(stu s[],int count);
"Student.m" void bubbleSort(stu s[],int count) { for (int i = 0; i<count-1; i++) { for (int j = 0; j<count-1-i; j++) { if (s[j].score<s[j+1].score ) { stu temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } } } } void printfStu(stu s[],int count) { for (int i = 0; i<count; i++) { printf("%s,%d,%.2f\n",s[i].name,s[i].age,s[i].score); } }
<pre name="code" class="objc">#import "MyRect.h" typedef struct Lpoint { float x; float y; }Lpoint; //构建一个LPoint Lpoint LpointMake(float x,float y); //在iOS里,你会见到 CGPoint CGPointMake(CGFloat x,CGFloat y); //其中CGFloat是typedef出来的, typedef float CGFloat; //判断两个点是否相同 BOOL LPointisEqual(Lpoint p1,Lpoint p2); typedef struct LSize { float width; float hight; }LSize; LSize LpsizeMake(float width, float height); "MyRect.m" //构建一个LPoint Lpoint LpointMake(float x,float y) { Lpoint p = {x,y}; return p; } //判断两个点是否相同 BOOL LPointisEqual(Lpoint p1,Lpoint p2) { if (p1.x == p2.x && p1.y == p2.y) { return YES; //不写else相当于必走 }else{ return NO; } } LSize LpsizeMake(float width, float height) { LSize siz = {width,height}; return siz; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。