c语言问题

[复制链接]
查看11 | 回复5 | 2011-1-8 23:07:28 | 显示全部楼层 |阅读模式
main()
{
int m,n,p,temp;
print("请输入两个数字:\n");
scanf("%d%d",&m,&n);
p=m*n;
while(n)
{
temp=m%n;
m=n;
n=temp;
}
printf("gy=%d gb=%d\n",m,p/m);
}
请问如果输入:2 20;
那么输出什么呢?为什么呢?
谢谢!

回复

使用道具 举报

千问 | 2011-1-8 23:07:28 | 显示全部楼层
输出的是202输入220m=2 n=20那么P=m*n=2*20=40While n就相当于循环要开时了temp=m%n=0m=n=20n=temp=0打印gy=20,gb=2(因为在打印输出的时后它用了一除法,也就是p/m,我们知道p=40,m=20所以最后结果就是2)
回复

使用道具 举报

千问 | 2011-1-8 23:07:28 | 显示全部楼层
2 20p=40n=20 temp=2 m=20 n=2n=2 temp=0 m=2 n=0gy=m=2gb=p/m=20
回复

使用道具 举报

千问 | 2011-1-8 23:07:28 | 显示全部楼层
第一次循环m=20 n=2(值为非零)第二次循环m=2 n=0(值为零,循环中止)所以输出为gy=2 gb=20。
回复

使用道具 举报

千问 | 2011-1-8 23:07:28 | 显示全部楼层
20,2 输入2,20 即m=2,n=20;p=m*n=2*20=40;n!=0进入循环;temp=m%(取余)n=2%20=0;m=n=20;n=temp=0;打印m,p/m; m=20,p/m=40/20=2;
回复

使用道具 举报

千问 | 2011-1-8 23:07:28 | 显示全部楼层
gy=2 gb=20这个程序是用碾转相除法求最大公约数及最小公倍数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行