请编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 例如,若 x 中的值为: 35,则有 4 个数符合要求,它们是: 1, 5, 7, 35
时间: 2023-06-24 22:06:22 浏览: 117
以下是函数fun的实现,其中使用了动态内存分配来存储结果数组pp:
```c
void fun(int x, int **pp, int *n) {
int cnt = 0;
for (int i = 1; i <= x; i += 2) {
if (x % i == 0) {
cnt++;
}
}
*n = cnt;
*pp = (int *)malloc(cnt * sizeof(int));
cnt = 0;
for (int i = 1; i <= x; i += 2) {
if (x % i == 0) {
(*pp)[cnt++] = i;
}
}
}
```
使用示例:
```c
int main() {
int x = 35;
int *pp, n;
fun(x, &pp, &n);
for (int i = 0; i < n; i++) {
printf("%d ", pp[i]);
}
free(pp); // 记得释放内存
return 0;
}
```
输出结果为:`1 5 7 35`。
相关问题
请编写函数fun,函数的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为:35,则有4个数符合要求,它们是:1,3,7,35。
以下是函数fun的实现,它可以求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
```cpp
void fun(int x, int pp[], int* n) {
int i, j = 0;
for (i = 1; i <= x; i++) {
if (x % i == 0 && i % 2 != 0) {
pp[j++] = i;
}
}
*n = j;
}
```
其中,x是形参,表示需要求出能整除x且不是偶数的各整数;pp是形参,表示将符合条件的整数按从小到大的顺序放在pp所指的数组中;n是形参,表示符合条件的整数的个数,通过指针返回。
例如,若x中的值为35,则有4个数符合要求,它们是1,3,7,35。
C++题目53:利用指针求偶数因子 编写函数void fun(int x, int* pp, int* n),它的功能是:求出x的偶数因子,并按从小到大的顺序放在pp所指向的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)。 【输入形式】 一个整数 【输出形式】 从小到大排列的偶数因子(空格分隔)
下面是题目53的C++代码实现:
```c++
#include <iostream>
using namespace std;
void fun(int x, int* pp, int* n) {
int cnt = 0;
for (int i = 2; i <= x; i += 2) {
if (x % i == 0) {
pp[cnt++] = i;
}
}
*n = cnt;
}
int main() {
int x;
cin >> x;
int pp[100]; // 假设足够大的空间
int n;
fun(x, pp, &n);
for (int i = 0; i < n; i++) {
cout << pp[i] << " ";
}
cout << endl;
return 0;
}
```
函数`fun`的实现思路是:从2开始遍历到x,每次增加2,如果x能被当前数整除,则把该数存入数组pp中,同时计数器cnt加1。最后,把cnt的值通过指针n返回。主函数中,先输入整数x,然后调用函数fun,得到偶数因子数组pp和因子个数n,最后输出数组pp中的元素。
阅读全文