求两个整数的最大公约数
#include
int main()
{
int y(int a,int b);//声明最大公约数调用函数
int a,b;
scanf("%d %d",a,b);
printf("最大公约数=%d\n",y(a,b));
return 0;
}
int y(int a,int b)
{
int t,m;//m为最大公约数
while(a!=b)
{
if(a>b)
{
t=a-b;
if(t==b)
{a=t;m=t;}
else
a=t;
}
else if(aif(t==a)
{b=t;m=t;}
else
b=t;
}
else if(a==b)
m=a;
}
return m;
}
我输入了3和9为什么没有运行结果
代码问题在第6行: scanf("%d %d",a,b); 变量前漏了'&'符,应修改为: scanf("%d %d",&a,&b);
其他正确。
#include <stdio.h>
int main()
{
int y(int a, int b);//声明最大公约数调用函数
int a, b;
scanf("%d %d", &a, &b); //scanf("%d %d", a, b);
printf("最大公约数=%d\n", y(a, b));
return 0;
}
int y(int a, int b)
{
int t = 0, m = 1;//m为最大公约数
while (a != b)
{
if (a > b)
{
t = a - b;
if (t == b)
{
a = t; m = t;
}
else
a = t;
}
else if (a < b)
{
t = b - a;
if (t == a)
{
b = t; m = t;
}
else
b = t;
}
else if (a == b)
m = a;
}
return m;
}
程序流程是,先进入main函数,然后调用您定义的函数,但未发现您前面有函数声明,所以就跳过了。
①你可以把int y函数放在main函数前面
②或者在前面声明一下,告诉电脑有这个函数,然后他就会去找这个函数