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; num=num/10; } if(a==b) { printf("YES\n"); } else { printf("YNO\n"); } return 0; }
这段代码试图判断一个整数的最后两位数字是否相同,但逻辑上有问题。

代码在循环中不断更新变量a和b,循环结束后只保留了最后一位数字(a)和倒数第二位数字(b),但循环条件`num>0`会导致所有位都被处理,最终a和b的值取决于循环结束时的状态,而不是你想要的最后两位。

- 循环会一直执行到num变为0,每次迭代都会覆盖a和b的值,所以循环结束后a和b并不是原始数字的最后两位,而是处理过程中最后一步的值。
- 你不需要用循环来处理所有位,只需要直接取出最后两位数字进行比较即可。