c - 为什么这段代码会在 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;
}
解决方案
for 循环不正确。您需要使用==
而不是=
. =
运算符用于赋值,用于==
比较。i == 0
此外,您希望循环在条件应为时停止i != 0
。以下循环对我有用:
for(i = r; i != 0; ) {
a = b;
b = i;
hcf = b;
i = a%b;
}
推荐阅读
- python - 用于目录的 StringIO:如何在 Python 中创建内存目录
- html - 带右箭头的 CSS 按钮
- c++ - 带有 std::move 的构造函数而不通过引用传递
- c++ - 创建一个模板以在 C++11 中迭代映射,如 C++17 的结构化绑定
- kubernetes - 我们可以只为 kubernetes kubedns 服务的 configmap 中的本地流量增加缓存吗?
- c++ - Gtest 和 Gmock 教程和文档站点/博客
- python - Nifi ExecuteScript / 尾文件
- javascript - 在 Web Inspector 中找不到 HttpOnly Cookie
- php - JWT 使用 Firebase 在没有 cookie 的情况下保持登录
- r - 循环R中的2个数据集以匹配一个日期集中所有行的值与另一个日期集中只有一列