返乡没拿电脑航班取消被困在机场了,C语言实验ddl要到了

结构体这里掌握的一直不是很好,刚把指针学会,又布置了实验课的项目,加上返乡忙碌没有敲出来任何东西,求告知思路,代ma有偿

img

img

img

img

5-1

img

struct test1
{
    char a;
    float c;
    double d;
    int e;
    char f;
};
struct test2
{
    char c;
    int *p1;
    int t;
    double *p2;
};
struct S1
{
    char c1;
    int i;
};
struct S3
{
    char c2;
    S1 s;
    char c3;
};
#include <stdio.h>
int main()
{
    printf("sizeof test1:%d\n",sizeof(test1));
    printf("sizeof test2:%d\n",sizeof(test2));
    printf("sizeof S1:%d\n",sizeof(S1));
    printf("sizeof S3:%d\n",sizeof(S3));
    return 0;
}

5-2

img

#include <stdio.h>
typedef struct Subject
{
    int mathscore;
    int physicsscore;
    int pregrammingscore;
} Subject;
typedef struct Student
{
    char *id;
    char *name;
    Subject sub;
} Student;
void printMathScore(struct Student* stu,int len)
{
    for (int i=0; i<len; i++)
    {
        for (int j=0; j<len-1-i; j++)
        {
            if(stu[j].sub.mathscore<stu[j+1].sub.mathscore)
            {
                Student p=stu[j];
                stu[j]=stu[j+1];
                stu[j+1]=p;
            }
        }
    }
    printf("学号\t\t姓名\t数学\t物理\t编程\n");
    for (int i=0; i<len; i++)
    {
        printf("%s\t%s\t%d\t%d\t%d\n",stu[i].id,stu[i].name,stu[i].sub.mathscore,
               stu[i].sub.physicsscore,stu[i].sub.pregrammingscore);
    }
}
int main()
{
    Subject sub[10]=
    {
        {99,100,60},{98,88,90},{87,100,100},{89,88,87},
        {78,90,93},{100,100,100},{80,94,99},{100,88,78},
        {78,77,76},{90,90,97}
    };
    Student stu[10]=
    {
        {"20221101","A",sub[0]},
        {"20221102","B",sub[1]},
        {"20221103","C",sub[2]},
        {"20221104","D",sub[3]},
        {"20221105","E",sub[4]},
        {"20221106","F",sub[5]},
        {"20221107","G",sub[6]},
        {"20221108","H",sub[7]},
        {"20221109","i",sub[8]},
        {"20221110","J",sub[9]}
    };
    printMathScore(stu,10);
}

5-1
第一个test2的字节为40,因为最长的是double 八个字节,按照字节对齐就是58;
第二个text2字节16,指针和int类型都是四个,char对齐,一共4
4;
S1占8个,s3占16个,s在这里是两个元素所以对齐的是int类型,也是4*4;

有空写

你就把结构图想象成一组不能分开变量的整体大变量就ok了,操作上除了有个"."外和普通变量没啥区别