Hu ying Dong. 2022-02-27 08:41 采纳率: 87.5%
浏览 26
已结题

C语言 关于结构指针数组。

不知道为什么当我输入n为3时,只能输进去两行。
而且感觉程序编的也不大行,
帮忙看看提提意见。

img

#include<stdio.h>
struct students{ 
            int    num;
            char  name[15];
            char  sex;
               int    age;
            double grade;
        };
int main(void)
{
    int n, i, j;
    struct students stu[10], *p[10], temp;
    scanf("%d", &n);
    for(i=0;i<n;i++){
        scanf("%d", &stu[i].num);
        scanf("%s", stu[i].name);
        scanf("%c", &stu[i].sex);
        scanf("%d", &stu[i].age);
        scanf("%lf", &stu[i].grade);
    }
    for(i=0;i<n;i++){
        p[i]=&stu[i];
    }
    for(i=0;i<n;i++){
        for(j=0;j<n-1;j++){
            if(p[j]->grade<p[j+1]->grade){
                temp=*p[j+1];
                *p[j+1]=*p[j];
                *p[j]=temp;
            }
        }
    }
    for(i=0;i<=n;i++){
    printf("%d %s %s %d %d\n", p[i]->num, p[i]->name, p[i]->sex, p[i]->age, p[i]->grade);
    }
}

img

  • 写回答

2条回答 默认 最新

  • _GX_ 2022-02-27 08:57
    关注
    #include <stdio.h>
    
    struct student
    {
        int num;
        char name[15];
        char sex;
        int age;
        double grade;
    };
    
    int main(void)
    {
        int n, i, j;
        struct student stu[10], *p[10], *temp;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
        {
            scanf("%d%s %c%d%lf", &stu[i].num, stu[i].name, &stu[i].sex, &stu[i].age, &stu[i].grade);
            p[i] = &stu[i];
        }
    
        printf("Before:\n");
        for (i = 0; i < n; i++)
            printf("%d %s %c %d %lf\n", p[i]->num, p[i]->name, p[i]->sex, p[i]->age, p[i]->grade);
    
        for (i = 0; i < n - 1; i++)
        {
            for (j = 0; j < n - i - 1; j++)
            {
                if (p[j]->grade < p[j + 1]->grade)
                {
                    temp = p[j + 1];
                    p[j + 1] = p[j];
                    p[j] = temp;
                }
            }
        }
    
        printf("After:\n");
        for (i = 0; i < n; i++)
            printf("%d %s %c %d %lf\n", p[i]->num, p[i]->name, p[i]->sex, p[i]->age, p[i]->grade);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 修改了问题 2月27日
  • 创建了问题 2月27日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么