• 动态构造结构体数组


    动态构造结构体数组

    # include <stdio.h>
    # include <malloc.h>
    
    struct Student
    {
        int age;
        float score;
        char name[100];
    };
    
    int main(void)
    {
        int len;
        struct Student * pArr;
        int i, j;
        struct Student t;
        
    
        //动态的构造一维数组
        printf("请输入学生的个数:
    ");
        printf("len = ");
        scanf("%d", &len);
        pArr = (struct Student *)malloc(len * sizeof(struct Student));
        
        //输入
        for (i=0; i<len; ++i)
        {
            printf("请输入第%d个学生的信息:
    ", i+1);
            printf("age = ");
            scanf("%d", &pArr[i].age);
    
            printf("name = ");
            scanf("%s", pArr[i].name);  //name是数组名,本身就已经是数组首元素的地址, 所以pArr[i].name 不能改成 &pArr[i].name
    
            printf("score = ");
            scanf("%f", &pArr[i].score);
        }
    
        //按学生成绩升序排序 冒泡算法
        for (i=0; i<len-1; ++i)
        {
            for (j=0; j<len-1-i; ++j)
            {
                if (pArr[j].score > pArr[j+1].score) //>升序 <降序
                {
                    t = pArr[j];
                    pArr[j] = pArr[j+1];
                    pArr[j+1] = t;
                }
            }
        }
    
        printf("
    
    学生的信息是:
    ");
        //输出
        for (i=0; i<len; ++i)
        {
            printf("第%d个学生的信息是:
    ", i+1);
            printf("age = %d
    ", pArr[i].age);
            printf("name = %s
    ", pArr[i].name);  //name是数组名,本身就已经是数组首元素的地址, 所以pArr[i].name 不能改成 &pArr[i].name
            printf("score = %f
    ", pArr[i].score);
        
            printf("
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    sed 练习
    正则表达式
    字符转换命令
    命令执行判断依据
    shell 操作环境
    选取命令
    排序命令
    命令别名与历史命令
    变量的学习
    防止恶意跳转
  • 原文地址:https://www.cnblogs.com/mjorcen/p/3816584.html
Copyright © 2020-2023  润新知