1) 定义一个数组a[11],用以存放学生的成绩。 2) 从键盘输入10个学生成绩 3) 采用冒泡

1) 定义一个数组a[11],用以存放学生的成绩。
2) 从键盘输入10个学生成绩
3) 采用冒泡法,将学生成绩按照从高到低进行排序
4) 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组
5) 将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
6) 将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求

#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");

*/
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-24
#include <stdio.h>

void printarr(int *arr, int n);

int main()
{
int i, j, temp;
int a[11] = {0};

for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printarr(a, 10);
for (i = 0; i < 9; i++)
for (j = 9; j > i; j--)
if (a[j] > a[j - 1])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
printarr(a, 10);            //排序后的结果
scanf("%d", &temp);
for (i = 0; i < 10; i++)
if (temp < a[i] && temp > a[i + 1])
{
for (j = 10; j > i + 1; j--)
a[j] = a[j - 1];
a[i + 1] = temp;
break;
}
printarr(a, 11);        //插入后的结果
for (i = 0; i < 6; i++)
{
temp = a[i];
a[i] = a[10 - i];
a[10 - i] = temp;
}
printarr(a, 11);        //反序后的结果
return 0;

}

void printarr(int *arr, int n)
{
int i;

for (i = 0; i < n; i++)
printf("%d ", arr[i]);
putchar('\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]);
}