Онлайн компилятор C

#include <stdio.h> int main() { int input1,input2,oct; scanf("%d%d" &input1,&input2); while(input2>0) { oct=input1%input2; input1=input2,input2=oct; } printf("%d",input1); return 0; }
这段代码试图计算两个整数的最大公约数(GCD),但存在语法错误和逻辑问题。

- 第5行的 `scanf` 函数调用中,格式字符串和参数之间缺少逗号,导致编译错误。
- 代码使用辗转相除法(欧几里得算法)求最大公约数,但循环条件 `input2>0` 是正确的,不过变量命名容易混淆。

- 检查 `scanf` 的语法,确保格式字符串和参数列表用逗号分隔。
- 思考一下:当 `input2` 变为0时,`input1` 是否就是最大公约数?当前代码在循环结束后直接输出 `input1`,这个思路是否正确?