You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:15:05