| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1546 人关注过本帖
标题:[原创] 1-10的阶乘代码请大家修改一下,,谢谢
只看楼主 加入收藏
yz1987cn
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-3-5
收藏
得分:0 
#include<stdio.h>
long jc(long n)
{
return n==0?1:n*jc(n-1);
}
main()
{
int n;
scanf("%d",&n);
printf("\n%ld\n",jc(n));
}16以前能算,以后试了几个怎么是负数?我菜高手解释下

潘安退避三舍,宋玉甘拜下风
2006-03-15 22:59
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用yz1987cn在2006-3-15 22:59:00的发言:
#include<stdio.h>
long jc(long n)
{
return n==0?1:n*jc(n-1);
}
main()
{
int n;
scanf("%d",&n);
printf("\n%ld\n",jc(n));
}16以前能算,以后试了几个怎么是负数?我菜高手解释下

数据溢出了


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-15 23:06
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

我刚写了个可没数据验证,没敢发(怕误导大家),不管了,你们找东西验证吧
这个只可以计算750多以内的阶乘,当然可以改N的值,算出更大的n!,不过一个屏幕显示不了
[CODE]
#include <stdio.h>
#include <conio.h>
#define N 2000 /*存储每位数字*/
void Mul(int p[],int n)
{
static m=0; /*末尾0的个数*/
int i,j,k=0,d=1;

for(i=m;i<N;i++)
{
p[i]=p[i]*n+k; /*k是上一位的进位数*/
k=p[i]/10;
p[i]=p[i]%10;

if( (p[i]==0) && (d==1) ) /*计算末尾0的个数*/
m++;
else
d=0;
if(k==0)
{
for(j=i+1; (j<N) && (p[j]==0); j++); /*如果未进行计算的各位为0,break;*/
if(j>=N)
break;
}


}
}

void main()
{
int a[N]={0};
int i,n;

scanf("%d",&n);
a[0]=1;

for(i=1;i<=n;i++)
Mul(a,i);

for(i=N-1; (i>=0) && (a[i]==0); i--); /*去掉前导的0*/
for(;i>=0;i--)
printf("%d",a[i]);

getch();
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-16 02:15
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
我觉得想要的是下面的

2006-03-16 07:17
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
#include <stdio.h>
#include <conio.h>
main()
{
long a,b,i,sum=0;
for(i=2;i<=10;i++)
{
a=1;
b=i;
while(b>1)
{
a*=b*(b-1);
b=b-2;
}
sum+=a;
printf("i=%ld,b=%ld\n",i,a);
}
printf("%ld",sum);
getch();
}

2006-03-16 07:17
ligx746
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-3-15
收藏
得分:0 
这个简单
#include<math>
main()
{
int i ,j;
j=1;
for (i=1;i<=10;i++)
j=j*i;
printf("%d",j)
}

2006-03-16 10:52
situ7886
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-3-5
收藏
得分:0 
2006-03-18 07:57
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
想要精练啊~~哇哈哈哈哈哈

int main(int i,int j){
for(j=i=1;i<=10;j=j*i++);
return !printf("%d",j);
}

淘宝杜琨
2006-03-18 08:38
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
收藏
得分:0 
,17! 太大了,结果就溢出了

2006-03-18 08:56
lyjgrace
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-11
收藏
得分:0 
我以前做过这个题目啊,好像没那么复杂吧?你们写的我怎么都看不懂啊!
2006-03-18 13:00
快速回复:[原创] 1-10的阶乘代码请大家修改一下,,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012839 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved