薰衣草的味道 发表于 2016-12-11 14:23:25

函数的一个小问题 求解

#include<stdio.h>
int main()
{
        void gcd();
        int a,b,m,n;
        printf("Please input two figures:\n");
        scanf("%d %d",a,b);
        gcd();
        n=(a*b)/m;
        printf("Output two figures:\n");
        printf("%d %d\n",m,n);
        return 0;
}


void gcd(int a,int b)
{
        int temp;
        if(b>a)
        {
        int temp1;
        temp1=a;
        a=b;
        b=temp1;       
        }
        while(b!=0)
        {
          temp=a%b;
          a=b;
          b=temp;
    }
    printf("%d\n",a);
}
-----------------------------------------------------------------
用的是Dev c++
-----------------------------------------------------------------
ld returned 1 exit status
------------------------------------------------------------------
麻烦大家告诉一下我哪里错了

gaoxian159753 发表于 2016-12-11 15:43:15

void gcd();
放到 int main 外面
定义全局的

薰衣草的味道 发表于 2016-12-11 19:15:56

本帖最后由 薰衣草的味道 于 2016-12-11 19:20 编辑

gaoxian159753 发表于 2016-12-11 15:43
void gcd();
放到 int main 外面
定义全局的

好像不行,有新出了几个问题。
1. too few arguments to function `int gcd(int, int)'    第三行
2.at this point in file                                                       第九行
3.new declaration `void gcd(int, int)'                        第十九行
4.ambiguates old declaration `int gcd(int, int)'             第三行
5.return-statement with a value, in function returning 'void'第三十五行

人造人 发表于 2016-12-11 19:53:28

#include<stdio.h>
int main()
{
      void gcd();
      int a,b,m,n;
      printf("Please input two figures:\n");
      scanf("%d %d",a,b);
      gcd();
      n=(a*b)/m;
      printf("Output two figures:\n");
      printf("%d %d\n",m,n);
      return 0;
}


void gcd(int a,int b)
{
      int temp;
      if(b>a)
      {
      int temp1;
      temp1=a;
      a=b;
      b=temp1;      
      }
      while(b!=0)
      {
          temp=a%b;
          a=b;
          b=temp;
    }
    printf("%d\n",a);
}

gaoxian159753 发表于 2016-12-11 21:18:38

把你 scanf("%d %d",a,b);
gcd(a,b);

你定义了void gcd(int a,int b) 你不加参数进去不就报错

gaoxian159753 发表于 2016-12-11 21:27:32

#include<stdio.h>

void gcd(int a ,int b);
int main()
{
      
      int a,b,m,n;
      printf("Please input two figures:\n");
      scanf("%d %d",a,b);
      gcd(a,b);
      n=(a*b)/m;
      printf("Output two figures:\n");
      printf("%d %d\n",m,n);
      return 0;
}


void gcd(int a,int b)
{
      int temp;
      if(b>a)
      {
      int temp1;
      temp1=a;
      a=b;
      b=temp1;      
      }
      while(b!=0)
      {
          temp=a%b;
          a=b;
          b=temp;
    }
    printf("%d\n",a);
}

b84408190 发表于 2016-12-11 22:21:42

本帖最后由 b84408190 于 2016-12-11 22:35 编辑

如果你是求公约数的话,你的算法我是没看懂的。我发一个,你可以参考下。
#include <stdio.h>
void main(void)
{
    int x,y,z,i,m,n=0,gcd=1;
    printf("请输入两个int数:");
    scanf("%d%d",&x,&y);
    if(x<y)                            /*判定x,y大小*/
    {
      z=x;
      x=y;
      y=z;
    }
   for(i=1;i<=x/2;i++)                /*求余数同为0的除数,赋值给整除数数组m,并返回余数循环*/
    {
      if(x%i==0 && y%i==0)
      {
            m=i;
            n++;
            x=x/i;
            y=y/i;
            i=1;
      }
   }
   
    while(n>0)                        /*求出所有除数的积,便为最大公约数*/
      {
            gcd=gcd*m;
            n--;
      }
   
   printf("两个数的公约数为:%d\n",gcd);
   
}


我是初学,语法不是太清楚,不知道对不:
1. 没找到你m的赋值。
2.函数的定义和引用没内部参数。你试下声明gcd(int a,int b),引用gcd(a,b);

lzgw 发表于 2016-12-18 21:21:11

    #include<stdio.h>
    int main()
    {
          void gcd();是否应该定义到main外面
            int a,b,m,n;
            printf("Please input two figures:\n");
            scanf("%d %d",a,b);   a,b前面加&
            gcd();调用函数没有放实参
            n=(a*b)/m;n,m没有赋值
            printf("Output two figures:\n");
            printf("%d %d\n",m,n);
            return 0;
    }


    void gcd(int a,int b)
    {
            int temp;
            if(b>a)
            {
            int temp1;
            temp1=a;
            a=b;
            b=temp1;      
            }
            while(b!=0)
            {
            temp=a%b;
            a=b;
            b=temp;
      }
      printf("%d\n",a);
    }
页: [1]
查看完整版本: 函数的一个小问题 求解