Kri*_*Oza 7 c++ type-conversion factorial
为什么下面的程序将 100 作为输入的阶乘打印为 0。如果 getFact 函数返回类型为 ,则可以计算相同的阶乘long double,但为了获得数字总和,我无法在 long double 上应用mod (%)运算符。
注意:unsigned long long和的大小long double在我的机器上相同。请建议输入为 100 什么类型的数据会给出正确的输出。
#include <iostream>
#include <stdlib.h>
unsigned long long int getFactorial(int);
unsigned long long int getSum(unsigned long long int);
int main()
{
unsigned long long int fact = 1;
unsigned long long int digsum = 0;
std::cout << "Enter a number to find fact := ";
int num;
std::cin >> num;
fact = getFactorial(num);
std::cout << num <<"'s factorial is = " << fact << std::endl;
digsum = getSum(fact);
std::cout << sizeof(unsigned long long int) << std::endl;
std::cout << sizeof(long double) << std:: endl;
std::cout << "Sum of the digits in the number" << num << "! is :=" << digsum << std::endl;
return 0;
}
unsigned long long int getFactorial(int num)
{
if(num == 1)
return 1;
else
return (num * getFactorial(num - 1));
}
unsigned long long int getSum(unsigned long long int fact)
{
if(fact == 0)
return 0;
else
{
int temp = 0;
temp = fact % 10;
return (temp + getSum(fact/10));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8897 次 |
| 最近记录: |