编写一个程序,由主函数和如下函数构成。 ⑴设计函数:input(),输入n个无序的整数存储在一个数组中; ⑵设计函数:sort(),用起泡法对数组中的n各数据从大到小排序; ⑶设计函数:search(),求m到n之间的所有素数。 int main() { input(); sort(h); search(); return 0; }
时间: 2024-02-15 14:06:09 浏览: 24
好的,我来为您编写一个符合要求的程序:
```
#include <stdio.h>
#define MAX_SIZE 100
int h[MAX_SIZE];
int n;
void input() {
printf("请输入数组长度n:");
scanf("%d", &n);
printf("请输入%d个整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &h[i]);
}
}
void sort() {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (h[j] < h[j + 1]) {
int temp = h[j];
h[j] = h[j + 1];
h[j + 1] = temp;
}
}
}
printf("排序后的数组为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", h[i]);
}
printf("\n");
}
int is_prime(int x) {
if (x < 2) {
return 0;
}
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) {
return 0;
}
}
return 1;
}
void search() {
int m, n;
printf("请输入m和n的值:");
scanf("%d %d", &m, &n);
printf("%d到%d之间的所有素数为:", m, n);
for (int i = m; i <= n; i++) {
if (is_prime(i)) {
printf("%d ", i);
}
}
}
int main() {
input();
sort();
search();
return 0;
}
```
在这个程序中,我们首先通过 `input()` 函数输入了一个长度为 `n` 的数组,并将数组存储在全局变量 `h` 中。然后,我们使用起泡法对数组进行排序,并输出排序后的数组。最后,我们通过 `search()` 函数找到了在 `m` 和 `n` 之间的所有素数。
需要注意的是,我们使用了 `is_prime()` 函数来判断一个数是否为素数。这个函数使用了简单的质数判断算法,即从 2 到 $\sqrt{x}$ 的所有数都不能整除 `x`,那么 `x` 就是素数。