我的导师让我们负责编译一个代码,我们在C中制作一个选择排序代码,就像我在网上找到的那样,
#include <stdio.h>
int main()
{
int array[100], n, c, d, position, swap;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for ( c = 0 ; c < n ; c++ )
scanf("%d", &array[c]);
for ( c = 0 ; c < ( n - 1 ) ; c++ )
{
position = c;
for ( d = c + 1 ; d < n ; d++ )
{
if ( array[position] > array[d] )
position = d;
}
if ( position != c )
{
swap = array[c];
array[c] = array[position];
array[position] = swap;
}
}
printf("Sorted list in ascending order:\n");
for ( c = 0 ; c < n ; c++ )
printf("%d\n", array[c]);
return 0;
}
我们必须使用srand()
命令生成一组随机数字,而不是输入数字数组。
我现在已经待了大约4个小时了,我似乎无法得到它
在使用srand()
和rand()
答案 0 :(得分:0)
首先,srand()
用于为随机数生成器播种。您可以使用rand()
阅读本文以获取更多信息
in C, how does srand relate to rand function?
您需要使用srand()
为随机数生成器播种(以便我们在每次运行程序时获得不同的值)并使用rand()
生成数字。
而不是scanf()
,只需使用array[c] = rand() % 100 ;
(这会生成0到99之间的随机数,您可以将100更改为任何其他整数)。此代码可用作参考
#include <stdio.h>
#include<time.h> // for time()
#include<stdlib.h> // for rand()
int main()
{
srand(time(NULL)); // seeding the random number generator
int array[100], n, c, d, position, swap;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for ( c = 0 ; c < n ; c++ )
array[c]=rand()%100; // storing a random number between 0 and 100 ( Note that this might produce the same number more than once )
for ( c = 0 ; c < ( n - 1 ) ; c++ )
{
position = c;
for ( d = c + 1 ; d < n ; d++ )
{
if ( array[position] > array[d] )
position = d;
}
if ( position != c )
{
swap = array[c];
array[c] = array[position];
array[position] = swap;
}
}
printf("Sorted list in ascending order:\n");
for ( c = 0 ; c < n ; c++ )
printf("%d\n", array[c]);
return 0;
}
我也在添加来自@WhozCraig评论的链接,因为它会很有用