首页 > 解决方案 > 为什么这段代码会在 a%b != 0 时给出这个输出 - “HCF is: 1”?

问题描述

该程序通过公式/算法 - 'a = bq +r' 来计算两个整数 a 和 b 的 HCF,其中 a 和 b 是两个数,q 是商,r 是余数。
这是代码。

#include <stdio.h>
int main() {
int a, b;
printf("enter both numbers a>b to find HCF\n");
scanf("%d %d",&a, &b);
int q, r, hcf;
if(a%b == 0) {
    r = 0;
    hcf = r;
} else {
    q = a/b;
    r = a%b;
}
int i;
for(i = r; i = 0;) {
    a = b;
    b = i;
    hcf = b;
    q = a/b;
    i = a%b;

}
printf("HCF is: %d", hcf);
return 0;
}

标签: c

解决方案


for 循环不正确。您需要使用==而不是=. =运算符用于赋值,用于==比较。i == 0此外,您希望循环在条件应为时停止i != 0。以下循环对我有用:

for(i = r; i != 0; ) {
   a = b;
   b = i;
   hcf = b;
   i = a%b;
}

推荐阅读