用c++编写函数void fun(int x, int* pp, int* n),它的功能是:求出x的偶数因子,并按从小到大的顺序放在pp所指向的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)。
时间: 2024-02-09 08:12:58 浏览: 205
好的,我可以帮你编写这个函数。以下是代码实现:
```c++
void fun(int x, int* pp, int* n) {
int count = 0;
for (int i = 2; i <= x; i += 2) {
if (x % i == 0) {
pp[count++] = i;
}
}
*n = count;
}
```
该函数使用了一个循环,从2开始,每次递增2,遍历x的所有偶数因子。如果当前的数是x的因子,则将其存储到pp数组中,并将计数器count加1。最后,将计数器的值通过形参n返回。注意,为了保证pp指向足够大的空间,调用该函数前需要确保pp数组已经分配了足够的空间。
相关问题
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中的元素。
阅读全文