用C语言实现:⑴ 编写函数int rev_prime(int m,int n,int x[]),求区间m到n中的所有整数的反序数,将反序数中的素数存入数组x中,函数的返回值是素数的个数。⑵ 编写main函数,接收从键盘输入的m和n的值,调用函数reverse求m到n之间的所有元素的反序数中的素数,将结果数组按以下要求写到输出文件“out.txt”中。
时间: 2024-02-22 14:59:17 浏览: 82
C语言程序设计-编写函数fun,求任一整数m的n次方;.c
5星 · 资源好评率100%
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int is_prime(int num) { // 判断是否为素数
if (num < 2) {
return 0;
}
for(int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int reverse(int num) { // 求反序数
int res = 0;
while (num) {
res = res * 10 + num % 10;
num /= 10;
}
return res;
}
int rev_prime(int m, int n, int x[]) { // 求区间m到n中的所有整数的反序数中的素数
int count = 0;
for (int i = m; i <= n; i++) {
int rnum = reverse(i);
if (is_prime(rnum)) {
x[count++] = rnum;
}
}
return count;
}
int main() {
int m, n;
printf("请输入m和n的值:");
scanf("%d%d", &m, &n);
int x[n - m + 1]; // 结果数组
int count = rev_prime(m, n, x); // 调用函数求反序数中的素数
FILE *fp = fopen("out.txt", "w"); // 打开输出文件
if (fp == NULL) {
printf("无法打开文件!\n");
exit(1);
}
fprintf(fp, "区间[%d, %d]中反序数中的素数有:\n", m, n);
for (int i = 0; i < count; i++) {
fprintf(fp, "%d ", x[i]);
}
fclose(fp);
printf("结果已写入out.txt文件中!\n");
return 0;
}
```
注意事项:
1. 代码中使用了文件操作,需要在程序所在目录下创建一个名为“out.txt”的文件,用于输出结果。
2. 反序数中的素数存入的数组 `x` 需要动态申请内存,因此不能直接定义固定长度的数组。
阅读全文