Online Compiler C

#include <stdio.h> int main() { int N; int a[99]; int i = 0; scanf("%d", &N); while (N >= 1) { a[i++] = N % 10; N /= 10; } for (int j = i - 1; j >= 0; j--) { printf("%d ", a[j]); } return 0; }
这段代码的功能是:读入一个整数N,然后按从高位到低位的顺序输出它的每一位数字,数字之间用空格分隔。

代码的思路是:通过不断取余和整除10,将N的每一位数字从低位到高位依次存入数组a中,然后再从数组末尾向前遍历,实现高位到低位的输出。

- 数组a的大小固定为99,如果输入的N位数超过99位(比如一个非常大的整数),程序可能会出错。考虑一下如何让数组大小更灵活,或者如何避免这个限制。
- 当N等于0时,while循环条件N >= 1不成立,循环不会执行,数组a中没有存入任何数字,后续的for循环也不会输出任何内容。想一想,如果输入0,程序应该输出什么?目前的代码能正确处理吗?