题目要求利用一维数组保存系统随机产生的10个两位正整数,然后利用选择排序方法按照从小到大的次序排列并显示出来
我的代码:
using namespace std;
int main()
{
int arr[10],num;
for(int i=0;i<10;i++)
{
//srand((unsigned int)time(NULL));
srand(time(0));
int num = 10+rand()%100;
arr[i]=num;
}
for(int h = 0;h<10-1;h++)
{
for(int j = 0;j<10-h-1;j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for( int k = 0;k < 10;k++)
{
cout<<arr[k]<<endl;
}
return 0;
}
运行结果:
总是只能生成一个数 怎么解决啊 大佬们 真心求教
把srand放到循环外面只调用一次就可以了.
弄好了 谢谢您
在你的代码中,随机数生成的部分应该放在循环外面,以确保每次迭代都能够生成新的随机数。
cpp
Copy code
using namespace std;
int main()
{
int arr[10];
// 种子放在循环外面
srand(time(0));
for(int i = 0; i < 10; i++)
{
// 生成随机数并存入数组
int num = 10 + rand() % 90; // 生成范围为10到99的随机数
arr[i] = num;
}
// 选择排序
for(int h = 0; h < 10 - 1; h++)
{
for(int j = 0; j < 10 - h - 1; j++)
{
if(arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 显示排序后的数组
for(int k = 0; k < 10; k++)
{
cout << arr[k] << endl;
}
return 0;
}
这样就能够确保每次迭代都能够生成新的随机数了。