【发布时间】:2020-12-10 03:03:39
【问题描述】:
#include <stdio.h>
void seperate(int intNum);
int main()
{
int x;
printf("Please enter an integer: \n");
scanf("%d",&x);
seperate(x);
}
void seperate(int intNum)
{
int i,count=0;
while (intNum!=0)
{
intNum/=10;
++count; //to calculate the number of digits for user input = size of array
}
int array[count];
printf("The number on seperate line as follows:\n");
for(i=count-1; i>=0; i--)
{
array[i]= intNum%10;
intNum /= 10;
}
for(i=0; i<=count-1; i++)
{
printf("%d\n", array[i]);
}
}
预期输出(当数组大小固定时有效):
Please enter an integer:
42568
The number on separate line as follows:
4
2
5
6
8
输出:
Please enter an integer:
42568
The number on separate line as follows:
0
0
0
0
0
代码只有在数组大小固定的情况下才有效,如何解决这个问题?如果我创建一个数组而不声明大小,它不起作用吗?
编辑:变量intNum的值在while循环中改变,与数组的声明无关
【问题讨论】:
-
进行基本调试。使用调试器甚至只调试打印语句来跟踪程序的执行。它与数组的声明无关。考虑
intNum的值在for循环的开头是什么。如果您进行任何基本调试,您应该能够轻松发现这一点。 -
这里有几个非常好的调试链接How to debug small programs,考虑与鸭子聊天,然后查看What is a debugger and how can it help me diagnose problems?
-
while (intNum!=0){ ... }猜猜那个循环后intNum的值。