纠结啊,这个程序编译是没问题,运行就是没结果!前辈来看看!
#include<stdio.h>
int main()
{
int a,b;
int gys(int a,int b);
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a<1||a>1000000||b<1||b>1000000)
printf("enter error data\n");
else
printf("%s",gys(a,b));
}
return 0;
}
int gys(int a,int b)
{
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
a=b;
}
return a;
if(a%2!=0)
printf("NO\n");
else
printf("YES\n");
}
求两个数的最大公约数,并判断是否为偶数
[解决办法]
循环体写错了,从而循环条件成立不了。另外,return a的位置也过于提前,应先输出后return.
基于原程序的意图修改如下:
#include<stdio.h>
int main()
{
int a,b;
int gys(int a,int b);
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a<1
[解决办法]
a>1000000
[解决办法]
b<1
[解决办法]
b>1000000)
printf("enter error data\n");
else
printf("%d",gys(a,b));
}
return 0;
}
int gys(int a,int b)
{
while(a!=b)
{
while (a>b)
a=a-b;
while (b > a)
b=b-a;
}
a = b;
if(a%2!=0)
printf("NO\n");
else
printf("YES\n");
return a;
}
[解决办法]
#include<stdio.h>
int main()
{
int a,b;
int gys(int a,int b);
while(scanf("%d %d",&a,&b)!=EOF)
{
if(a<1
[解决办法]
a>1000000
[解决办法]
b<1
[解决办法]
b>1000000)
printf("enter error data\n");
else
printf("%d",gys(a,b)); //这用%d
}
return 0;
}
int gys(int a,int b)
{
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
a=b; //拿出while循环
if(a%2!=0)
printf("NO\n");
else
printf("YES\n");
return a;//最后再返回
}