C语言指针地制值的传递

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:40:51
viod f(int n,int *r)
{ int r1=0;
if(n%3==0) r1=n/3;
else if(n%5==0) r1=n/5;
else if(--n,&r1);
*r=r1;
}
main()
{
int m=7,r;
f(m,&r);
printf("%d\n",r)
}

A 2 B 1 C 3 D 0
答案选 ?
要求把思路和过程描述清楚!!!!!!

A 2
进入f(7,&r),
7不能被3,跟5 整除,所以又
进入f(6, &r1)
因为6能被3整除所有
r1 = 6/3 = 2;
然后f(6,&r1)调用结束。
然后 r = r1,就是 2

答案: D 0

#include "stdafx.h"

void f(int n,int *r)
{
int r1=0;
if(n%3==0)
r1=n/3;
else if(n%5==0)
r1=n/5;
else if(--n,&r1)
*r=r1;
}

int main(int argc, char* argv[])
{
int m=7,r;
f(m,&r);
printf("%d\n",r) ;
return 0;
}

这个程序根本运行不了,它的错误地方太多了,即使你知道了思路,这个题也没有结果.
如果程序是楼主自己编的,那我建议LZ在好好看看C语言基础
要是在别的地方找到的,你看看你有没有打错的地方,要不这题是解不开的!

else if(--n,&r1);
*r=r1;
?????????