c语言输入10个整数,将其中出现的素数首尾交换,即第一个素数与最后一个素数交换,第二个素数与倒数第二个素数交换......,非素数保持位置不变,输出交换以后的数组。 提示:定义函数用于判断数组元素是否是素数。
时间: 2024-12-24 08:17:48 浏览: 3
在C语言中,你可以按照以下步骤编写程序来实现这个功能:
1. 定义一个函数`isPrime`用于判断一个数是否为素数。这个函数通常会检查从2到该数的平方根是否有能整除它的数。如果都没有,那么它是素数。
```c
#include <stdbool.h>
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
```
2. 主函数中,首先读入10个整数存入数组`arr`。
```c
#define SIZE 10
int arr[SIZE];
// 读取10个整数
for (int i = 0; i < SIZE; i++) {
scanf("%d", &arr[i]);
}
```
3. 创建两个指针`start`和`end`,分别指向数组的开始和结束,然后遍历数组找到所有的素数并交换它们的位置。
```c
int start = 0, end = SIZE - 1;
while (start < end && isPrime(arr[start])) {
start++;
}
while (start < end && isPrime(arr[end])) {
int temp = arr[start]; // 保存第一个素数
arr[start] = arr[end];
arr[end] = temp;
end--;
}
```
4. 最后,打印出处理后的数组。
```c
printf("交换后的数组:");
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
```
完整代码如下:
```c
#include <stdbool.h>
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
int main() {
#define SIZE 10
int arr[SIZE];
// 读取10个整数
for (int i = 0; i < SIZE; i++) {
scanf("%d", &arr[i]);
}
int start = 0, end = SIZE - 1;
while (start < end && isPrime(arr[start])) {
start++;
}
while (start < end && isPrime(arr[end])) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
end--;
}
printf("交换后的数组:");
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
阅读全文