- 从堆区申请能存5个结构体变量的数组的空间,完成数组中成员的输入,根据学生成绩,用选择排序的方式,对学生排序并输出。
#include <stdio.h> #include <string.h> #include <stdlib.h> struct stu { char name[20]; int score; }; int main(int argc, const char *argv[]) { struct stu *p=(struct stu*)malloc(sizeof(struct stu)*5); for(int i=0;i<5;i++) { printf("person %d \n",i); printf("score : "); scanf("%d",&(p+i)->score); printf("name : "); getchar(); gets((p+i)->name); } for(int i=0;i<4;i++) for(int j=i+1;j<5;j++) { if((p+i)->score<(p+j)->score) { char temp[20]=""; strcpy(temp,(p+j)->name); strcpy((p+j)->name,(p+i)->name); strcpy((p+i)->name,temp); int temp1; temp1=(p+j)->score; (p+j)->score=(p+i)->score; (p+i)->score=temp1; } } printf("After sort:\n"); for(int i=0;i<5;i++) { printf("name : "); puts((p+i)->name); printf("score : %d\n",(p+i)->score); } return 0; }
- 求以下结构体的大小
typedef struct {
int id;
char name[50];
char grade[3];
} Student;
大小为60
typedef struct {
int id;
char name[50];
Student student;
} Teacher;
大小为116
typedef struct {
int id;
char name[50];
Teacher teacher;
} Course;
大小为172