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

#include <stdio.h> int main() { int a,k; int sum=0; scanf("%d %d",&a,&k); int temp;int A=a; while(A>0){ A=A/10; sum++; } if(sum<k){ printf("error"); return 0; } for(int i=0;a>0;i++){ temp=a%10; if(i==k){ printf("%d",temp); } } return 0; }
1) 这段代码旨在读取一个整数a和位置k,然后输出a的第k位数字(从最低位/个位开始计数为0)。但代码存在逻辑问题,无法正确输出结果。

2) 提示:
- 循环条件 `a>0` 会导致在找到第k位之前,如果a变为0就会提前退出循环
- 当k大于数字总位数时,虽然进行了错误检查,但正确找到第k位后没有及时终止循环