主题:一个想了3天3夜没想出来的问题
缄默已久
[专家分:0] 发布于 2005-06-06 12:18:00
[em10]这个问题就是怎么编程算出1到100的阶乘?那为老师能告诉我该怎么实现么?[em18]
回复列表 (共27个回复)
沙发
59030777 [专家分:3220] 发布于 2005-06-06 12:25:00
这个 问题想了3天3夜! 无语!!
楼主要使用什么语言呀!!
板凳
海涛 [专家分:0] 发布于 2005-06-07 03:06:00
不会吧!比我还菜~~??
3 楼
liyu355 [专家分:980] 发布于 2005-06-07 12:16:00
我告诉你也
记得给我评分哦
很简单的拉
//我这里用的C++哦
//本程序用来解决100的阶乘问题
//程序编辑时间 2005 6 7
//编写人 东风破 :)
#include "iostream.h"
void main()//我这里直接用主函数写了哦.如果想用函数写也行的,自己改下哈.
{
int i;
double sum=1;//sum用来存储N!的值.这里必须要用到double哦,
//如果是long 类型的话,那么到大概98的样子就溢出了哒.
for(i=1;i<=100;i++)
sum=sum*i;
cout << "100的阶乘为 :" << sum <<endl;//cout 是C++里面的拉,如果你用C的话
//那么用printf("%lf\n",sum);就好,但是
//在C里面不要#include "iostream.h"这个
}
但是如果你想求更多的,比如说求3! 或许其他的
可以这样子
//我这里用的C++哦
//本程序用来解决N!问题
//程序编辑时间 2005 6 7
//编写人 东风破 :)
#include "iostream.h"
void main()//我这里直接用主函数写了哦.如果想用函数写也行的,自己改下哈.
{
int i;
double sum=1;//sum用来存储N!的值.这里必须要用到double哦,
//如果是long 类型的话,那么到大概98的样子就溢出了哒.
int n;//是用来存储N的,就是说你想求的是N的阶乘.
cout << " 请输入你想求的阶乘 : " << endl;
cin >> n; //用C就是scanf("%d",&n);
for(i=1;i<=n;i++)//很多人在这里有一条语句if(n==0) ....
sum=sum*i; //我个人觉得没什么必要的拉.呵呵.为什么呢,自己想吧.
cout << n <<"的阶乘为 :" << sum <<endl;
}
详细吧,兄弟们给我评分.
4 楼
liyu355 [专家分:980] 发布于 2005-06-07 12:18:00
个人觉得我们应该养成良好的回帖习惯
不要什么东西都无所谓的样子.
以为写个程序出来就有什么了不起
老实说
对于没有注释的玩意
我看都不会看一眼
简直在浪费我的生命
5 楼
churche [专家分:0] 发布于 2005-06-10 21:02:00
0分!早就溢出了,你知道不知道
6 楼
FancyMouse [专家分:13680] 发布于 2005-06-11 11:07:00
精度不够哈,才几位有效数字
7 楼
融化南极 [专家分:0] 发布于 2005-06-17 23:15:00
放在一个一维数组里
8 楼
FancyMouse [专家分:13680] 发布于 2005-06-18 00:36:00
呵呵,要精确到个位必须要用到大数类。
否则……偶有一个很垃圾的办法:
#include<math.h>
#include<iostream.h>
void main()
{
double sum=0.0,a;
for(a=1.0;a<=100;a++)
sum+=log10(a);
sum=pow(10.0,sum);
cout<<sum;
}
呵呵很阴险的吧
9 楼
jay0518 [专家分:3150] 发布于 2005-06-18 11:50:00
3楼兄弟
能告诉我:
100!的阶乘是多大吗?
10 楼
yjlh1234 [专家分:420] 发布于 2005-06-22 12:01:00
用循环吧(可能有点慢)
或是递归算法
我来回复