要求:
(1)定义一个数组a[11],用以存放学生的成绩,从键盘输入10个学生成绩,采用冒泡法,将学生成绩按照从高到低进行排序。
(2)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组,将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。
(3)画出程序流程图,说明程序设计的算法,附主要程序段。(流程图要求使用visio画图)
如果全都解决了,我可以考虑再加分!很急!!先跪谢啊!!!
以下是C/c++编写的代码,希望能帮你解决好问题
#include<stdio.h>
void sort(float a[],int n)
{
float k=0;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
}
void insert (float a[])
{
printf("请输入一个成绩\n");
float i;
scanf("%f",&i);
int k;
for( k=9;k>0;k--)
{
if(a[k]<i) a[k+1]=a[k];
else
{
a[k+1]=i;
return;
}
}
if(k==0)
a[0]=i;
}
void changeturn(float a[],int n)
{
float k;
for(int i=0;i<n/2;i++)
{
k=a[i];
a[i]=a[n-1-i];
a[n-1-i]=k;
}
}
void main()
{
printf("请输入10个成绩\n");
float a[11];
for(int i=0;i<10;i++)
{
scanf("%f",&a[i]);
}
printf("原始数据为:\n");
for( i=0;i<10;i++)
{
printf("%.2f ",a[i]);
}
printf("排序后为:\n");
sort(a,10);
for( i=0;i<10;i++)
{
printf("%.2f ",a[i]);
}
insert(a);
printf("插入一数据后为:\n");
for( i=0;i<11;i++)
{
printf("%.2f ",a[i]);
}
printf("倒叙后为:\n");
changeturn(a,11);
for( i=0;i<11;i++)
{
printf("%.2f ",a[i]);
}
printf("\n");
}