(第13列)C语言:结构体数组------学生成绩排名

简介: (第13列)C语言:结构体数组------学生成绩排名

题目:有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的成绩。


要实现下面的功能:

话不多说!直接代码见真知!



第一步:定义和声明

//声明结构体类型
struct student
{
  char name[20];
  int num;
  float score;
};
//输入
printf("请输入学生数:");
scanf("%d",&n);
//定义结构体数组,存放键盘输入的数据
struct student stu[n];
//定义结构体变量middle,用作交换时的中间变量
struct student middle; 


第二步:输入数据

for(i=0;i<n;i++)
  {
    printf("请输入学生姓名:");
    scanf("%s",&stu[i].name);
    printf("请输入学生学号:");
    scanf("%d",&stu[i].num);
    printf("请输入学生成绩:");
    scanf("%f",&stu[i].score);
        printf("\n");
  }


第三步:以学生成绩来比较进行排名

//利用交换排序法进行排序
for(i=0;i<n-1;i++)
  {
    for(j=i+1;j<n;j++)
    {
            //利用成绩进行比较
      if(stu[i].score<stu[j].score)
      {
                //利用中间变量进行交换
        middle=stu[i];
        stu[i]=stu[j];
        stu[j]=middle;
      }
    }
  }


第四步:输出

printf("成绩排名为:\n");
  for(i=0;i<n;i++)
  {
        //读取结构体中各个部分
    printf("\t\t%s\t%d\t%0.1f\n",stu[i].name,stu[i].num,stu[i].score);
  }


完整代码:

#include<stdio.h>
struct student
{
  char name[20];
  int num;
  float score;
};
int main()
{
  int n,i,j;
  printf("请输入学生数:");
  scanf("%d",&n);
  struct student stu[n];
  struct student middle; 
  printf("\n");
  for(i=0;i<n;i++)
  {
    printf("请输入学生姓名:");
    scanf("%s",&stu[i].name);
    printf("请输入学生学号:");
    scanf("%d",&stu[i].num);
    printf("请输入学生成绩:");
    scanf("%f",&stu[i].score);
        printf("\n");
  }
  for(i=0;i<n-1;i++)
  {
    for(j=i+1;j<n;j++)
    {
      if(stu[i].score<stu[j].score)
      {
        middle=stu[i];
        stu[i]=stu[j];
        stu[j]=middle;
      }
    }
  }
  printf("成绩排名为:\n");
  for(i=0;i<n;i++)
  {
    printf("\t\t%s\t%d\t%0.1f\n",stu[i].name,stu[i].num,stu[i].score);
  }
  return 0; 
} 


相关文章
|
17天前
|
程序员 C语言
【C语言】初步认识结构体
【C语言】初步认识结构体
15 0
|
17天前
|
存储 编译器 C语言
C语言之数组
C语言之数组
24 0
|
18天前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
1月前
|
C语言
C语言结构体内存对齐
C语言结构体内存对齐
|
2天前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
2天前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
4天前
|
存储 编译器 程序员
C语言:自定义类型 - 结构体 & 联合体 & 枚举
C语言:自定义类型 - 结构体 & 联合体 & 枚举
10 2
|
7天前
|
机器学习/深度学习 C语言
C语言三维数组的创建
该代码片段展示了如何在C语言中创建一个动态的3D数组。由于`n`在编译时未知,不能直接声明为`int f[n][n][n]`。正确的方法是使用`malloc`进行动态内存分配。首先分配`n`个`int **`,然后对每一层分配`n`个`int *`,最后每个元素分配`n`个`int`。之后可以使用这个3D数组,并在完成后正确释放内存。
10 2
|
7天前
|
存储 编译器 C语言
[C语言]自定义类型(结构体~枚举~联合体)
[C语言]自定义类型(结构体~枚举~联合体)
|
13天前
|
存储 算法 程序员
【C言专栏】C 语言结构体的应用与实践
【4月更文挑战第30天】C语言中的结构体是自定义数据类型的关键,它组合不同类型的數據以创建新类型,尤其适合处理复杂对象如学生信息。通过定义结构体如`struct Student`,包含名字、学号和成绩,可以方便地实例化和访问成员。结构体在链表实现、函数参数传递和数组中都有广泛应用,如表示链表节点和处理批量数据。理解并熟练运用结构体对于C语言编程至关重要,能提升代码效率和可读性。