C Programs | IT Developer
IT Developer

C Programs



Share with a Friend

Structures in C

Sort students by marks

C Program: Sort students by marks

C

#include <stdio.h>

 

// Define structure for student

struct Student {

    int rollNo;

    char name[100];

    float marks;

};

 

int main() {

    struct Student s[100], temp;

    int n, i, j;

 

    printf("Enter number of students: ");

    scanf("%d", &n);

    getchar(); // clear input buffer

 

    // Input student details

    for (i = 0; i < n; i++) {

        printf("\nEnter details for Student %d:\n", i + 1);

        printf("Roll No: ");

        scanf("%d", &s[i].rollNo);

        getchar();

 

        printf("Name: ");

        gets(s[i].name);

 

        printf("Marks: ");

        scanf("%f", &s[i].marks);

    }

 

    // Sort students by marks in descending order (highest first)

    for (i = 0; i < n - 1; i++) {

        for (j = i + 1; j < n; j++) {

            if (s[i].marks < s[j].marks) {

                temp = s[i];

                s[i] = s[j];

                s[j] = temp;

            }

        }

    }

 

    // Display sorted list

    printf("\n===== Students Sorted by Marks (Descending) =====\n");

    for (i = 0; i < n; i++) {

        printf("\nRoll No: %d", s[i].rollNo);

        printf("\nName   : %s", s[i].name);

        printf("\nMarks  : %.2f\n", s[i].marks);

    }

 

    return 0;

}

Output

 
OUTPUT :
Enter number of students: 3

Enter details for Student 1:
Roll No: 101
Name: Riya
Marks: 78.5

Enter details for Student 2:
Roll No: 102
Name: Aman
Marks: 88.2

Enter details for Student 3:
Roll No: 103
Name: Karan
Marks: 82.0

===== Students Sorted by Marks (Descending) =====

Roll No: 102
Name   : Aman
Marks  : 88.20

Roll No: 103
Name   : Karan
Marks  : 82.00

Roll No: 101
Name   : Riya
Marks  : 78.50

Explanation

Step

Description

struct Student

Defines fields for roll number, name, and marks.

Nested for loops

Used to compare marks and sort students in descending order.

temp variable

Temporarily holds a structure during swapping.

Output

Displays students sorted by their marks (highest to lowest).