请用c语言编写下面题意的代码。任意输入20个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用选择法函数实现。主函数输入20正整数,调用素数函数,排序函数,输出排序后的素数。
时间: 2024-02-15 22:04:39 浏览: 54
以下你所需的代码:
```c
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
void selection_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
int main() {
int arr[20];
int primes[20];
int num_primes = 0;
printf("请输入20个正整数:\n");
for (int i = 0; i < 20; i++) {
scanf("%d", &arr[i]);
if (is_prime(arr[i])) {
primes[num_primes] = arr[i];
num_primes++;
}
}
selection_sort(primes, num_primes);
printf("排序后的素数为:\n");
for (int i = 0; i < num_primes; i++) {
printf("%d ", primes[i]);
}
printf("\n");
return 0;
}
```
该代码定义了两个函数:`is_prime` 和 `selection_sort`。`is_prime` 函数用于判断一个数是否为素数。`selection_sort` 函数用于使用选择排序算法对素数数组进行排序。
在 `main` 函数中,首先定义了两个数组:`arr` 用于存储输入的20个正整数,`primes` 用于存储找到的素数。`num_primes` 记录了找到的素数的数量。
接着,使用 `for` 循环遍历 `arr` 数组,如果当前数组元素是素数,则将其添加到 `primes` 数组中。同时,`num_primes` 加1。
随后,调用 `selection_sort` 函数对 `primes` 数组进行排序。
最后,使用 `for` 循环遍历 `primes` 数组,输出排序后的素数。
阅读全文