编写函数void fun (int x, int * pp, int *n)

它的功能是:求出x的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)。如,若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。
#include<stdio.h>
int main()
{ int fun(int x,int *pp,int *n);
int m,a[15],*n=0;
scanf("%d",&m);
printf("%d的偶数因子为:\n",m);
fun(m,a,n);
for(int i=0;i<*n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void fun(int x,int *pp,int *n)
{
int j;
for(j=2;j<=x;j=j+2)
if(x%j==0)
{
*pp++=j;
*n++;
}
请问哪里出错了

#include<stdio.h>
int main()
{
int fun(int x,int *pp);//1
int m,a[15],i,n=0;
scanf("%d",&m);
printf("%d的偶数因子为:\n",m);
n = fun(m,a);//2
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
int fun(int x,int *pp)//3
{
int j,n=0;
for(j=2;j<=x;j=j+2)
if(x%j==0)
{
*pp++=j;
n++;
}

return n;

}

追问

为什么我的不行呢

追答

1,定义返回int类型的函数int fun(int x,int *pp,int *n);,
与void fun(int x,int *pp,int *n)不匹配
2,n是指针,使用要申请空间
3,*n++;这与你实际用法不匹配,应该(*n)++;
请采纳

追问

#include
int main()
{
void fun (int x,int *pp, int *n);
int x,a[100],n,i;
scanf("%d",&x);
fun(x,a,&n);
printf("%d的偶数因子是 :\n",x);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void fun (int x,int *pp, int *n)
{
int i;
*n=0;
for(i=2;i<=x;i=i+2)
if(x%i==0)
{
*pp++=i;
(*n)++;}
}
这样就行了

为什么fun里面的n前面要加取地址符号呢,以前函数调用都是直接写上字母就行了

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答