标题:帮忙查看程序在哪出错,
只看楼主
guozhencai
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-3-9
 问题点数:0 回复次数:8 
帮忙查看程序在哪出错,
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/* 标准文档模板 */

#include "Stdio.h"
#include "Conio.h"
int sb(int x,int y)
{int t;
while(y!=0)
{
t=x%y;
x=y;
y=t;
}
return y;
}
int sb1(int x,int y)
{int s;
s=x/y;
return s;
}
main()
{
int a,b,k,m,j;
printf("input two number a>b:");
scanf("%da,%d",&a,&b);
m=a*b;
k=sb(a,b);
j=sb1(m,k);
printf("k=%dj=%d",k,j);
getch();
}
帮忙查看程序在哪出错,
偶知道解这道题的方法很多,
这里就不用费心另写程序了,
只要帮我查看一下程序在哪出错,解释一下原因。谢谢!!!!
搜索更多相关主题的帖子: int include 
2005-04-17 09:18
ljzh_77
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-3-23
得分:0 
你这个程序的解题思路错了,求最大公约数的函数int sb(int x,int y)不能求出两个数的最大公约数.

例如:x=50,y=30

按你的函数,50%30=20,因此,50和30的最大公约数为20,错.

2005-04-17 09:57
guozhencai
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-3-9
得分:0 
while(y!=0)
{
t=x%y;
x=y;
y=t;
}
输入:50,30
20=50%30
10=30%20
0=20%10
return 10
会错吗?????

[此贴子已经被作者于2005-4-17 10:05:59编辑过]


2005-04-17 10:05
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
你是说哪个方面的错误?

淘宝杜琨
2005-04-17 10:13
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
如果你说的是算法上面的错误,这里很明显:

while(y!=0)
{
t=x%y;
x=y;
y=t;
}
return y;
}

主意一下你返回的是y,但是实际上要达到你说的效果应该返回x
想想看是不是这样?

一个很简单的低级错误.y=0的时候才能跳出循环,也就是说y能跳出循环的时候肯定是0
自然return y也就是 return 0了

淘宝杜琨
2005-04-17 10:32
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
#include "stdio.h"

/*辗转相除法求最大公约数*/
short int sb(short int x,short int y)
{
short int t;
    while(y!=0)
    {
        t=x%y;
        x=y;
        y=t;
    }
    return x;
}

/*求最小公倍数*/
short int sb1(short int x,short int y)
{
short int s;
    s=x/y;
    return s;
}

int main(void)
{
short int a,b,k,m,j;
    printf("input two number a>b:");
    scanf("%hd,%hd",&a,&b);
    m=a*b;
    k=sb(a,b);
    j=sb1(m,k);
    printf("k=%d,j=%d\n",k,j);
}

淘宝杜琨
2005-04-17 10:38
guozhencai
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-3-9
得分:0 
刚才我再次检查时也发现了这个问题。 但改来改去都不行。 最后才发现这一句多了一个 a。 scanf("%da,%d",&a,&b); 谢谢
2005-04-17 11:00
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
得分:0 
我心狂野
#include<stdio.h>
#include<conio.h>
int sb(int x,int y)
{int t=1;
 while(t)
 {
    t=x%y;
 if(t==0) break;
 x=y;
 y=t;
 }
return y;
}
int sb1(int x,int y)
{ int s;
  s=x/y;
 return s;
}
main()
{
 int a,b,k,m,j=0;
 printf("input two number a>b:\n");
 scanf("%d%d",&a,&b);
 m=a*b;
 k=sb(a,b);
 j=sb1(m,k);
 printf("k=%d\t j=%d\n",k,j);
 getch();
}

兄弟别和他们在那里浪费时间。你用我的程序上机就知道什么才是真正帮助你的人

生是编程人!!!!死是编程鬼!!!!颠峰人生!!!焚尽编程!!! 爱已严重死机!情必须重新启动!情人已和服务器断开连接!网恋也需要重新拨号!-----激情依旧
2005-04-17 12:58
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
啊,?!!?!?!?!?!

淘宝杜琨
2005-04-17 18:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-15877-1-1.html




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

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