编写程序,输入正整数n,计算它的阶乘n!(n*(n-1)*…*3*2*1)用高中数学做

如题所述

第1个回答  2011-04-05
因为32位机器long类型表示的数值有限,以下程序最大能求31!(退出程序请输入-1)
#include <stdio.h>
unsigned long get_jiechen(int base)
{
return((base==0)?1:(base*get_jiechen(base-1)));
}

int main(int argc,char **argv[])
{
int li_base=0;
unsigned long ll_result=0;
while(1==1){
printf("请输入您要计算的阶乘基数(输入-1退出):");
scanf("%d",&li_base);
if(li_base==-1) break;
ll_result=get_jiechen(li_base);
printf("%d 的阶乘是%lld!\n",li_base,ll_result);
}
return 0;
}
第2个回答  2011-04-04
#include <stdio.h>
void main()
{ /*因为它的值一定大于整型的最大值,所以使用长整形变量*/
long num1=1,num2=0,x;
for (x=1;x<=10;x++)
{ num1*=x; num2+=num1; }
printf("num = %ld\n",num2); }
第3个回答  2011-04-01
int n;
int sum=1;
scanf("%d",n);
if(n>0)
{
for(;n>0;n--);
sum=sum*n;
}
else if(n<0)
printf("输入有误。。");
else
sum=1;
printf("%d",sum);
好久没用C了,大致是这个样子,参考下追问

这个是C语言的嘛,还是高中数学也要这样啊。。。

追答

那不明白你是什么意思

追问

其实我们高中也没有这种问题,只是前面高中的有个妹问的,她说题目就是这样。但是,高中并没有用计算机知识解答数学的吧。呵呵,不过还是很感谢!

本回答被网友采纳
相似回答