为了账号安全,请及时绑定邮箱和手机立即绑定

循环当中会丢掉一个值

循环当中会丢掉一个值

C
肖科夫斯基 2018-01-02 17:06:47
#include<stdio.h>int main(){  int a,b,i;  scanf("%d/%d",&a,&b);  if(b!=0)    for(i=2;i<=a&&i<=b;i++){      if((a%i==0)&&(b%i==0))        a=a/i;        b=b/i;        i--;    }  printf("%d/%d\n",a,b);  return 0;}我设计了一个这样求最简分式的程序。用gdb调试的时候发现值比较小的时候可以正常运行,但是值比较大之后,if语句在第二次开始就会把a=a/i这个操作给省略掉,求教为什么会这样以及怎么改?
查看完整描述

2 回答

已采纳
?
昵称好难起757

TA贡献17条经验 获得超0个赞

你if语句没有加大括号,导致只执行了a/=i就返回循环了,执行完循环之后才执行a/=i后面的语句。

查看完整回答
反对 回复 2018-01-02
?
昵称好难起757

TA贡献17条经验 获得超0个赞

改成这样:
#include<stdio.h>
int main()
{
  int a,b,i;
  scanf("%d/%d",&a,&b);
  if(b!=0)
  for(i=2;i<=(a>b?b:a);i++)
{
  if((a%i==0)&&(b%i==0))
  {
a/=i;
b/=i;
i--;
  }
    }
  printf("%d/%d\n",a,b);
}

查看完整回答
反对 回复 2018-01-02
  • 2 回答
  • 0 关注
  • 1318 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信