第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); }