anwen1236 2021-07-02 12:32 采纳率: 50%
浏览 851
已结题

输入n并输入n(n<=100)个学生的信息(学号、姓名、成绩),存入数组,用结构数组编程解决问题。

(1)排序:按照从高分到低分的顺序输出他们的信息;
(2)查询:能按学号查询某个学生的成绩;
(3)添加:能添加一个学生的信息((学号、姓名、成绩;
(4)删除:能删除一个指定学号的学生信息。

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-07-02 14:20
    关注
    typedef struct _student
    {
      char name[20];
      int nid;
      float score;
    }student;
    student stu[100];
    int n;
    
    void sort()
    {
        for(int i=0;i<n-1;i++)
          for(int j=0;j<n-i-1;j++)
          {
            if(stu[j].score < stu[j+1].score)
            {
              student a = stu[j];
              stu[j] = stu[j+1];
              stu[j+1] = a;
          }
      printf("%10s%20s%10s\n","学号","姓名","成绩");
      for(i=0;i<n;i++)
        printf("%10d%20s%10g\n",stu[i].nid,stu[i].name,stu[i].score);
    }
    
    void query()
    {
        int id;
        scanf("%d",&id);
        for(int i=0;i<n;i++)
        {
          if(stu[i].nid == id)
          {
            printf("学号:%d\n",stu[i].nid);
            printf("姓名:%s\n",stu[i].name);
            printf("成绩:%g\n",stu[i].score);
            return;
          }
        }
        printf("查无此人。\n");
    }
    
    void del()
    {
      printf("请输入需要删除的学生学号:");
      int id;
      scanf("%d",&id);
      for(int i=0;i<n;i++)
        {
          if(stu[i].nid == id)
          {
            for(int j=i;j<n-1;j++)
            {
              stu[j] = stu[j+1];
            }
            n--;
            printf("删除成功。\n");
            return;
          }
        }
        printf("查无此人。\n");
    }
    
    void add()
    {
       printf("请输入学生学号、姓名和成绩:");
       scanf("%d %s %f",&stu[n].nid,stu[n].name,&stu[n].score);
       n++;
        printf("添加成功。\n");
    }
    
    void showmenu()
    {
      system("cls");
      printf("      欢迎使用学生管理系统\n\n");
      printf("    1、增加学生\n");
      printf("    2、删除学生\n");
      printf("    3、查询学生\n");
      printf("    4、排序学生\n");
      printf("    0、退出系统\n\n");
      printf("  请输入您的选择:");
    }
    
    int main()
    {
      while(1)
      {
          showmenu();
          int sel;
          scanf("%d",&sel);
          switch(sel)
          {
            case 1:
              add();
              break;
            case 2:
              del();
              break;
            case 3:
              query();
              break;
            case 4:
              sort();
              break;
            case 0:
              exit(0);
          }
          system("pause");
      }
      return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程