输入一个15以内的整数,求阶乘的 c语言源代码

如题所述

思路:定义一个函数fun(n)求n的阶乘,接着键盘输入一个整数,调用fun函数输出该数的阶乘。

参考代码:

#include"stdio.h" 
long fun(int n){
long sum =1;
int i;
for(i=2;i<=n;i++)
sum*=i;
return sum;
}
int main()
{
int n; 
scanf("%d",&n);
printf("%ld",fun(n));
    return 0;
}
/*
运行结果:
10
3628800
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-13
#include <stdio.h>
int main(void)
{
int i,n,m;
scanf("%d",&n);
m=1;
for(i=n;i>1;i--){
m*=i;
}
printf("%d\n",m);
return 0;
}

本回答被网友采纳
第2个回答  2015-04-13
#include<stdio.h>
#include<stdlib.h>
typedef struct {
char ch[2569];
int len;
}NumToChar;
void multiply(NumToChar* temp1,NumToChar* temp2)
{
int i,j,p=0,n,x,y,count=0;
NumToChar* temp=(NumToChar*)malloc(sizeof(NumToChar));
for(i=0;i<2569;i++)
{
temp->ch[i]='0';
}
temp->len=0;
for(i=0;i<temp2->len;i++)
{
p=0;
count=i;
for(j=0;j<temp1->len;j++)
{
x=temp1->ch[j]-'0';
y=temp2->ch[i]-'0';
n=x*y+p+temp->ch[count]-'0';
temp->ch[count++]=n%10+'0';
p=n/10;
}
n=temp->ch[count]+p-'0';
if(n/10){
temp->ch[count++]=n%10+'0';
temp->ch[count]=n/10+'0';
}
else
if(n!=0)temp->ch[count]=n+'0';
else count--;
}
temp->len=count+1;
for(i=0;i<temp->len;i++)
{
temp1->ch[i]=temp->ch[i];
}
temp1->len=temp->len;
}
void conversion(int i,NumToChar* pch)
{
int temp,m=0,count=0;
while(i!=0)
{
temp=i%10;
pch->ch[m++]=temp+'0';
i=i/10;
count++;
}
pch->len=count;
}
int main()
{
int i;
NumToChar ch1;
NumToChar ch2;
ch1.len=0;
ch2.len=0;
while(1){
for(i=0;i<2569;i++)
{
ch1.ch[i]='0';
ch2.ch[i]='0';
}
conversion(1000,&ch1);
int j;
scanf("%d",&j);
for(i=999;i>=j;i--)
{
conversion(i,&ch2);
multiply(&ch1,&ch2);
}
int count=0;
for(i=ch1.len-1;i>=0;i--)
{
if(ch1.ch[i]=='0')count++;
printf("%c",ch1.ch[i]);
}
printf("\n%d %d\n",ch1.len,count);
}
return 1;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网