用c语言编写程序,先输入一组学生成绩,用-1表示输入结束,然后输入某一区间值,并查找该区间内的所有学生

成绩

#include<stdio.h>

#include<stdlib.h>

#define N 20

typedef struct Student

{

char name[10];

int no; //学号

int grade; //成绩

}Student;

void Input(Student *stud ,int n);

int main(void)

{

int low, high;

printf("请输入成绩区间low-high\n");

scanf("%d %d",&low,&high);

Student stud[N];

Input(stud, N);

for(int i=0;i<N;i++)

{

if(stud[i].grade<=high && stud[i].grade>=low )

printf("%d\n",stud[i].no);

}

return 0;

}

void Input(Student *stud ,int n)

{

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

{

printf("input the %dth student's grade(form:no grade):",i);

scanf("%d %d",&stud[i].no,&stud[i].grade);

}

}//你要是想输出学生的姓名,就在此输入学生的姓名

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-08
你的程序要求有两个,第一个排序,第二个查找,所以你结合这两个算法就能搞定了。即先对输入的数据进行排序,因为你无法保证输入的学生成绩都是有顺序的,所以先要排序,然后就是查找了,可以采用二分法查找,实现简单也比较快一些。当然如果学生数在10个以内,直接线性查找也是不错的,差别不会太大。