用C语言 1.定义一个数组a[11],用以存放学生的成绩,2.从键盘输入10个学生成绩

3.采用冒泡法,将学生成绩按照从高到低进行排序
4.再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组
5.将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列

第1个回答  2012-06-10
#include<stdio.h>
#define N 11
main()
{
int i,j;
double sc[N],cj[N],t,m;//sc存放第一次输的成绩,cj反序存放成绩

for(i=0;i<N-1;i++)//从键盘上输入数,给sc赋值
{
printf("请输入第%d个学生的成绩",i+1);
scanf("%lf",&sc[i]);
}
printf("请再输入一个学生的成绩进行插入");
scanf("%lf",&m);

for(i=0;i<N-2;i++)//冒泡排序法
{
for(j=0;j<N-2-i;j++)
if(sc[j]<sc[j+1])
{
t=sc[j];
sc[j]=sc[j+1];
sc[j+1]=t;
}
}

printf("原数组排序后为:\n");
for(i=0;i<N-1;i++)
{
printf("%f ",sc[i]);
if((i+1)%4==0)//每行输出4个成绩
printf("\n");
}
printf("\n");

for(i=0;i<10;i++)//插入数据
if(sc[i]>m)
cj[i]=sc[i];
else
{
cj[i]=m;
break;
}
for(j=i;j<11;j++)
cj[j+1]=sc[j];

printf("反序数组排序后为:\n");
for(i=0;i<N-1;i++)
{
printf("%f ",cj[i]);
if((i+1)%4==0)
printf("\n");
}
printf("\n");
/*如果说想反序后还存入原来数组的话,则把上面的程序段改为下面的
for(i=0;i<N;i++)
sc[i]=cj[i];
for(i=0;i<N-1;i++)
{
printf("%f ",sc[i]);
if((i+1)%4==0)
printf("\n");
}
printf("\n");

*/
}本回答被网友采纳
第2个回答  2012-06-07
#include <stdio.h>
void main()
{
int i,j;
float a[11],b[11],temp,m;
scanf("%f",&m);
for(i=0;i<10;i++)
{
scanf("%f",&a[i]);
//fflush(stdin);
}
for(j=0;j<10;j++)
{
for(i=9;i>j;i--)
if(a[i]>a[i-1])
{
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}
}
for(i=0;i<10;i++)
{
if(a[i]>m)
b[i]=a[i];
else
{
b[i]=m;
m=a[i];
}
}
b[10]=m;
for(i=0;i<11;i++)
a[i]=b[10-i];
for(i=0;i<11;i++)
printf("%3.1f\n",a[i]);
}
第3个回答  2012-06-07
‘’ 、