Online Compiler C

#include <stdio.h> int main() { int num; scanf("%d",&num); int a,b=0; while(num>0) { a=num%10; b=num/10%10; } if(a==b) { printf("YES\n"); } else { printf("YNO\n"); } return 0; }
这段代码试图判断一个整数的个位和十位数字是否相等,但存在逻辑问题。

- 代码中的 while 循环会无限执行,因为循环内部没有改变 num 的值,导致 num 始终大于 0,程序无法退出循环。
- 变量 a 和 b 分别获取了 num 的个位和十位数字,但循环结束后 a 和 b 的值只来自最后一次循环,而循环没有更新 num,所以实际上只获取了原始 num 的个位和十位,但循环本身是多余的。

- 提示1:思考 while 循环的作用是什么?如果只需要获取个位和十位数字,是否真的需要循环?考虑去掉循环,直接计算 a 和 b。
- 提示2:注意变量 b 的计算方式,num/10%10 在 num 小于10时会得到什么结果?确保程序能正确处理一位数的情况。