用随机函数产生20个1000以内整数存入数组中,用冒泡法将它们从大到小排序后输出。(编程题)

如题所述

我用C代码实现的,你直接把代码拷贝到VC/VS上即可。
我把随机数产生、冒泡排序、显示函数 都分别封装成了函数,注释写得比较清楚

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void BubbleSort(int *p);
void display(int *p);
void Random(int *p);

int main()
{
int arr[20] = {0};

Random(arr); //产生20个随机数,并将其存入数组arr中
BubbleSort(arr); //利用冒泡算法对数组arr中20个整数进行排序
display(arr); //显示降序排序后的整数

return 0;
}

/*函数描述:产生20个1000以内的随机数 */
/*参数: p:指向数组的首地址· */
/*返回值: 无 */
void Random(int *p)
{
int i = 0;

srand((unsigned)time(NULL));
p[0] = rand() % 1000 ; //将产生的随机数限制在1000以内

for(i=1;i<20;i++)
{
Lab: p[i] = rand() % 1000; //将产生的随机数限制在1000以内
if (p[i] == p[i-1]) //判断这次产生的随机数是否和前次相等
{
goto Lab;
}
}
}

/*函数描述:将P指向的20个整数按从大到小排序 */
/*参数: p:指向待排序数组的首地址 · */
/*返回值: 无 */
/*算法: 冒泡算法 */
void BubbleSort(int *p)
{
int temp = 0;
int i = 0,j = 0,k = 0;
for(i = 19;i > 0;i--) //比较19轮
{
for(k = 0,j = i; k < j; k++) //每轮比较次数比上一轮少一次
{
if(p[k] < p[k+1]) //(关键:比较、交换)如果前一个数大于后一个,则交换
{
temp = p[k];
p[k] = p[k+1];
p[k+1] = temp;
}
}
}
}

/*函数描述:显示p所指向的内容 */
/*参数: p:指向待显示数组的首地址· */
/*返回值: 无 */
void display(int *p)
{
int i = 0;
for(i = 0; i < 20; i++)
{
printf("%d ",p[i]);
}
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-16
这是要求用什么语言实现呢?