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

#include <stdio.h> int main() { int n,k; scanf("%d %d",&n,&k); int b=n; int p=0; while(b>0){ b=b/10; p++; } int arr[10]; for(int i=0;i<n;i++){ arr[i]=n%10; n=n/10; Дано целое, неотрицатльное число N и натуральное число K. Необходимо вывести на печать K-ую цифру числа N. Гарантируется, что число K не превосходит количества цифр в числе N. } printf("%d",arr[p-k]); }
1) 这段代码试图从整数N中提取第K位数字,但存在逻辑错误和语法问题。代码先计算数字位数,然后尝试将数字的各位存储到数组中,但循环条件和数组使用方式不正确。

2) 提示1:注意循环条件`i<n`会导致无限循环,因为n在循环中被不断除10改变,应该改为`i<p`来遍历每一位数字。
提示2:数组arr的大小固定为10可能不够,应该根据实际位数p来定义数组大小,或者重新考虑存储数字位的方案。