一段莫名其妙的C代码

Gongqingshuai 2009-03-19 11:32:30
#include <stdio.h>
void main()
{
int a,b,i,temp;
scanf("%d%d\n",&a,&b);
if(a<b)
{
temp=a;
a=b;
b=temp;
}


for(i=b;i>=0;i--)
{
if(a%i==0 && b%i==0)

printf("%d",i);
}
我想用那段C语言代码求解两个数的公约数 可为什么什么 都不显示呢 到底 是 哪里出错了阿 ?
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gongqingshuai 2009-03-19
  • 打赏
  • 举报
回复
谢谢 非常感谢各位 出来了!
  • 打赏
  • 举报
回复
for(i=b;i>=0;i--)
{
if(a%i==0 && b%i==0)

printf("%d",i);
}

a%i,i为0时会出问题啊。
yangch_nhcmo 2009-03-19
  • 打赏
  • 举报
回复

#include <stdio.h>

void main()
{
int a,b,i,temp;
scanf("%d%d",&a,&b); //去掉\n
if (a < b)
{
temp=a;
a=b;
b=temp;
}


for (i = b;i > 0;i--) //i 不能等于零,对0求余数,会引发错误
{
if (a%i==0 && b%i==0)

printf("%d \t",i);

}
}

fkeujjpdc 2009-03-19
  • 打赏
  • 举报
回复
你把这个代码进行编译
#include <stdio.h>
void main()
{
int a,b,i,temp;
scanf("%d%d",&a,&b);
if(a<b)
{
temp=a;
a=b;
b=temp;
}
for(i=b;i>=1;i--)
{
if(a%i==0&&b%i==0)

printf("%d\n",i);
}
}
Qlaiaqu 2009-03-19
  • 打赏
  • 举报
回复
scanf("%d%d\n",&a,&b);
这一行导致了你输入之后还要多按一次回车
把\n去掉
fkeujjpdc 2009-03-19
  • 打赏
  • 举报
回复
scanf("%d%d\n",&a,&b); 应该改为scanf("%d%d",&a,&b);
mosaic 2009-03-19
  • 打赏
  • 举报
回复
如果输入的两个数没有最大公约数,就不会有显示了。
sunbett 2009-03-19
  • 打赏
  • 举报
回复
a%i和b%i 会有问题
把for循环里的边界控制条件改为i>=1
hai040 2009-03-19
  • 打赏
  • 举报
回复
i>0
a%0会出错

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧