C语言算法入门初学者求问要求中“to 1 do”的具体含义
问题解答
"to 1 do"的含义
这是伪代码的循环表述逻辑,意思是从两个数中更大的那个值开始,依次减1遍历,直到数值为1时停止循环,每次遍历检查当前数值是否可以同时整除你输入的两个数,第一个符合条件的数值就是两个数的最大公约数,找到后就可以直接终止循环。
现有代码错误修正
你目前写的代码有两处核心逻辑错误:
- 大小变量赋值写反:你现在的写法是把未初始化的
small/big赋值给输入的num1/num2,完全颠倒了赋值方向,正确的应该是把更小的输入值赋值给small,更大的输入值赋值给big。 - 循环没有写终止条件和判断逻辑,需要补充遍历的终止条件、公约数判断逻辑。
修正后的完整代码
#include <stdio.h> int main(void) { int common = 0; int num1; int num2; int big; int small; int i; printf("Enter the first number : "); scanf("%d", &num1); printf("Enter the second number : "); scanf("%d", &num2); // 修正赋值逻辑 if (num1 <= num2) { small = num1; big = num2; } else { small = num2; big = num1; } // 从大到小遍历到1,找最大公约数 for (i = big; i >= 1; i--) { if (num1 % i == 0 && num2 % i == 0) { common = i; // 找到最大的直接跳出循环 break; } } printf("最大公约数是:%d", common); return 0; }
内容的提问来源于stack exchange,提问作者assr 2016
相关产品推荐
相关产品推荐

