问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
C或C++
运行结果及报错内容
表示出来即可
我的解答思路和尝试过的方法
我已经用python完成了一遍
我想要达到的结果
C或者C++表示并且程序可以正常运行
问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
C或C++
运行结果及报错内容
表示出来即可
我的解答思路和尝试过的方法
我已经用python完成了一遍
我想要达到的结果
C或者C++表示并且程序可以正常运行
你题目的解答代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define N 1000
typedef struct _stu
{
int id; //学号
char name[20];//姓名
char sex;//性别
char pro[20]; //专业
int grade; //班级
float score; //绩点
}Student;
typedef struct _node
{
Student stu[N];
int nmb; //实际学生数量
}LinkList;
//录入数据
void input(LinkList* list)
{
int i, n;
printf("请输入学生数量:");
scanf("%d", &n);
list->nmb = n;
for (i = 0; i < n; i++)
{
printf("请输入学生%d的学号:", i + 1);
scanf("%d", &list->stu[i].id);
printf("请输入学生%d的姓名:", i + 1);
scanf("%s", list->stu[i].name);
getchar(); //吸收回车符
printf("请输入学生%d的性别:", i + 1);
scanf("%c", &list->stu[i].sex);
printf("请输入学生%d的专业:", i + 1);
scanf("%s", list->stu[i].pro);
printf("请输入学生%d的班级:", i + 1);
scanf("%d", &list->stu[i].grade);
printf("请输入学生%d的绩点:", i + 1);
scanf("%f", &list->stu[i].score);
}
}
//显示学生信息
void showStu(Student stu)
{
printf("学号:%d", stu.id);
printf(" 姓名:%s", stu.name);
printf(" 性别:%c", stu.sex);
printf(" 专业:%s", stu.pro);
printf(" 班级:%d", stu.grade);
printf(" 绩点:%.2f\n", stu.score);
}
void sort(Student a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j].score > a[j+1].score || (a[j].score == a[j+1].score && a[j].id > a[j+1].id))
{
Student t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
int main()
{
int i, n=0,grade;
int mid;
LinkList list;
input(&list); //录入数据,按照学号升序排序录入
Student a[list.nmb];
printf("请输入要排序的班级:");
scanf("%d", &grade);
for (i = 0; i < list.nmb; i++)
{
if (list.stu[i].grade == grade){
a[n++] = list.stu[i];
}
}
sort(a,n);
for (i = 0; i < n; i++)
{
showStu(a[i]);
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!