跪求!!定义数组冒泡法排序!!!!!内祥~!

要求:
(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");

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-04
不知道你需要什么语言编写的,我这是用的C#编写的一个控制台程序,与其他语言也只是语法不同,希望对你有帮助
static void Main(string[] args)
{
string str = Console.ReadLine();
string[] strs = str.Split(',');
int[] nums = new int[strs.Length];//这里是按用户自己输入的方式,如果你是需要定义11的数组可以修改为不让用户输入
for (int i = 0; i < nums.Length; i++)
{
nums[i] = int.Parse(strs[i]);
}
nums = Sorting(nums);//调用冒泡排序方法
for (int i = (nums.Length - 1); i >= 0; i--)
{
Console.WriteLine(nums[i]);
}
Console.ReadKey();
}

///冒泡排序法(降序排序)
public static int[] Sorting(int[] nums)
{
int[] sizes = new int[nums.Length];
for (int i = 0; i < nums.Length; i++)
{
int size = 0;
for (int j = 0; j < nums.Length - i - 1; j++)
{
if (nums[j] > nums[j + 1])
{
size = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = size;
}
else
{
size = nums[j + 1];
}
}
if (i == nums.Length - 1)
{
size = nums[0];
}
sizes[i] = size;
}
return sizes;
}本回答被提问者采纳
第2个回答  2011-07-04
VB6代码:
For r= 0 To 11
For i= r To 11
If a(i)>a(r) then
temp=a(i)
a(i)=a(r)
a(r)=temp
End If
Next i
Next r
For i= 0 To 11
Print a(i)
End If
相似回答