c语言 题目内容:输入10个正整数到a数组中,对a[10]数组中的素数升序排序。 输入格式:在一行中输入10个用英文逗号,隔开的正整数。 输出格式:在一行中输出升序的素数序列,每个数之间用英文逗号,隔开,末尾没有多余的空格。 输入样例:10,3,1,5,4,8,7,2,9,11 输出样例:2,3,5,7,11 输入样例:16,12,1,6,4,8,14,18,24,21
时间: 2023-07-27 12:29:10 浏览: 69
以下是C语言代码实现:
```c
#include <stdio.h>
int is_prime(int n) { // 判断素数
if (n < 2) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
void sort(int a[], int n) { // 冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main() {
int a[10];
int cnt = 0; // 记录素数个数
for (int i = 0; i < 10; i++) {
scanf("%d,", &a[i]);
if (is_prime(a[i])) cnt++; // 统计素数个数
}
int primes[cnt], idx = 0; // primes数组存储素数
for (int i = 0; i < 10; i++) {
if (is_prime(a[i])) {
primes[idx++] = a[i];
}
}
sort(primes, cnt);
for (int i = 0; i < cnt; i++) {
printf("%d", primes[i]);
if (i != cnt - 1) printf(",");
}
return 0;
}
```
思路:先判断每个输入的数是否为素数,统计素数的个数,然后将素数存储在一个新的数组中,并对新数组进行排序,最后输出排序后的素数序列。
阅读全文