1、题目
学生的记录由姓名和成绩组成且在主函数中通过结构体数组初始化,无需输入。请编写函数实现把输入的指定分数范围内的学生通过结构体指针保存数据并输出。
要求:
- 使用结构体:
typedef struct Student
{
char name[20];
int score;
}Stu;
- 给定原始12位学生数据:
{"HC105",85},{"HC103",76},{"HC102",69},{"HC104",85},
{"HC101",96},{"HC107",72},{"HC108",64},{"HC106",87},
{"HC115",85},{"HC113",94},{"HC112",64},{"HC114",91}
- 使用子函数:void StructSearch(Stu *a, Stu *b, int low, int high ,int n,int *m)
输入格式: 输入两个分数
输出格式: 把在分数范围的学生信息输出
样例:
输入:75,86
输出:
HC105,85
HC103,76
HC104,85
HC115,85
2、完整代码
#include <stdio.h>
#define N 12
typedef struct Student
{
char name[20];
int score;
}Stu;
int StructSearch(Stu* a, Stu* b, int low, int high, int n, int* m)
{
int i, j = 0;
for (i = 0; i < n; i++)
{
if (a[i].score >= low && a[i].score <= high)
{
b[j++] = a[i];
}
}
m = j;
}
int main()
{
struct Student s[N] = { {"HC105",85},{"HC103",76},{"HC102",69},{"HC104",85},
{"HC101",96},{"HC107",72},{"HC108",64},{"HC106",87},
{"HC115",85},{"HC113",94},{"HC112",64},{"HC114",91} };
struct Student h[N];
int i, j, n, low, high, t;
scanf("%d,%d", &low, &high);
n = StructSearch(s, h, low, high, 12, &n);
for (i = 0; i < n; i++)
printf("%s,%d\n", h[i].name, h[i].score);
}