gpt4 book ai didi

c - 不明白为什么我的循环不超过 2

转载 作者:行者123 更新时间:2023-11-30 17:42:46 25 4
gpt4 key购买 nike

我正在尝试编写一个程序(c),其输入是2到20之间的整数。输出将是 0 到 1 之间的所有不可约分数,它们的分母<=(输入数字)。

例如:

输入num=7输出将是:

对于分母 2

1/2

对于分母 3

1/3
2/3

对于分母 4

1/4
3/4

对于分母 5

1/5
2/5
3/5
4/5

对于分母 6

1/6
5/6

对于分母 7

1/7
2/7
3/7
4/7
5/7
6/7

我的问题是第一个循环的计数器 i 没有超过 2,并且 j 循环中的 printf 行没有发生无法理解我做错了什么。感谢您的帮助。

int main()
{
int num, i, k, j, a, b;
printf("Please enter natural denominator < 20\n");
scanf("%d", &num);

for (i = 2; i < num ; i++) { /* loop for denomiator */
printf("For denominator %d\n", i);

for (k = 1; k < i; k++) { /* loop for numerator */
for (j = k; j > 0; j--) {
a = k % j;
b = i % j;
if (a == 0 && b == 0) {
printf("%d/%d", k, i); /* this line doesn't print for any input */
}
}
}
}
return 0;
}

最佳答案

除了您所描述的问题(starrify 已给出解决方案)之外,您的逻辑也存在缺陷。

您不是跳过可以简化的条目,而是多次打印它们。

这个问题可以通过修改最里面的循环来解决,如下所示:

        int canBeSimplified = 0;
for (j = k; j > 1; j--) {
a = k % j;
b = i % j;
if (a == 0 && b == 0) {
canBeSimlified = 1;
}
}
if (!canBeSimplified) {
printf("%d/%d\n", k, i);
}

关于c - 不明白为什么我的循环不超过 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com