编写函数void fun(int x, int *pp, int *n),它的功能是:求出x的偶数因子,并按从小到大的顺序存放在pp所指的数组中,这些因子的个数通过形参n返回。如,若x中的值为24,则有6个数符合要求,它们是2、4、6、8、12、24。主函数中输入一个小于等于1000的正整数,调用fun函数之后按顺序输出该正整数的所有偶数因子。 输入提示:"Input number:" 输入格式:"%d" 输出格式:" %d"(注意:前面有一个空格。最后,输出完所有因子后还有一个回车) 程序运行示例: Input number:512↙ 2 4 8 16 32 64 128 256 512
时间: 2024-02-25 21:57:00 浏览: 144
好的,以下是对应的C语言函数实现:
```c
#include <stdio.h>
void fun(int x, int *pp, int *n) {
int i;
*n = 0;
for (i = 2; i <= x; i += 2) {
if (x % i == 0) {
pp[(*n)++] = i;
}
}
}
int main() {
int x, pp[1000], n, i;
printf("Input number:");
scanf("%d", &x);
fun(x, pp, &n);
for (i = 0; i < n; i++) {
printf(" %d", pp[i]);
}
printf("\n");
return 0;
}
```
你可以将这段代码复制到C语言环境中编译运行,进行测试。记得输入一个小于等于1000的正整数,看看输出结果是否符合要求。
相关问题
用c++编写函数void fun(int x, int* pp, int* n),它的功能是:求出x的偶数因子,并按从小到大的顺序放在pp所指向的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)。
好的,我可以帮你编写这个函数。以下是代码实现:
```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中的元素。
阅读全文