笔记
作业
1. 从堆区申请能存5个结构体变量的数组的空间,完成数组中成员的输入,根据学生成绩,用选择排序的方式,对学生排序并输出。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char name[20];
double score;
}Stu,*PStu;
void swap(PStu *a,PStu *b);
void SelectSort(PStu *p,int len);
int main() {
PStu p[5];
int i;
printf("please enter 5 name and score:\n");
for(i=0;i<5;i++)
{
p[i]=(Stu*)malloc(sizeof(Stu));
scanf("%s %lf",p[i]->name,&p[i]->score);
}
printf("---------------------------\n");
printf("results before sorting:\n");
for(i=0;i<5;i++)
{
printf("name=%s,score=%.2lf\n",p[i]->name,p[i]->score);
}
SelectSort(p,5);
printf("---------------------------\n");
printf("sorted results:\n");
for(i=0;i<5;i++)
{
printf("name=%s,score=%.2lf\n",p[i]->name,p[i]->score);
}
return 0;
}
void swap(PStu *a,PStu *b)
{
PStu tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void SelectSort(PStu *p,int len)
{
int i,j,min;
for(i=0;i<len-1;i++)
{
min=i;
for(j=i+1;j<len;j++)
{
if((*(p+j))->score < (*(p+min))->score)
{
min=j;
}
}
if(min!=i)
{
swap(p + i, p + min);
}
}
}
2. 求以下结构体的大小。
typedef struct {
int id;
char name[50];
char grade[3];
} Student;
typedef struct {
int id;
char name[50];
Student student;
} Teacher;
typedef struct {
int id;
char name[50];
Teacher teacher;
} Course;
sizeof(Student)=4+52+4=60字节
sizeof(Teacher)=4+48+4+60=116字节
sizeof(Course)=4+48+4+116=172字节