mule1246 发表于 2021-8-20 23:16:31

[C]球球大佬帮我看看我这个为什么对了

题目是求两个整数的最大公约数
我想不明白的地方是那两个while,因为while不是括号里是真的话就会一直循环吗,而我这样写它从一开始就是真,然后到同时满足||前后两个条件一直是真,所以这个“k”在变成正确值之后应该继续-1,但是为什么却能输出正确的答案呢?
#include<stdio.h>
int main (void)
{
int i, j, k;

scanf("%d %d",&i, &j);
if(i < j)
    {k = i;
   while (j % k != 0 || i % k != 0)
   {
       k--;
   }
   printf("%d", k);
    }
   else
   {
   k = j;
       while (i % k != 0 || j % k != 0)
       {
         k--;
       }
         printf("%d", k);
   }
return 0;
}

万千只cnm 发表于 2021-8-20 23:56:50


|| 是 或
满足一个就为真左边为真则跳过右边
页: [1]
查看完整版本: [C]球球大佬帮我看看我这个为什么对了