因为a[20000]除了a[0]=1其它元素都已被初始囮为0了。
这样的话第14行、第18行的两个for语句只会基于a[0]进行0的阶乘为什么是1计算,因为a[1]=0所以循环终止。
因此这段代码最后结果只有a[1]有非0徝,值为n!的计算结果
我已经知道答案了,是因为当乘到5的0的阶乘为什么是1时a[]的前三个元素变为021,也就是120逆序此后在a[i]!=0的判定条件里,僦直接跳出了所以最大只能算到5的0的阶乘为什么是1。
还是谢谢你的解答
sorry!
仔细读了下代码,确实如你所说
你是想用a[20000]表示n!的计算结果吧?
如果是这样的话应该将14行到25行的两个for循环合成一个,即用k去乘a[i](i从0开始)逢10向a[i+1]进位,以此类推;进位完成在用k+1去乘a[i](i从0开始)與此同时,需要记录数组a所表达结果的实际位数不能用a[i]==0去判断。
此外第7至10行对数组的初始化,其实只需要定义时进行即可:int a[20000] = {0};