c语言问题里面的while(!r)什么意思,换成while (r!=0)为什么不可以

#include<stdio.h>intgcd(intm,intn){intr;r=m%n;if(!r)returnn;elsereturngcd(n,r);}intma... #include<stdio.h>
int gcd(int m,int n)
{

int r;

r=m%n;

if(!r)

return n;

else

return gcd(n,r);
}

int main()
{

int m,n;

do
{

scanf("%d%d",&m,&n);

}while(n<=0||m<=0);

printf("gcd=%d\n",gcd(m,n));

return 0;
}

/*#include<stdio.h>

void main()

{

int n,m,p,r,temp;

printf("inputn,m:\n");

scanf("%d%d",&n,&m);

if(n<m)

{

temp=n;
n=m;
m=temp;
}

p=n*m;

while(m!=0)

{

r=n%m;
n=m;
m=r;
}

printf("max:%d\n",n);

printf("min:%d\n",p/n);
}*/
int gcd(int m,int n)
{

int r;

r=m%n;

if(!r)

return n;

else

return gcd(n,r);
}
解释一下这段吧,谢谢
展开
 我来答
互联网前世今生

2010-10-09 · 科技领域创作者
个人认证用户
互联网前世今生
采纳数:314 获赞数:348

向TA提问 私信TA
展开全部
!r意思是非r的意思,就是r是假的意思,可以把它换成if(r==0)也可以
,希望对你有帮助,有问题可以问我,呵呵。共同学习!
史前捍卫
推荐于2018-04-12 · TA获得超过528个赞
知道小有建树答主
回答量:506
采纳率:0%
帮助的人:335万
展开全部
!r是非的意思,!=是不等于,假如r=1 那么!r是小于和等于0即为假 while(!r)是假程序不执行,r!=0是真的即为while (r!=0)真程序执行
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqsfq
2010-10-09 · TA获得超过326个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:119万
展开全部
首先问题:
while(!r)表示r=0时循环, while(r!=0)表示r非0时循环
补充问题:
这是一个递归,表示r为0了就直接返回模的除数,否则就继续除,else后面就是递归函数
这个貌似是求m和n的最大公约数的function吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式