C语循环问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:37:57
问下啊
为什么这个程序运行不起来啊
#include "stdio.h"
main()
{int a,b,s,t1,t2;
t1=1;
t2=1;
scanf("%d%d",&a,&b);
if(a>b)
s=a;
else
s=b;
while(s>0)
{
if(a%s==0&&b%s==0)
{
a/=s;
b/=s;
t1*=s;
}
else
{s--;
t2=t1*a*b;
}
}
printf("big=%d,little=%d",t2,t1);
getch();
}

你的循环体存在问题 还有那个好像是getchar() 吧 。
这里有个我以前写的同一个问题 你参考一下 希望对你有所帮助 谢谢
include <stdio.h>
void main()
{
int m,n,k,t,x,y;
scanf("%d,%d",&m,&n);
for(k=m<n?m:n;k>0;k--)
if(m%k==0&&n%k==0)
{
printf("max=%d\n",k);
break;
}
x=m/k;
y=n/k;
t=x*y*k;
printf("min=%d",t);
}

不好意思 昨晚睡觉了 刚才把你的程序看了一下
#include "stdio.h"
void main()
{
int a,b,s,t,t1,t2;
t1=1;
t2=1;
scanf("%d,%d",&a,&b);
if(a>b)
s=a;
else
s=b;
while(s>0)
{
s--;
if(a%s==0&&b%s==0)
{
printf("big=%d\n",s);
break;
}
}
t1=a/s;
t2=b/s; (此部分应该在循环体之外,因为这里的s用的是上面循环后的结果)
t=t1*t2*s;
printf("little=%d",t);
getchar();
}

你的while(s>0)会形成死循环,如果a,b都是正数那么s永远大于零。就会一直循环下去了

while(s>0) 改一