对于代码的长度以及遵循它可能会多么乏味,我提前表示歉意。我正在尝试将数字分解为单个数字并获取每个数字的阶乘。我已经成功地做到了这一点(在 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;
}
最佳答案
“indx”中的值被多个 for 循环使用。线路
for (indx = 0; indx < length; indx++)
将 indx 递增到 4,这是您的外循环使用的值。只需使用一些新变量来计算不同的循环
关于c - 分解一个数字 int 数组并获得每个数字的阶乘 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31775696/