一:main.m文件里:
#import
#import "Dot.h"
//定义一个手机的结构体
struct phone{
char type[20];
float price;
};
typedefstructphone Phone;
//引入头文件的实质,就是把.h中的内容粘贴过来
//结构体声明还可以在函数内部,也可以写在函数外部
//打印结构体数组函数
//void printArray(Phone array[],int count);
//void printArray(Phone array[],int count){
// for (int i=0; i
// printf("%s %.2f\n",array[i].type,array[i].price);
//
// }
//}
//冒泡排序的函数
void bubbleSort(Phone array[],int count);
void bubbleSort(Phone array[],int count){
for (int i=0; i1; i++) {
for (int j=0; j1-j; j++) {
if (array[j].price>array[j+1].price) {
Phone temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
// for (int i=0; i
//
// printf("%s %.2f\n",array[i].type,array[i].price);
//
// }
int main(int argc, const char * argv[]) {
//结构体是一种用户可以自定义数据类型
//结构体的声明格式
struct student {
int number ;
char name[20];
char gender;
float score;
};
//注:
//1.结构体命名使用小驼峰法
//2.每一个成员变量后要加分号(;)
//3.大括号外面也要加分号(;)
//4.成员变量的类型可以不同
//定义整型变量
int a=0;
//结构体变量
struct student stu ={9527,"xiaoqiang",'F',59.9};
//注:struct student 数据类型
//stu 变量名
//{9527,"xiaoqiang",'F',59.9}赋值
//访问结构体的成员变量:使用点语法
printf("%d\n",stu.number);
printf("%s\n",stu.name);
printf("%c\n",stu.gender);
printf("%f\n",stu.score);
// 每一个成员变量的值都为0
struct student stu1={0};
//结构体变量可以直接参与运算
stu1=stu;
printf("%d\n",stu1.number);
printf("%s\n",stu1.name);
printf("%c\n",stu1.gender);
printf("%.2f\n",stu1.score);
//修改成员变量的值
stu1.number=1234;
//stu1.name=xiaoqiong;
strcpy(stu1.name, stu.name);
stu1.gender='M';
stu1.score=59.8;
printf("%d %s %c %.2f\n",stu1.number,stu1.name,stu1.gender,stu1.score);
//有三个学生,编程找出分数最高者及年龄最小者
struct student1 {
int age;
char name[20];
float score;
};
struct student1 s1={118, "laoyao", 01.1};
struct student1 s2={45, "dachui" , 99.9};
struct student1 s3={85, "lisi" , 465.0};
struct student1 max={0};
max=s1.score>s2.score?s1:s2;
max=max.score>s3.score?max:s3;
printf("分数最高者:%s %d %.2f\n",max.name,max.age,max.score);
struct student1 min={0};
min=s1.ageage?s1:s2;
min=min.ageage?min:s3;
printf("年龄最小者:%s %d %.2f\n",min.name,min.age,min.score);
// 重命名数据类型
//typedef 原类型名 新类型名
//注:新类型名使用大驼峰法命名
typedef int AAA;
int c=10;
int d=10;
typedef struct student Student;
struct student p1={123,"xiaoming",'F',99.9};
Student p2={123,"xiaoming",'F',99.9};
//结构体所占的字节数是最大成员变量数据类型所占字节数的倍数
// 结构体成员变量的顺序,会影响到结构体所占的字节数
//合理的排布成员变量的顺序,能够减少内存碎片,降低结构体所占的字节数
struct abc {
char a ;
short b;
char d ;
int c ;
};
printf("%lu\n",sizeof(structabc));//12
struct point {
float x;
float y;
};
typedefstructpoint P;
//Pp={0};
//定义一个手机的结构体
struct phone{
char type[20];
float price;
};
typedef struct phone Phone;
//定义5个结构体变量,存入数组
Phone q1={"Iphone",5999};
Phone q2={"samsung",7000};
Phone q3={"huawei",3000};
Phone q4={"blackberry",3850};
Phone q5={"xiaomi",1999};
//结构体数组
Phone array[5]={q1,q2,q3,q4,q5};
// array[1] 结构体变量
// array[1].type 结构体的成员变量
//遍历数组,打印每一个元素
for (int i=0; i<<span se-mark="1">5; i++) {
printf("%s %.2f\n",array[i].type,array[i].price);
}
//按照价格排序(低到高)
for (int i=0; i<<span se-mark="1">5-1; i++) {
for (int j=0; j<<span se-mark="1">5-1-i; j++) {
if (array[j].price>array[j+1].price) {
Phone temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for (int i=0; i<<span se-mark="1">5; i++) {
printf("%s %.2f\n",array[i].type,array[i].price);
}
printf("\n");
//a-z
for (int i=0; i<<span se-mark="1">5-1; i++) {
for (int j=0; j<<span se-mark="1">5-1-i; j++) {
if (strcmp(array[j].type, array[j+1].type)) {
Phone temp= array[j];
array[j]=array[j+1];
array[j+1]= temp;
}
}
}
for (int i=0; i<<span se-mark="1">5; i++) {
printf("%s %.2f\n",array[i].type,array[i].price);
}
// 定义一个BOOL 类型的变量,用于标记上一趟比较是否发生了交换
//YES:发生了交换,NO:没有发生交换
int b[5]={10, 6, 7, 8, 9};
BOOL flag=YES;
//每一趟比较开始的条件:上一趟比较发生了交换
//如果上一趟比较没有发生交换,说明数组已经是有序的,不用进行排序了
for (int i=0; i<<span se-mark="1">5-1&&flag; i++) {
//每一趟比较开始的时候,假设这一趟比较不会发生交换
flag=NO;
for (int j=0; j<<span se-mark="1">5-1-i; j++) {
if (b[j]>b[j+1]) {
int temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;//
//一旦进入到if语句内部,说明发生了交换
flag=YES;
}
}
}
for (int i=0; i<<span se-mark="1">5; i++) {
printf("%d ",b[i]);
}
二:Dot.h里:
//结构体的声明写在.h中
//结构体声明还可以在函数内部,也可以写在函数外部
struct point {
float x;
float y;
};
typedef struct point P;
本讲结束...
正宗上课源代码