【发布时间】:2015-08-02 19:22:29
【问题描述】:
对于代码的长度以及执行过程可能很乏味,我提前道歉。我正在尝试将一个数字分解为单个数字并获得每个数字的阶乘。我已经成功地做到了(在 paxdiablo 的帮助下),但我想从 99999 一直到 0。为了做到这一点,我将所有代码放在一个循环中,从 99999 开始 indx 并减小值直到它达到 1。我尝试这样做的原因是因为我需要将每个数字的阶乘总和与数字进行比较,如果它们相等,那么我有一个匹配项。程序运行,数字 99999 的第一次运行运行良好,但下一个循环应该是 99998 并执行完全相同的操作,但下一个数字是 4。我不知道它为什么会这样做。任何帮助,将不胜感激。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
int indx;
int fact = 1;
int individualDigit[50];
int length;
for(indx = 99999; indx > 0; indx--)
{
num = indx;
for (length = 0; num > 0; length++, num /= 10)
{
individualDigit[length] = num % 10;
}
printf ("Digit count = %d, digits =", length);
for (indx = length - 1; indx >= 0; indx--)
{
printf (" %d", individualDigit[indx]);
}
for (indx = 0; indx < length; indx++)
{
while (individualDigit[indx] > 0)
{
fact = fact * individualDigit[indx];
individualDigit[indx]--;
}
printf("\n%d ", fact);
fact = 1;
}
printf("\n");
}
return 0;
}
【问题讨论】: