| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:最大公约数
只看楼主 加入收藏
卡其
Rank: 2
等 级:论坛游民
帖 子:96
专家分:36
注 册:2010-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
最大公约数
程序代码:
#include<stdio.h>
int gcd(int x,int y);
int compare(int x,int y);
main()
{
      int a,b,approximate_number;
      printf("enter two several number\n");
      scanf("%d,%d",&a,&b);
      compare(a,b);
      approximate_number=gcd(a,b);
      printf("%d",approximate_number);
      getchar();
}
int gcd(int x,int y)
{
    int temp;
    while(x!=0)
    {
         temp=x%y;
         x=y;
         y=temp;
    }
    return x;
}
int compare(int x,int y)
{
    int temp;
    if(x<y)
    {
           temp=y;
           y=x;
           x=temp;
    }
}
求最大公约数。这么写运行怎么就崩溃了呢?是不是compare函数的问题、compare函数我只是想改变下大小的顺序应该不需要向main函数返回什么数字吧;求解释
搜索更多相关主题的帖子: 公约数 
2012-07-17 20:40
w995612220
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:139
专家分:313
注 册:2012-6-20
收藏
得分:5 
int compara(int x,int y)     怎么没有返回值return (?); 两个调用函数都有这个问题……
2012-07-17 23:13
xchieftain
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2012-7-19
收藏
得分:5 
问题出在
while(x!=0)
    {
         temp=x%y;
         x=y;
         y=temp;
  假设  x=24 ,y=18.  那么temp=6,x=18,y=6,   在一次, temp=0,x=6,y=0,  x!=0还成立, 变成6%0了  崩溃!!!
  还有就是 int compara(int x,int y) 函数  在里面比较大小后对原实参没有改变, 应该用指针void compara(int *x,int *y) 不需要返回值。
2012-07-19 09:40
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:5 
楼上正解,我记得辗转相除好像是用余数是否为零判别吧
你改成 while(y!=0)
2012-07-19 12:25
洛神似晓
Rank: 2
等 级:论坛游民
帖 子:15
专家分:16
注 册:2012-7-11
收藏
得分:5 
回复 楼主 卡其
int gcd(int a, int b)
{
    if(a%b==0) return b;
    else return gcd(b,a%b);
}
判断最大公约数不用单独用一个函数来比较a和b的大小啊
2012-07-19 16:28
快速回复:最大公约数
数据加载中...
 
   



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

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