学生成绩处理

来源:百度知道 编辑:UC知道 时间:2024/06/01 01:30:29
方法1:数组+排序
1. 定义一个数组a[11],用以存放学生的成绩。
2. 从键盘输入10个学生成绩
3. 采用冒泡法,将学生成绩按照从高到低进行排序,显示排序后的结果。
4. 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组,显示插入后的结果。
5. 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。显示反序后的结果。
方法2:函数+排序
1. 在函数中进行10个学生成绩从高到低排名 sort1(int a[]),显示结果。
2. 改进第一步的函数为sort2(int a[], int n),将数组中前n个学生成绩从进行高到低的排名,显示结果。
3. 改进第二步的函数为sort3(int a[], int n, char style),将n个学生成绩排序,排序方式根据函数的style参数进行,当style为 'a' 时按升序排序,style为 'd' 按降序排序。分别显示升序与降序结果。
4. 编写函数,insert(int a[], int x),将一个学生成绩x按照排序规律插入原学生成绩数组,显示插入后的结果。

时间问题我就帮你做方法①了 不知道你慢不慢意
void main()
{
int a[11]={ 50,20,60,56,40,30,45,75,80,90},i,j,t,data,sit; /*1*/
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<9;i++)
{
for (j=i+1;j<10;j++)
{
if (a[i]>a[j])
{ t=a[i];
a[i]=a[j];
a[j]= t;
}
}

}
for (i=0;i<10;i++)
printf("%d ",a[i]);

for(j=0;j<9;j++) /*2*/
for(i=0;i<9-j;i++)
if(a[i]<a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<=9;i++)
printf(" %d",a[i]); /*3*/
printf("\n qing cha ru shu zi:"); /*请插入数字*/
scanf("%d",&data); /*4*/
for(i=0;i<10;i++) /*5*/
if(data>a[i])
{sit=i;
break;}
printf("sit=%d ",sit);
for(i=10;i>sit;i--) /*6*/
a[i]=a[i-1];

a[sit]=data; /*7*/

for(i=0;i<11;i++)
printf(" %d",a[i]);