用C语言实现学生成绩排名,具体要求如下:
(1) 定义一个数组a[11],用以存放学生的成绩。
(2) 从键盘输入10个学生成绩
(3) 采用冒泡法,将学生成绩按照从高到低进行排序
(4) 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组
(5) 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
(6) 将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求用C语言实现学生成绩排名,具体要求如下:
(1) 定义一个数组a[11],用以存放学生的成绩。
(2) 从键盘输入10个学生成绩
(3) 采用冒泡法,将学生成绩按照从高到低进行排序
(4) 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组
(5) 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
(6) 将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求#include <iostream>
using namespace std;
void Input (int a[],int n);
void Output (int a[],int n);
void Find (int a[],int i);
void Sort (int a[],int n);
void Insert (int a[],int x);
void Delete (int a[],int x);
int n;
void main()
{
int a[100];
int i,x;
cout<<"how many number you want to enter?"<<endl;
cin>>n; //输入数组存放元素个数
Input (a,n); //输入n个数元素
cout<<endl<<"The original numbers:"<<endl;
Output (a,n); //输出n个数元素
cout<<"You want to output number i:"<<endl;
cin>>i; //输入要查找的元素位置
Find (a,i); //输出第i个元素值
Sort (a,n); //对数组排序
cout<<"The number you want to insert:"<<endl;
cin>>x; //输入插入的元素值
Insert (a,x); //插入x,并保持有序
n++; //数组元素增加
cout<<"The new sorted number is:"<<endl;
Output (a,n); //输出
cout<<"The number you want to delete:"<<endl;
cin>>x; //输入删除的元素值
Delete (a,x); //删除x,并保持有序
n--; //数组元素减少
cout<<"The new sorted number is:"<<endl;
Output (a,n); //输出
}
void Input (int a[],int n)
{
int i;
cout<<"enter data:"<<endl;
for(i=0;i<n;i++) //输入元素
{
cin>>a[i];
}
}
void Output (int a[],int n)
{
int i;
for(i=0;i<n;i++)
cout<<a[i]<<" "; //按输入时的顺序输出元素
cout<<endl;
}
void Find (int a[],int i)
{
i--;
cout<<"The number is:"<<a[i]<<endl; //输出指定元素
}
void Sort (int a[],int n)
{
int i,j,min,temp;
for(i=0;i<n;i++) //把输入元素排序
{
min=i;
for(j=i+1;j<n;j++)
if(a[min]>a[j])min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
cout<<endl<<"The sorted numbers:"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" "; //把经过排序后的元素按顺序输出
cout<<endl;
}
void Insert (int a[],int x)
{
int i,j;
if(x>=a[n-1]) //把输入的新元素插入经排序后的元素中
a[n]=x;
for(i=0;i<n;i++)
{
if(a[i]>x)
{
for(j=n;j>i;j--)
a[j]=a[j-1];
a[i]=x;
break; //插入新元素并排序后跳出循环
}
}
}
void Delete (int a[],int x)
{
int i,j;
for(i=0;i<n;i++) //查找并删除指定元素
if(x==a[i])
{
j=i;
for(j=i;j<(n-1);j++)
a[j]=a[j+1];
break; //删除指定元素后跳出循环
}
}