用c语言解决:随机产生10个50以内的正整数,从大到小排序,并显示排序前和排序后的结果
时间: 2023-05-31 17:08:11 浏览: 1031
好的,这是一个关于C语言的问题,我可以帮您解答。
以下是C语言代码,可以随机生成10个50以内的正整数,并对它们进行从大到小的排序。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 比较函数,用于qsort函数
int cmp(const void *a, const void *b) {
return *(int *)b - *(int *)a; // 从大到小排序
}
int main() {
int a[10];
srand((unsigned)time(NULL)); // 设置随机种子
// 随机生成10个50以内的正整数
printf("生成的随机数为:");
for (int i = 0; i < 10; i++) {
a[i] = rand() % 50 + 1; // 随机数取值范围为[1, 50]
printf("%d ", a[i]);
}
putchar('\n');
// 对数组进行排序
qsort(a, 10, sizeof(int), cmp);
// 显示排序后的结果
printf("排序后的结果为:");
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}
```
这段代码中,我们使用了rand函数来生成随机数,它的取值范围为[0, RAND_MAX],因此我们需要通过取余运算得到50以内的正整数。我们还使用了qsort函数对数组进行排序,这是C标准库中提供的一个快速排序函数,可以根据我们自定义的比较函数对数组进行排序。最后,我们使用printf函数来显示排序前和排序后的结果。
阅读全文