鱼C论坛

 找回密码
 立即注册
查看: 1604|回复: 7

函数的一个小问题 求解

[复制链接]
发表于 2016-12-11 14:23:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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++
-----------------------------------------------------------------
[Error] ld returned 1 exit status
------------------------------------------------------------------
麻烦大家告诉一下我哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-11 15:43:15 | 显示全部楼层
void gcd();
放到 int main 外面
定义全局的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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'  第三十五行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-11 21:18:38 | 显示全部楼层
把你 scanf("%d %d",a,b);
gcd(a,b);

你定义了void gcd(int a,int b) 你不加参数进去不就报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-11 22:21:42 | 显示全部楼层
本帖最后由 b84408190 于 2016-12-11 22:35 编辑

如果你是求公约数的话,你的算法我是没看懂的。我发一个,你可以参考下。
#include <stdio.h>
void main(void)
{
    int x,y,z,i,m[10],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[10],并返回余数循环*/
    {
        if(x%i==0 && y%i==0)
        {
            m[n]=i;
            n++;
            x=x/i;
            y=y/i;
            i=1;
        }
   }
   
    while(n>0)                        /*求出所有除数的积,便为最大公约数*/
        {
            gcd=gcd*m[n-1];
            n--;
        }
   
   printf("两个数的公约数为:%d\n",gcd);
   
}


我是初学,语法不是太清楚,不知道对不:
1. 没找到你m的赋值。
2.函数的定义和引用没内部参数。你试下声明gcd(int a,int b),引用gcd(a,b);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
    }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 17:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表