c: struct sort descending and ascending
写法方式之一:
/**
* @file hello.c
* @author your name (geovindu)
* @brief
* @ide vscode c11,c17 windows 10
* @version 0.1
* @date 2023-11-05
*
* @copyright Copyright (c) 2023
*
*/
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
struct num1
{
char a; //1
char b; //2
double c; //8
short d;
};
struct num2
{
char a; //1
double b;//2
char c;
int d;
};
/**
* @brief 学生
*
*/
struct Student
{
/**
* @brief 姓名
*
*/
char name[20];
/**
* @brief 年龄
*
*/
int age;
/**
* @brief 成绩
*
*/
int score;
};
/**
* @brief 英雄
*
*/
struct Hero
{
/**
* @brief 姓名
*
*/
char name[20];
/**
* @brief 年龄
*
*/
int age;
/**
* @brief 性别
*
*/
char sex[2];
};
/**
* @brief 升序排序
*
* @param a
* @param b
* @return int
*/
int cmp(const void *a,const void *b){
struct Hero c=*(struct Hero*)a;
struct Hero d=*(struct Hero*)b;
//按升序排序
return c.age-d.age;
}
/**
* @brief 升降
*
* @param her
* @param n
*/
void SortBubble(struct Hero her[10],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(her[j].age>her[j+1].age)
cmp(&her[j],&her[j+1]);
}
}
}
/**
* @brief 比较
*
* @param px
* @param py
*/
void swap(struct Hero *px, struct Hero *py) // Definition of Swap function
{
struct Hero temp;
temp = *px;
*px = *py;
*py = temp;
}
/**
* @brief 升序
*
* @param her
* @param n
*/
void SortBubbleAsc(struct Hero her[10],int n)
{
int i,j;
struct Hero temp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(her[j].age>her[j+1].age)
swap(&her[j],&her[j+1]);
//temp=her[j];
// her[j]=her[j+1];
// her[j+1]=temp;
}
}
}
/**
* @brief 降序
*
* @param her
* @param n
*/
void SortBubbleDesc(struct Hero her[10],int n)
{
int i,j;
struct Hero temp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(her[j].age<her[j+1].age)
swap(&her[j],&her[j+1]);
}
}
}
/**
* @brief
*
* @param her
* @param n
*/
void PrintList(struct Hero her[],int n)
{
for(int i=0;i<n;i++)
{
printf("信息:%s \t %d\t %s$\n",her[i].name,her[i].age,her[i].sex);
}
}
int main()
{
puts("hello c language world!涂聚文\t");
printf("涂聚文");
struct Student stu={"张三",18,100};
struct Student *p=&stu;
p->score=80;
printf("姓名%s 年龄%d 成绩%d \n",p->name,p->age,p->score);
printf("输入5位英雄:\n");
printf("姓名\t 年龄 \t 性别:\n");
int n;
struct Hero sz[100];
n=5;
for(int i=0;i<n;i++){
scanf("%s %d %s",&sz[i].name,&sz[i].age,&sz[i].sex);
}
/*
qsort函数参数:
*/
//1
//qsort(sz,n,sizeof(sz[0]),cmp);
//2
//SortBubble(sz,5);
//3
//SortBubbleDesc(sz,5);
//4
SortBubbleAsc(sz,5);
//qsort(sz,n,sizeof(sz[0]),cmpSort);
printf("\n按年龄升序为:\n\n");
printf("姓名\t 年龄 \t 性别:\n");
for(int i=0;i<n;i++){
printf("%s\t %s \t%d \n",sz[i].name,sz[i].sex,sz[i].age);
}
struct num1 n1;
struct num2 n2;
printf("sizeof(n1)=%d,sizeof(n2)%d\n",sizeof(n1),sizeof(n2));
system("pause");
return 0;
}
写法方式之二:
/**
* @file StudentStructSort.h
* @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
* ide: vscode c11,c17 Ubuntu 22.4
* @brief 结构体排序示例
* @date 2023-11-05
* @version 0.1
* @copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
*
*/
#ifndef STUDENTSTRUCTSORT_H_
#define STUDENTSTRUCTSORT_H_
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <stdbool.h>
/**
* @brief 英雄
*
*/
struct Hero
{
/**
* @brief 姓名
*
*/
char name[20];
/**
* @brief 年龄
*
*/
int age;
/**
* @brief 性别
*
*/
char sex[2];
};
/**
* @brief 升序排序
*
* @param a
* @param b
* @return int
*/
int cmp(const void *a,const void *b);
/**
* @brief 升降
*
* @param her
* @param n
*/
void SortBubble(struct Hero her[10],int n);
/**
* @brief 比较
*
* @param px
* @param py
*/
void TuSwap(struct Hero *px, struct Hero *py);
/**
* @brief 升序
*
* @param her
* @param n
*/
void SortBubbleAsc(struct Hero her[10],int n);
/**
* @brief 降序
*
* @param her
* @param n
*/
void SortBubbleDesc(struct Hero her[10],int n);
/**
* @brief
*
* @param her
* @param n
*/
void PrintList(struct Hero her[],int n);
#endif
/**
* @file StudentStructSort..c
* @brief 结构体排序示例
* @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
* ide: vscode c11,c17 Ubuntu 22.4
* @date 2023-11-05
* @version 0.1
* @copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
*
*/
#include "include/StudentStructSort.h"
/**
* @brief 升序排序
*
* @param a
* @param b
* @return int
*/
int cmp(const void *a,const void *b){
struct Hero c=*(struct Hero*)a;
struct Hero d=*(struct Hero*)b;
//按升序排序
return c.age-d.age;
}
/**
* @brief 升降
*
* @param her
* @param n
*/
void SortBubble(struct Hero her[10],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(her[j].age>her[j+1].age)
cmp(&her[j],&her[j+1]);
}
}
}
/**
* @brief 比较
*
* @param px
* @param py
*/
void TuSwap(struct Hero *px, struct Hero *py) // Definition of Swap function
{
struct Hero temp;
temp = *px;
*px = *py;
*py = temp;
}
/**
* @brief 升序
*
* @param her
* @param n
*/
void SortBubbleAsc(struct Hero her[10],int n)
{
int i,j;
struct Hero temp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(her[j].age>her[j+1].age)
TuSwap(&her[j],&her[j+1]);
//temp=her[j];
// her[j]=her[j+1];
// her[j+1]=temp;
}
}
}
/**
* @brief 降序
*
* @param her
* @param n
*/
void SortBubbleDesc(struct Hero her[10],int n)
{
int i,j;
struct Hero temp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(her[j].age<her[j+1].age)
TuSwap(&her[j],&her[j+1]);
}
}
}
/**
* @brief
*
* @param her
* @param n
*/
void PrintList(struct Hero her[],int n)
{
for(int i=0;i<n;i++)
{
printf("信息:%s \t %d\t %s$\n",her[i].name,her[i].age,her[i].sex);
}
}
/** * @file geovindu.h * @brief * @author geovindu,Geovin Du,涂聚文 (geovindu@163.com) * ide: vscode c11,c17 Ubuntu 22.4 * @date 2023-11-05 * @version 0.1 * @copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants * * @copyright Copyright (c) 2023 * */ #ifndef GEOVINDU_H_ #define GEOVINDU_H_ #include <stdio.h> #include <string.h> #include <stdbool.h> /** * @brief * */ void displayHero(); #endif
/**
* @file geovindu.c
* @brief
* @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
* ide: vscode c11,c17 Ubuntu 22.4
* @date 2023-11-05
* @version 0.1
* @copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
*
* @copyright Copyright (c) 2023
*
*/
#include "include/StudentStructSort.h"
/**
* @brief
*
*/
void displayHero()
{
printf("输入5位英雄:\n");
printf("姓名\t 年龄 \t 性别:\n");
int n;
struct Hero sz[100];
n=5;
for(int i=0;i<n;i++){
scanf("%s %d %s",&sz[i].name,&sz[i].age,&sz[i].sex);
}
/*
qsort函数参数:
*/
//1
//qsort(sz,n,sizeof(sz[0]),cmp);
//2
//SortBubble(sz,5);
//3
SortBubbleDesc(sz,5);
printf("\n按年龄降序为:\n\n");
printf("姓名\t 年龄 \t 性别:\n");
for(int i=0;i<n;i++){
printf("%s\t %d \t%s \n",sz[i].name,sz[i].age,sz[i].sex);
}
//4
SortBubbleAsc(sz,5);
//qsort(sz,n,sizeof(sz[0]),cmpSort);
printf("\n按年龄升序为:\n\n");
printf("姓名\t 年龄 \t 性别:\n");
for(int i=0;i<n;i++){
printf("%s\t %d \t%s \n",sz[i].name,sz[i].age,sz[i].sex);
}
}
调用:
printf("hello c world, \n");
printf("你好,中国\n");
displayHero();
输出:



/**
* @file StudentStructSort.h
* @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
* ide: vscode c11,c17 windows 10
* @brief 结构体排序示例
* @date 2023-11-05
* @version 0.1
* @copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
*
*/
#ifndef STUDENTSTRUCTSORT_H_
#define STUDENTSTRUCTSORT_H_
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <stdbool.h>
/**
* @brief 英雄
*
*/
struct Hero
{
/**
* @brief 姓名
*
*/
char name[20];
/**
* @brief 年龄
*
*/
int age;
/**
* @brief 性别
*
*/
char sex[2];
};
/**
* @brief 学生实体
*
*/
struct Student
{
/**
* @brief 姓名
*
*/
char name[20];
/**
* @brief 年龄
*
*/
int age;
/**
* @brief 班级
*
*/
char class[20];
/**
* @brief 成绩
*
*/
double score;
};
/**
* @brief 老师实体
*
*/
struct Teacher
{
/**
* @brief 教师编号
*
*/
int id;
/**
* @brief 老师姓名
*
*/
char *Name;
/**
* @brief 教师年龄
*
*/
int age;
/**
* @brief 所教管的学生集合
*
*/
//struct Student **stus;
struct Student stus[5];
} Teacher;
/**
* @brief 老师实体
*
*/
struct NewTeacher
{
/**
* @brief 教师编号
*
*/
int id;
/**
* @brief 老师姓名
*
*/
char *Name;
/**
* @brief 教师年龄
*
*/
int age;
/**
* @brief 所教管的学生集合
*
*/
//struct Student **stus;
struct Student **stus;
} NewTeacher;
/**
* @brief 升序排序
*
* @param a
* @param b
* @return int
*/
int cmp(const void *a,const void *b);
/**
* @brief 升降
*
* @param her
* @param n
*/
void SortBubble(struct Hero her[10],int n);
/**
* @brief 比较
*
* @param px
* @param py
*/
void TuSwap(struct Hero *px, struct Hero *py);
/**
* @brief 升序
*
* @param her
* @param n
*/
void SortBubbleAsc(struct Hero her[10],int n);
/**
* @brief 降序
*
* @param her
* @param n
*/
void SortBubbleDesc(struct Hero her[10],int n);
/**
* @brief
*
* @param her
* @param n
*/
void PrintList(struct Hero her[],int n);
/**
* @brief 静态编历老师
*
*/
void DisplayTeacher();
/**
* @brief 遍历老师学生
*
*/
void DisplayTeacher1();
/**
* @brief
*
* @param p
* @param n1 老师个数
* @param n2 学生个数
*/
void initTeacher(struct NewTeacher *p, int n1, int n2);
/**
* @brief Create a Teacher object
*
* @param p
* @param n1 老师个数
* @param n2 学生个数
* @return int
*/
int createTeacher(struct NewTeacher **p, int n1, int n2);
#endif
/**
* @file StudentStructSort..c
* @brief 结构体排序示例
* @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
* ide: vscode c11,c17 windows 10
* @date 2023-11-05
* @version 0.1
* @copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
*
*/
#include "include/StudentStructSort.h"
#define false 0
#define true 1
/**
* @brief 升序排序
*
* @param a
* @param b
* @return int
*/
int cmp(const void *a,const void *b)
{
struct Hero c=*(struct Hero*)a;
struct Hero d=*(struct Hero*)b;
//按升序排序
return c.age-d.age;
}
/**
* @brief 升降
*
* @param her
* @param n
*/
void SortBubble(struct Hero her[10],int n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(her[j].age>her[j+1].age)
cmp(&her[j],&her[j+1]);
}
}
}
/**
* @brief 比较
*
* @param px
* @param py
*/
void TuSwap(struct Hero *px, struct Hero *py) // Definition of Swap function
{
struct Hero temp;
temp = *px;
*px = *py;
*py = temp;
}
/**
* @brief 升序
*
* @param her
* @param n
*/
void SortBubbleAsc(struct Hero her[10],int n)
{
int i,j;
struct Hero temp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(her[j].age>her[j+1].age)
TuSwap(&her[j],&her[j+1]);
//temp=her[j];
// her[j]=her[j+1];
// her[j+1]=temp;
}
}
}
/**
* @brief 降序
*
* @param her
* @param n
*/
void SortBubbleDesc(struct Hero her[10],int n)
{
int i,j;
struct Hero temp;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(her[j].age<her[j+1].age)
TuSwap(&her[j],&her[j+1]);
}
}
}
/**
* @brief
*
* @param her
* @param n
*/
void PrintList(struct Hero her[],int n)
{
for(int i=0;i<n;i++)
{
printf("信息:%s \t %d\t %s$\n",her[i].name,her[i].age,her[i].sex);
}
}
/**
* @brief 静态编历老师
*
*/
void DisplayTeacher()
{
//struct Teacher teachs[3];
struct Student stusd[5];
struct Student **st1[5] ={ {"张一", 18, "一班",100},{"张三", 15, "一班",45},{"张三", 16, "一班",89},{"张三", 18, "一班",99},{"张三", 17, "一班",88}};
struct Student **st2[5] ={ {"李一", 17, "二班",50},{"李三", 18, "二班",78},{"李三", 18, "二班",78},{"李三", 19, "二班",57},{"李三", 18, "二班",90}};
struct Student **st3[5] ={ {"赵一", 19, "三班",68},{"赵三", 17, "三班",98},{"赵三", 15, "三班",97},{"赵三", 17, "三班",98},{"赵三", 16, "三班",78}};
struct Teacher te1={1000,"吴丽老师",31,st1};
struct Teacher te2={1001,"林祥生老师",29,st2};
struct Teacher te3={1002,"何磊老师",32,st3};
//struct Teacher te1={1000,"吴丽老师",31, {{"张一", 18, "一班",100},{"张三", 15, "一班",45},{"张三", 16, "一班",89},{"张三", 18, "一班",99},{"张三", 17, "一班",88}}};
//struct Teacher te2={1000,"林祥生老师",29, {{"张一", 17, "二班",50},{"张三", 18, "二班",78},{"张三", 18, "二班",78},{"张三", 19, "二班",57},{"张三", 18, "二班",90}}};
//struct Teacher te3={1000,"何磊老师",32, {{"张一", 19, "三班",68},{"张三", 17, "三班",98},{"张三", 15, "三班",97},{"张三", 17, "三班",98},{"张三", 16, "三班",78}}};
//struct Teacher teachs[3]={te1,te2,te3};
struct Teacher teachs[3]={{1000,"吴丽老师",31,{ {"张一", 18, "一班",100},{"张二", 15, "一班",45},{"张三", 16, "一班",89},{"张四", 18, "一班",99},{"张五", 17, "一班",88}}},
{1001,"林祥生老师",29,{ {"李一", 17, "二班",50},{"李二", 18, "二班",78},{"李三", 18, "二班",78},{"李四", 19, "二班",57},{"李五", 18, "二班",90}}},
{1002,"何磊老师",32,{ {"赵一", 19, "三班",68},{"赵二", 17, "三班",98},{"赵三", 15, "三班",97},{"赵四", 17, "三班",98},{"赵五", 16, "三班",78}}}
};
for(int i=0;i<3;i++)
{
printf("老师姓名\t编号\t年龄\n");
printf("%s\t%d\t%d\t%s\n",teachs[i].Name,teachs[i].id,teachs[i].age,teachs[i].stus);
printf("管理学生\n");
printf("姓名\t班级\t年龄\t分数\n");
//stus=teachs[i].stus;
struct Student *ppt=teachs[i].stus;
for(int j=0;j<5;j++)
{
printf("%s\t%s\t%d\t%.2f\n", teachs[i].stus[j].name,teachs[i].stus[j].class,teachs[i].stus[j].age,teachs[i].stus[j].score);
}
//stusd=teachs[i].stus;
//struct Student *stus=ppt[0];
//for (; i <sizeof(books)/sizeof(struct Book); i++) {
//for(int j=0;j<sizeof(teachs[i].stus)/sizeof(struct Student);j++)
//{
//printf("%s\t%s\t%d\t%d\t%d\n",stus->name,stus->class,stus->age,stus->score);
//}
// for(int j=0;j<sizeof(teachs[i].stus)/sizeof(struct Student);j++)
// {
//printf("%s\t%s\t%d\t%d\t%d\n",ppt->name,ppt->class,ppt->age,ppt->score);
//}
//ppt++;
//PrintStuList(ppt,5);
printf("\n");
}
}
/**
* @brief Create a Teacher object
*
* @param p
* @param n1 老师个数
* @param n2 学生个数
* @return int
*/
int createTeacher(struct NewTeacher **p, int n1, int n2)
{
int len=0;
int i,j,k; //分配5个Student信息
*p = (struct NewTeacher*)malloc (sizeof(struct NewTeacher)*n1);
for (i=0;i<n1;i++) //分配5个导师的地址空间
{
(*p)[i].Name=(char *)malloc (sizeof(char)*20);
if ((*p)[i].Name == NULL)
{
return false;
}
}
//(*p)->stu=(char **)malloc (sizeof(char*)*5);
for (j=0;j<n2;j++)
{
(*p)[j].stus=(char **)malloc (sizeof(char)*n2);
if ((*p)[j].stus == NULL)
{
return false;
}
for (k=0;k<3;k++)
{
(*p)[j].stus[k]=(char *)malloc (sizeof(char)*20);
if ((*p)[j].stus[k] == NULL)
{
return false;
}
}
}
return true;
}
/**
* @brief
*
* @param p
* @param n1 老师个数
* @param n2 学生个数
*/
void initTeacher(struct NewTeacher *p, int n1, int n2)
{
int i,j,k=0; //
if (p == NULL)
{
printf ("error\n");
}
//n1 =3; //导师个数
//n2 = 5 //学生
struct Student *st1[5] ={ {"张一", 18, "一班",100},{"张三", 15, "一班",45},{"张三", 16, "一班",89},{"张三", 18, "一班",99},{"张三", 17, "一班",88}};
struct Student *st2[5] ={ {"张一", 17, "二班",50},{"张三", 18, "二班",78},{"张三", 18, "二班",78},{"张三", 19, "二班",57},{"张三", 18, "二班",90}};
struct Student *st3[5] ={ {"张一", 19, "三班",68},{"张三", 17, "三班",98},{"张三", 15, "三班",97},{"张三", 17, "三班",98},{"张三", 16, "三班",78}};
puts ("-----导师赋值------");
for (i=0;i<n1;i++)
{
char *buf[3]={"吴丽老师","林祥生老师","何磊老师"};
int *sage[3]={31,29,32};
int *sid[3]={10,11,12};
//p[i].age=22+i;
//printf ("%d",p[i].age);
p[i].id=sid[i];
p[i].Name=buf[i];
p[i].age=sage[i];
//strcpy (p[i].id,sid[i]);
//strcpy (p[i].Name,buf[i]);
//strcpy (p[i].age,sage[i]);
// printf ("%s",p[i].tName);
for (j=0;j<n2;j++)
{
//struct Student *arr[]={"小黎","小田","小张","小王","小胡","小范",
// "小杨","小石","小柯"};
//p[i].stus[j]->name=st1[j]->name;
//p[i].stus[j]->class=st1[j]->class;
//p[i].stus[j]->age=st1[j]->age;
// p[i].stus[j]->score=st1[j]->score;
//strcpy (p[i].stus[j],st1[k]);
++k;
// printf ("%s\n",p[i].stu[j]);
}
}
}
/**
* @brief 打印结构体成员信息
*
* @param p
* @param n1 老师个数
* @param n2 学生个数
*/
void printTeacher(struct NewTeacher *p, int n1, int n2)
{
int i,j;
if (p == NULL)
{
printf ("error\n");
}
for (i=0;i<n1;i++)
{
printf ("\t\t%s\t%d\t%d\n",p[i].Name,p[i].id,p[i].age); //导师
for (j=0;j<n2;j++)
{
//printf ("\t%s",p[i].stus[j]);
}
putchar('\n');
printf ("\t\t%d\n\n",p[i].age);
}
}
/**
* @brief 根据导师名字排序, 降序
*
* @param p
* @param n 老师个数
*/
void sortTeacher(struct NewTeacher *p, int n)
{
struct NewTeacher t1;
int i,j;
if (p==NULL)
{
printf ("error\n");
}
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++)
{
if ((strcmp (p[i].Name,p[j].Name))>0)
{
t1=p[i];
p[i]=p[j];
p[j]=t1;
}
}
}
}
/**
* @brief 释放空间,在函数内部把p赋值为NULL
*
* @param p
* @param n1 老师个数
* @param n2 学生个数
*/
void freeTeacher(struct NewTeacher **p, int n1, int n2)
{
int i,j;
if (p == NULL)
{
printf ("Empty\n");
}
else
{
for (i=0;i<n1;i++)
{
for (j=0;j<n2;j++)
{
if (p[i]->stus[j]!=NULL)
{
free (p[i]->stus[i]);
p[i]->stus[j]=NULL;
}
}
if (p[i]->stus!= NULL)
{
free (p[i]->stus);
p[i]->stus=NULL;
}
}
}
}
/**
* @brief 遍历老师学生
*
*/
void DisplayTeacher1()
{
int ret = 0;
int n1 = 3; //导师个数
int n2 = 5; //学生
struct Teacher *p = NULL;
ret = createTeacher(&p, n1, n2);
if (ret == false)
{
printf("createTeacher err:%d\n", ret);
exit (EXIT_FAILURE);
}
initTeacher(p, n1, n2); //给成员赋值
//打印成员,排序前
printf("排序前:\n");
printTeacher(p, n1, n2);
//根据导师名字排序, 降序
sortTeacher(p, n1);
//打印成员,排序后
printf("\n排序后:\n");
printTeacher(p, n1, n2);
}
/**
* @brief
*
* @param stusd
* @param n
*/
void PrintStuList(struct Student *stusd,int n)
{
for(int i=0;i<n;i++)
{
printf("%s\t%s\t%d\t%d\t%d\n",stusd[i].name,stusd[i].class,stusd[i].age,stusd[i].score);
}
}
꧁꫞꯭我加油꫞꧂🐬🌹:
/**
* @brief 学生
*
*/
struct GaoStudent
{
char *name; // 或用 char *name
float score;
int teachid;
};
/**
* @brief 老师
*
*/
struct GaoTeacher
{
int id;
char *name;//1名老师,管理3名学生
//struct GaoStudent stu[130]; // 或用: 这里什么类型,对应的
struct GaoStudent *stu
};
/**
* @brief
*
*/
void teststu()
{
//学生
struct GaoStudent stu[9] = {
{"Tom", 89.00,3 },
{ "Marry", 79.00,1},
{ "Jerry", 86.00,2 },
{ "张三", 88.00,3 },
{ "李四", 82.00,1 },
{ "王五", 80.00,2},
{ "Kate", 79.60 ,3},
{ "Bob", 89.78,1 },
{ "Lily", 90.36 ,2}
};
struct GaoStudent studata3[3] ={ {"Tom", 89.00,3 },
{ "Marry", 79.00,1},
{ "Jerry", 86.00,2 }};
struct GaoStudent *stu3=studata3;
struct GaoStudent studata4[3] ={
{ "张三", 88.00,3 },
{ "李四", 82.00,1 },
{ "王五", 80.00,2}
};
struct GaoStudent *stu4=studata4;
struct GaoStudent studata5[3] =
{
{ "Kate", 79.60 ,3},
{ "Bob", 89.78,1 },
{ "Lily", 90.36 ,2}
};
struct GaoStudent *stu5=studata5;
// 老师
struct GaoTeacher t[3] = {
{ 1, "刘杰",stu3},
{ 2, "王大", stu4},
{ 3, "陈小", stu5}
};
for(int i = 0; i < 3; i++)
{
printf("编号%d 老师%s管理的学生有: \n", t[i].id,t[i].name ); //, t[i].stu->name
//数组时用
//struct GaoStudent *pt=&t[i].stu;
struct GaoStudent *pt=t[i].stu;
printf("姓名\t 分数\n");
for(int j=0;j<3;j++)
{
printf("%s\t%.2f\n",(*pt++).name,pt->score);
}
printf("\n");
};
}
vscode 调资源文件

Eclipse IDE for Embedded C and C++ Developers 调头文件


//vscode 两个写法都可以。
//printf("%s\t%.2f\t%d\n",(*pt++).name,(*pt).score,(*pt).teachid);
printf("%s\t%.2f\t%d\n",(*pt++).name,pt->score,pt->teachid);
CLin 2023.1 结构也是调头文件

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号