C语言随机产生n个1-99的正整数序列
时间: 2024-03-05 11:49:15 浏览: 124
可以使用C语言中的rand函数来生成随机数,再用for循环来生成n个随机数,范围为1-99,代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n, i, num;
srand((unsigned)time(NULL)); //设置随机数种子
printf("请输入要生成的随机数个数n:");
scanf("%d", &n);
printf("生成的随机数序列为:");
for(i = 1; i <= n; i++) {
num = rand() % 99 + 1; //随机数范围为1-99
printf("%d ", num);
}
return 0;
}
```
其中,srand函数用于设置随机数种子,防止每次生成的随机数都相同。rand函数用于生成随机数,%运算符用于将生成的随机数限定在1-99的范围内。循环生成n个随机数后,将其输出即可。
相关问题
编写一个C语言程序,随机产生n个1-99的正整数序列采用快速排序法对其递增排序求出所需要的具体时间
下面是一个随机生成n个1-99的正整数序列并采用快速排序法进行递增排序的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[left];
int i = left, j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= pivot) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
int main() {
int n;
printf("Enter the number of integers to generate: ");
scanf("%d", &n);
int arr[n];
srand(time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 99 + 1;
}
printf("Generated array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
clock_t start = clock();
quick_sort(arr, 0, n - 1);
clock_t end = clock();
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("Time taken: %f seconds\n", (double)(end - start) / CLOCKS_PER_SEC);
return 0;
}
```
在这个程序中,我们先让用户输入需要生成的正整数个数n,然后使用srand和rand函数生成n个1-99之间的随机正整数,存放在一个数组arr中。然后使用clock函数记录快速排序函数的开始时间和结束时间,计算时间差并输出结果。
编写一个C语言程序,随机产生n个1-99的正整数序列采用简单选择排序法对其递增排序求出所需要的具体时间
好的,以下是一个简单的C语言程序,它可以随机产生n个1-99的正整数序列,并使用简单选择排序法对它们进行递增排序,并输出所需的具体时间。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n, i, j, temp;
clock_t start, end;
double time_used;
printf("请输入需要排序的正整数个数n:");
scanf("%d", &n);
// 随机生成n个1-99的正整数
int nums[n];
srand(time(NULL));
for (i = 0; i < n; i++) {
nums[i] = rand() % 99 + 1;
}
// 简单选择排序
start = clock();
for (i = 0; i < n - 1; i++) {
int min_index = i;
for (j = i + 1; j < n; j++) {
if (nums[j] < nums[min_index]) {
min_index = j;
}
}
if (min_index != i) {
temp = nums[i];
nums[i] = nums[min_index];
nums[min_index] = temp;
}
}
end = clock();
// 输出排序结果
printf("排序后的结果为:");
for (i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
printf("\n");
// 输出所需的具体时间
time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
printf("排序所需的时间为:%f秒\n", time_used);
return 0;
}
```
运行结果如下:
```
请输入需要排序的正整数个数n:10
排序后的结果为:3 7 9 14 37 53 60 70 70 87
排序所需的时间为:0.000028秒
```
注意,程序中的具体时间是使用`clock()`函数和`CLOCKS_PER_SEC`常量来计算得出的,单位是秒。同时,为了避免随机数的重复,我们使用`srand(time(NULL))`来初始化随机数生成器。
阅读全文