| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1843 人关注过本帖
标题:这个求两个数最大公约数与最小公倍数 哪儿错了 谢咯
只看楼主 加入收藏
Lserove
Rank: 2
等 级:论坛游民
帖 子:5
专家分:23
注 册:2012-6-10
收藏
得分:2 
#include<stdio.h>
void main()
 {int i,j,m,n,t,ag,ig;
 scanf("%d%d",&m,&n);
 if(m<n)
{
    t=m;
    m=n;
    n=t;
 }
 for(i=n;i>1;i--)
        if(m%i==0&&n%i==0)
            ag=i;
 for(j=m;j<=m*n;j++)
        if(j%m==0&&j%n==0)
            ig=j;
     printf("%d,%d",ag,ig);
 getch();
}


if 后的语句若只有一句则可以不用加 { } ,若是多句要加 { } ,break 的用法建议你在书上多看看。
getch() 是想干啥用的?按任意键继续执行这个程序?
2012-06-11 21:18
c狼
Rank: 1
来 自:江西
等 级:新手上路
帖 子:13
专家分:5
注 册:2012-6-10
收藏
得分:0 
回复 19楼 never_yzq
换位函数不是值传递吗,实参的值并没有发生改变吧,x和y没有发生交换
2012-06-12 09:23
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
收藏
得分:0 
回复 22楼 c狼
换位了,自己在编译软件上验证一下就是了!
2012-06-12 10:31
c狼
Rank: 1
来 自:江西
等 级:新手上路
帖 子:13
专家分:5
注 册:2012-6-10
收藏
得分:0 
回复 23楼 never_yzq
没有换,C语言在函数间传递参数时,形参的变化是不会改变实参的值的。储存形参与实参的内存单元不同,形参的改变不影响实参。你可以试一次在change函数外用printf输出x,y的值,他们的值并没有改变。而且这个程序交换这两个数是多此一举的。
2012-06-12 17:07
njdxsheng
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2012-6-10
收藏
得分:0 
观摩中,一起学习进步哈~

[ 本帖最后由 njdxsheng 于 2012-6-12 21:30 编辑 ]
2012-06-12 21:27
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
收藏
得分:0 
回复 23楼 never_yzq
那你给我解释一下面的代码吧
int fun(int x,int y)
{
    int k;
    k=x;x=y;y=k;
}
main()
{
   int a=3,b=6;

   fun(a,b);
   printf("%d %d",a,b);
}

喜欢睡觉 却经常熬夜
2012-06-12 21:46
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
收藏
得分:0 
回复 11楼 demonleer
大哥今年芳龄几何啊

喜欢睡觉 却经常熬夜
2012-06-12 21:47
maplelj
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2012-6-6
收藏
得分:0 
谢谢大家的帮忙啊!
2012-06-13 20:18
zhu_zhi
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:129
专家分:92
注 册:2013-4-25
收藏
得分:0 
求最大公约数及最小公倍数方法,感兴趣的请共享
递归法:
#include<stdio.h>//递归法求最大公约数和最小公倍数
void main()
{
    int zdgys(int x,int y);//声明最大公约数的子函数
    int n,m;
    printf("请输入两个整数:\n");
    scanf("%d %d",&n,&m);
    int j=zdgys(n,m);//调用最大公约数子函数
    printf("这两个整数的最大公约数为:%d\n",j);//打印最大公约数
    printf("这两个整数的最小公倍数为:%d\n",n*m/j);//打印最小公约数

}
int zdgys(int x,int y)//利用辗转相除法求最大公约数
{
    if(x<y)//如果x小于y,互换
    {
        int t;
        t=x;
        x=y;
        y=t;
    }
    int s=x%y;//求余数
    if(s!=0) //假如余数不为零时,继续辗转
    {
        x=y;//用原来的除数当做被除数
        y=s;//用原来的余数当做除数
        zdgys(x,y);//利用递归法反复求最大公约数
    }
   
    else //余数为零时,将除数返回主函数
    {
        
        return y;

    }

}


普通法:
#include<stdio.h>?// 求最大公约数
void main()
{
    int i,j,t=0,x;
    printf("请输入两个整数\n");
    scanf("%d,%d",&i,&j);
    x=i*j;
    if(i<j)
    {
        t=i;
        i=j;
        j=t;
    }
    int m=i%j;
    int q=0;
    while(m!=0)
    {
        if(j>m)
        {
            i=j;
            j=m;
            m=i%j;
        }
        else
        {
            i=m;
            j=i;
            m=i%j;
        }
        q++;
    }
    printf("这两个数的最大公约数为:%d\n",j);
    printf("这两个数的最小公倍数为:%d\n",x/j);
}
2013-12-07 23:02
快速回复:这个求两个数最大公约数与最小公倍数 哪儿错了 谢咯
数据加载中...
 
   



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

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