标题:菜问:这个函数为什么没得到结果
只看楼主
plane5530
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2007-1-19
结帖率:83.33%
已结贴  问题点数:10 回复次数:5 
菜问:这个函数为什么没得到结果
下面是一个求最大公约数与最小公倍数的语句,不知道为什么,得不到结果,请前辈们帮忙看看错在哪?小弟不胜感激。
main ()
{int m,n,x,y;
printf ("input m and n:");
   scanf ("%d,%d\n",&m,&n);
x=gcd(m,n);y=gbs (m,n,x);
printf  ("最大公约数为:%d,最小公倍数为:%d\n",x,y);
getch ();
}
gcd(int a,int b)
{int temp;
   while (b) {temp=a%b;a=b;b=temp;}
   return a;}

gbs (int a,int b,int c)
{int d; d=a*b/c;return (d);}
搜索更多相关主题的帖子: 不胜感激 input return 公倍数 公约数 
2011-03-21 16:45
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:3 
编译器没有‘看到’你定义的函数。
你在main函数里声明一下这两个函数, 或者,把这两个函数定义在main函数前面。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-21 16:50
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
得分:3 
写程序要有规范  你写的太乱 到时候找错误都不好找
#include<stdio.h>
#include<conio.h>
int gcd(int a,int b)
{
    int temp;
    while (b)
    {
        temp=a%b;
        a=b;
        b=temp;
        }
   return a;
  }
int gbs (int a,int b,int c)
{
    int d;
     d=a*b/c;
     return d;
     }
int main (void)
{
    int m,n,x,y;
    printf ("input m and n:");
    scanf ("%d,%d",&m,&n);
    x=gcd(m,n);
    y=gbs (m,n,x);
    printf  ("最大公约数为:%d,最小公倍数为:%d\n",x,y);
    getch ();
    return 0;
}
2011-03-21 16:57
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
修改后调试通过的代码。
程序代码:
#include <stdio.h>

int main (void){
        int m,n,x,y;
        int gcd (int a,int b);      //声明函数原型
        int gbs (int a,int b,int c);//声明函数原型

        printf ("input m and n:");
        scanf ("%d%d",&m,&n);       //scanf函数里不要有'\n'

        x=gcd(m,n);y=gbs (m,n,x);

        printf ("gcd is %i\ngbs is %i\n",x,y);
        return 0;

}
int gcd(int a,int b) {
        int temp;
        while (b!=0) {
                temp=a%b;
                a=b;
                b=temp;
        }
        return a;
}

int gbs (int a,int b,int c) {
        int d;
        d=a*b/c;
        return (d);
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-21 17:00
SGT_JM
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2011-3-21
得分:3 
顶楼上的 , 你的代码写的太乱了!
我编译了一下你的代码,你的 n 没有得到你输入的值。
原因是:原因:我解释为,在scanf()中,格式字符串中普通字符(不包括空白字符)实行的是 严格匹配,因为格式串中%d后面是一个 ','  ,因此输入中数字后必须为一个','.
比如在你的代码中,你要使m=15 , n=33; 在你输入的时候就必须输入15, 33.(也就是15后面必须跟一个‘,’,然后空格,在输入33)。

还有一种做法就是scanf ("%d,%d",&m,&n);改为    scanf ("%d%d",&m,&n);就不需要输入‘,’ ,直接输入15 空格 33就好。

希望能帮到你,你可以试试。
2011-03-21 17:06
platolgq
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:74
专家分:87
注 册:2011-2-24
得分:3 
同四楼,要想使用函数你的先声明函数

C种的自学者
2011-03-21 17:31



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




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

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