c语言设计题?

主函数main()中字符串s为测试数据,字符串s由若干十进
制形式的数字字符子串和其他字符组成,将字符串s中十进
制形式的数字字符子串转换成十进制整数存入数组,并把
数组中的素数提取放入另一数组并按升序排列,函数返回
数组中素数的个数。

第1个回答  2020-02-11
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>

int isprime (long long int n) {
if (n == 2 || n == 3) return 1;
if (n < 2 || n % 2 == 0) return 0;
for (int long long i = 2; i * i <= n; i++)
if (n % i == 0) return 0;
return 1;
}

int cmp (const void *a, const void *b) {
return * ((long long *)a) - * ((long long *)b);
}

int main() {
char s[10001];
long long int a[10000], b[10000], temp = 0;
int c = 0, d = 0;
fgets (s, 10000, stdin);

for (int i = 0; i <= strlen (s); i++) {
if (isdigit (s[i])) {
temp = 10 * temp + (s[i] - '0');
} else if (i > 0 && isdigit (s[i - 1])) {
a[c++] = temp;
if (isprime (temp))
b[d++] = temp;
temp = 0;
}
}
printf("数组:");
for (int i = 0; i < c; i++)
printf ("%lld ", a[i]);
putchar ('\n');
qsort (b, d, sizeof (long long), cmp);
printf("素数:");
for (int i = 0; i < d; i++)
printf ("%lld ", b[i]);
putchar ('\n');
printf ("素数个数:%d", d);
return 0;
}本回答被提问者采纳
相似回答