函数的一个小问题 求解
#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
------------------------------------------------------------------
麻烦大家告诉一下我哪里错了 void gcd();
放到 int main 外面
定义全局的
本帖最后由 薰衣草的味道 于 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'第三十五行
#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);
} 把你 scanf("%d %d",a,b);
gcd(a,b);
你定义了void gcd(int a,int b) 你不加参数进去不就报错
#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: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); #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]