项目场景:
求最大公约数
问题描述
输出的最大公约数为0
#include<stdio.h>
int main()
{
int a,b,r;
printf("enter a,b:(a>b)");
scanf("%d%d",&a,&b);
while(r!=0)
{
r=a%b;
a=b;
b=r;
}
printf("最大公约数为%d",r);
return 0;
}
原因分析:
首先循环到最后r=0已经赋值给b并且自身为0,既最后输出的为零;其次r的初始值为0既无论如何都不会进入循环。
解决方案:
最后输出的应为b,调整r=a%b的位置,并在循环前就对r进行赋值否则不进入循环
#include<stdio.h>
int main()
{
int a,b,r;
printf("enter a,b:(a>b)");
scanf("%d%d",&a,&b);
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("最大公约数为%d",b);
return 0;
}