在线编译器 C

#include <stdio.h> int main() { long long int m; int q=0; scanf("%lld", &m); long long int save = m; while (m>0) { m /= 10; q++; } int A[q]; m =save; int i = q-1; while (m>0 ) { A[i] = m%10; i--; } for(int j = 0 ; j < q; j++) { printf("%d ",A[j]); } return 0; }
这段代码的功能是:读取一个整数,将其每一位数字按顺序存入数组,然后打印出来。代码整体思路正确,但存在一个潜在问题。

- 当输入的数字为0时,while循环不会执行,q保持为0,导致数组长度为0,后续操作会出错。你需要考虑如何处理输入为0的特殊情况。
- 变量命名可以更清晰,比如q代表位数,但名字不够直观;不过这不是错误,只是建议。