生成10个1-10之间的随机数,不能雷同。用冒泡排序法从小到大排序,然后输出 。C++完成。怎么改错,谢谢

// 01.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include"iostream"
#include"time.h"
#include"stdlib.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int temp,array[10];
int srand();
int i;
for(i=0;i<10;i++)//生成10个1-10之间的随机数并赋给数组array[]
array[i]=srand();
int j;
for(j=0;j<9;j++)//用冒泡排序法对数组元素排序
{
int k;
for(k=1;k<10-j;k++)
if(array[k]>=array[k+1])
{
temp=array[k];
array[k]=array[k+1];
array[k+1]=temp;
}
if(array[j]>=array[k])
{
temp=array[j];
array[j]=array[k];
array[k]=temp;
}
};
for(j=0;j<10;j++)
cout<<array[j]<<endl;//输出排序后的数组
int srand()//定义声称随机数函数
{
int t;
srand((int)time(0));
t=rand()%10+1;
return t;
}
return 0;
}
注:我希望的在那个源程序的基础上适当改错,不要重新编写。谢谢

看看这个可以不!
#include <iostream>
#include <ctime>
#include "stdlib.h"
using namespace std;
int main(int argc, char* argv[])
{
int temp,array[10];
int i;
srand((unsigned int)time(0));
bool unique=false;
for(i=0;i<10;)
{
int num=0;
num=static_cast<int>(1+(10*static_cast<long>(rand()))/(RAND_MAX+1));//生成随机数
for(size_t m=0;m<=i;m++)
{
if(array[m]==num) //判断是否有相同的数字
{

unique=true;
break;
}

}
if(unique==true) //如果有相同,重新生成
{
i=i;
}
else //如果没有,写入数组,i加1,继续循环
{
array[i]=num;
i++;

}
unique=false;
}

for(int j=0;j<=9;j++) //用冒泡排序法对数组元素排序
{
for(int k=j;k<=9;k++)
{
if(array[j]>=array[k])
{
temp=array[j];
array[j]=array[k];
array[k]=temp;
}
}
}
for(size_t n=0;n<=9;n++) //输出完成排序的随机数
{
cout<<array[n]<<" ";
}
cout<<endl;
return 0;
}
温馨提示:答案为网友推荐,仅供参考
相似回答