从键盘输入若干个学生的成绩,按要求完成功能。(10分)
题目内容:
从键盘输入若干个(不超过10个)学生的百分制成绩,当输入成绩为负值时,则表示输入结束。
具体要求完成的功能如下:
1)按成绩高低排序,输出排序后的成绩;
2)统计并输出不及格成绩、人数;
3)输出最高分、最低分。
输入格式:
输入若干个分数,用空格分隔,如果输入的分数<0,则结束输入;
如果输入的分数个数超过10个,则只处理前10个成绩。
输出格式:
分三行输出,即,
第1行从高到低输出排序后的成绩,数据之间用一个空格分隔,行末无空格;
第2行输出不及格的成绩(从高到低的顺序)、不及格的人数,行末无空格。
第3行输出最高分、最低分,两数之间有一个空格,行末无空格。
输入样例:
85 55 90 75 88 70 65 45 -1
输出样例:
90 88 85 75 70 65 55 45
55 45 2
90 45
根据题目中信息所示:仅输入一科目成绩;人数不作为参数输入;
现在假设:及格线为60分(题目未明确给出)
#include<stdio.h>
//#include< cstring>
//#include<algorithm>
typedef struct {
int grade;
}student;
//选择排序
void selectSort(student stu[10],int n){
for(int i=0;i<=n;i++)
{int k=i;
for(int j=k+1;j<=n;j++){
if(stu[j].grade>stu[k].grade)
{k=j;
}}
int temp=stu[i].grade;
stu[i].grade=stu[k].grade;
stu[k].grade=temp;}}
//数据输出
void display(student stu[10],int n)
{
for(int j=0;j<n;++j)
printf("%d ",stu[j].grade);
printf("\n");}
//数据最大值与最小值
void poll_values(student stu[2],int n){
printf("%d %d",stu[0].grade,stu[n].grade);
printf("\n");
}
int main(){
student stu[10];
student fail[10];
student poll[2];
int n=0;//总人数
int m=0;//不及格人数
while(n<10){
scanf("%d",&stu[n].grade);
if(stu[n].grade<0){
break;
}
++n;}
selectSort(stu,n);
//--------------------------------------
for(int i=0;i<n;i++)
if(stu[i].grade<60){
fail[m]=stu[i];
++m;}
selectSort(fail,m);
display(stu,n);
display(fail,m);
poll[0]=stu[0];
poll[1]=stu[n-1];
display(poll,2);
//poll_values(stu,n)
return 0;
}
运行结果如下