刚学C++,所以好多都不懂,求解
从1乘到100的程序代码怎么设计
[解决办法]
int pro = 1;
for(int i = 1; i <= 100; i++)
pro *= i;
[解决办法]
[解决办法]
摆脱,考虑一下越界的问题好吧!int表示的值是有范围的。
这样下来i=18的时候,pro就已经越界了!
[解决办法]
推荐使用下面的代码:
double nResult = 1;
for (int i = 1; i < 100; ++i )
{
nResult *= i;
}
[解决办法]
double mul=1.0;
int i=0;
while(++i<=100)
mul*=i;
[解决办法]
[解决办法]
double 申明变量的话能算到多少呀??int又是多少啊??
[解决办法]
1*100的程序是超大数概念,这里用int,double 都不行
必须定义数组来按位处理
你这随便一句话可还真不是那么容易实现的
[解决办法]
这就是阶乘的实现方法吧!!
如果说你是刚学cpp,而且
只是想知道阶乘的实现方法,
没必要搞的这么大,还是要学好基础
为妙!!
实现阶乘也可以用递归!!
int fac(int n)
{
if(n<0)
exit("error");
else
if(n==0)
return 0;
else
if(n==1)
return 1;
else
return (n*(fac(n-1));
}
[解决办法]
- C/C++ code
int main(){ int arr[200]={}; while(true) { arr[0]=1; int num=1; int carry=0; int x=0; cout <<"输入一个1至100整数求其阶乘(输入-1退出):"; cin >>x; if(!cin) { cin.clear(); cin.sync(); cout <<"字符无效,重新"; continue; } if(-1==x) break; if(x<=0 || x>100) { cout <<"数字超出范围,重新"; continue; } for(int i=2;i<x+1;++i) { for(int k=0;k<num;++k) { int prod=arr[k]*i+carry; arr[k]=prod%10; carry=prod/10; } if(carry) { do { arr[num++]=carry%10; } while(carry/=10); carry=0; } } cout <<x <<"!="; for(int i=0;i<num;++i) cout <<arr[num-1-i]; cout <<endl; } return 0;}