2026/4/6 5:54:38
网站建设
项目流程
一.结构体的定义struct stu { char name[10];//姓名 int age;//年龄 long long id;//学号 double score;//成绩 };二.结构体的三种初始化1.直接定义并初始化struct stu b { 小明,18,1345,78};2.先定义后初始化struct stu a; strcpy(a.name, 小华);//字符串必须用strcpy 进行初始化 a.age 12; a.id3344; a.score 88;3.先定义后键盘输入printf(请输入你的名字-); scanf(%sp-name); printf(请输入你的年龄-); scanf(%d,p-age); printf(请输入你的学号-); scanf(%d,p-id); printf(请输入你的成绩-); scanf(%dp-score);二.结构体的访问1.值访问 a.name (*P).name (.直接访问符 由变量对象 变量地址的解引用 直接去访问2.地址访问-》结构体指针 结构体的地址 p-name (-间接访问符 可以通过结构体地址 间接访问成员 效果(*p).namep-namep-name(*p).name1.打印函数1void Printf(struct stu a) {//101~132 printf(%s %d %lld %.1lf\n, a.name, a.age, a.id, a.score); }打印函数2void Printf_plus(struct stu* pa) {//1001~1004 printf(%s %d %lld %.1lf\n, pa-name, pa-age, pa-id, pa-score); } //值传递和地址传递 效果一模一样 但是地址传递效率更高更能节约空间 优先选择地址传递2.结构体排序void Bubble_Sort_Student(struct Student tulun2510[], int len) { for (int i 0;i len - 1;i) { for (int j 0;j len - 1 - i;j) { if (tulun2510[j].scoretulun2510[j1].score) { struct Student temp tulun2510[j]; tulun2510[j] tulun2510[j 1]; tulun2510[j 1] temp; } } } } //和冒泡排序雷同3.大于平均数double Avg(struct Student tulun2510[], int len) { double sum 0; double avg 0; for (int i 0;i len;i) { sum tulun2510[i].score; } avg sum / len; return avg; } void Printf_Avg_up(struct Student tulun2510[],int len) { double avg Avg(tulun2510, len); printf(%lf\n, avg); for (int i 0;i len;i) { if (tulun2510[i].score avg) { Printf_plus(tulun2510[i]); } } }4.主函数int main() { struct Student tulun2510[5] { { 张名, 20, 2431231237, 80 } , { 王乐, 18, 2531431102, 47 } , { 张凤, 18, 2531271412, 54 } , { 毛毛, 19, 2531431110, 92 } , { 孟江, 19, 2431201208, 70 } }; //tulun2510:5个 struct Student tulun[0]~tulun[4]; //sizeof(tulun2510[5])-5*sizeof(struct Student)160Byte //tulun2510:struct Student(*)[5]//1 //tulun2510:首元素的地址 tulun2510[0]/struct Student*//1 /*printf(%p %p\n, tulun2510, tulun2510 1);*/ //tulun2510:首元素的地址 tulun2510[0]/struct Student*//1 //1 sizeof(struct Student) 32 printf(%p %p\n, tulun2510, tulun2510 1); //tulun2510:struct Student(*)[5]//1 //1 sizeof(struct Student[5]) 160 printf(%d %d %d\n, sizeof(tulun2510), sizeof(*tulun2510), sizeof(tulun2510)); //*tulun2510- tulun2510[0]-32 //数组的输出 for (int i 0;i sizeof(tulun2510) / sizeof(tulun2510[0]);i) { Printf_plus(tulun2510 i); } printf(\n); Bubble_age_student(tulun2510, 5); for (int i 0;i 5;i) { Printf_plus(tulun2510[i]); } printf(\n); Printf_Avg_up(tulun2510, sizeof(tulun2510) / sizeof(tulun2510[0])); return 0; }