| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1038 人关注过本帖
标题:新手求解,急
只看楼主 加入收藏
trustbelief
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-11-8
收藏
 问题点数:0 回复次数:3 
新手求解,急
图片附件: 游客没有浏览图片的权限,请 登录注册
为什么结果是0却运行不了了?
搜索更多相关主题的帖子: 结果 运行 
2018-11-11 23:29
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
你也知道 m%n 是 0
m*n/(m%n)
这是一个 除以0 的操作了
把这个改好就可以了

https://zh.
2018-11-12 02:20
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
收藏
得分:0 
调整一下语句间的顺序就可以了,就像三楼二楼说的,如果a等于零的话,那么b=m*n/(m%n);这条语句就运行不了了,你可以在取余之后就用if条件做判断。还有就是你的程序好像有局限性吧,假如你的这个程序已经修改好了,但是你这个程序对于某些数据好像不适合吧,比如输入5和7你就得不到你预期的效果。两个数的最大公因数乘最小公倍数等于这两个数的乘积,但是你这个程序中,较大数对较小数取余,得到的余数不代表就是两个最大公因数。所以求最大公因数还是用辗转相除法,或者更相减损术得到最大公因数,然后再用两个数的乘积除以最大公因数从而得到最小公倍数
今天碰巧翻到自己以前编过的程序是求两个数的最大公约数的  你看看

#include "stdio.h"
int main()
{
    int m,n,r,t,i;
    scanf("%d%d",&m,&n);
    if(m>=n)
    for(i=0;i<10000;i++)
    {
        r=m%n;
        if(r==0)
        {
            printf("最大公约数为:%d\n",n);
            break;
        }
        m=n;
        n=r;
    }
    else
    {
        t=m;
        m=n;
        n=t;
        for(i=0;i<10000;i++)
        {
          r=m%n;
          if(r==0)
          {
              printf("最大公约数为:%d\n",n);
            break;
          }
          m=n;
          n=r;
        }
    }
return 0;
}


[此贴子已经被作者于2018-11-12 18:40编辑过]

2018-11-12 12:04
hxwj
Rank: 2
等 级:论坛游民
帖 子:75
专家分:34
注 册:2016-12-8
收藏
得分:0 
题目本身就是求两个非零整数的最大公约数  
通过迭代法来实现,最终导致r为0的除数n就是原数m,n的最大公约数;这应该是最简单经典的做法!值得收藏
#include "stdio.h"
int main()
{
    int m,n,r,t,i;
    scanf("%d%d",&m,&n);
    r=m%n;
while(r)
{
 m=n;
n=r;
r=m%n;
    }
printf("最大公约数为:%d\n",n);
return 0;
}

2018-11-14 14:54
快速回复:新手求解,急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017937 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved