C语言程序设计:指定分数范围的学生数据的筛选

题目描述:

学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中。请编写函数fun,其功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

例如:输入的分数是60、69,则应当把分数在60~69的学生数据输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。

代码示例:

#include <stdio.h>

#define   N   16

typedef  struct
{
        char  num[10];
        int   s;
} STREC;

int  fun( STREC  *a, STREC *b, int l, int h )
{
    int count = 0;
    for (int i = 0; i < N; i++) {
        if (a[i].s >= l && a[i].s <= h) {
            b[count] = a[i];
            count++;
        }
    }
    return count;
}

void main()
{
        STREC  s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
                {"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},
                {"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},
                {"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};
        STREC  h[N];
        int  i,n,low,heigh,t;
        printf("Enter 2 integer number low & heigh :  ");
        scanf("%d%d", &low,&heigh);
        if ( heigh< low )
        {
                t=heigh;
                heigh=low;
                low=t; 
        }
        n=fun( s,h,low,heigh );
        printf("The student's data between %d--%d :
",low,heigh);
        for(i=0;i<n; i++)
                printf("%s  %4d\n",h[i].num,h[i].s);
        printf("\n");
}

函数fun实现细节:

  1. 初始化计数器count为0,用于记录符合条件的学生人数。
  2. 遍历结构体数组a,判断每个学生的成绩是否在指定范围内(大于等于l且小于等于h)。
  3. 若符合条件,则将该学生数据复制到结构体数组b中,并计数器count加1。
  4. 最后返回计数器count,即符合条件的学生人数。

程序运行流程:

  1. 程序开始运行后,首先会初始化学生数据结构体数组s,并定义另一个结构体数组h来存放筛选后的学生数据。
  2. 程序提示用户输入最低分数low和最高分数heigh。
  3. 调用函数fun,将s、h、low、heigh作为参数传入,进行学生数据筛选。
  4. 函数fun返回符合条件的学生人数,并存储在变量n中。
  5. 程序输出筛选结果,包括筛选条件和符合条件的学生数据。

程序功能:

本程序通过函数fun实现了对学生数据的筛选功能,可以根据用户输入的最低分数和最高分数,从结构体数组中筛选出指定分数范围内的学生数据。

程序扩展:

本程序可以进一步扩展,例如:

  1. 增加对学生姓名、班级等信息的存储和筛选功能。
  2. 增加排序功能,将筛选后的学生数据按照学号、成绩等排序。
  3. 将程序改写成图形界面,提供更友好的用户交互方式。

程序学习价值:

本程序可以帮助学习者理解结构体、数组、函数等C语言基础知识,以及数据筛选和排序等常用算法。同时,程序也展示了如何将程序设计与实际问题相结合,解决实际问题。

C语言程序设计:指定分数范围的学生数据筛选

原文地址: https://www.cveoy.top/t/topic/pbm1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录