用C语言编写程序从键盘输入一个正整数数n,输出n!

用C语言编写程序从键盘输入一个正整数数n,输出n!,第1张

编程实现计算n!,也就是n*(n-1)*(n-2)*....*1,可以通过递归函数来实现,具体实现方法:

#include <stdio.h>

int Func(int n)

{

if(n <2)

return 1

else

return n*Func(n-1)

}

void main()

{

int n =0,m=0

printf("请输入一个正整数:")

scanf("%d",&n)

m=Func(n)

printf("%d!=%d\n",n,m)

}

在以上程序代码中,Func()为递归函数,主函数main()中接收键盘输入整数值后,调用Func()递归函数,首层m=n*(n-1)!,继续递归调用,m=n*(n-1)(n-2)!,这样逐层递归,直到计算出N!。

程序输出结果如下:

扩展资料:

所谓n的阶乘就是从1到n的乘积,所以除了递归法来实现以外,其实我们也可以通过一个for循环,从1到n依次求积同样可以达到计算n!的目地。

具体实现代码如下:

#include <stdio.h>

int main() {

int n,i,s=1

scanf("%d",&n)

for(i=1i<=ni++)//for循环求累积

s=s*i

printf("%d\n",s)

return 0

}

/*

运行结果:(例如求5的阶乘)

5

120

*/

要输出一个自然数N的位数,可以使用log10函数。log10函数的返回值是以10为底的对数,可以用来计算一个数的位数。具体实现如下:

#include <stdio.h>#include <math.h>int main() {int nscanf("%d", &n)int digits = (int)log10(n) + 1printf("%d\n", digits)return 0}

首先,使用scanf函数读入一个自然数n。然后,使用log10函数计算n的位数。由于log10函数返回的是一个浮点数,需要强制转换为整数。最后,使用printf函数输出位数。

程序为:

#include<stdio.h>

void main()

{

int a[100],i,item,sum1,sum2,item1,item2//sum1,sum2分别储存奇数、偶数之和,item1,item2分别表示奇数、偶数的个数

printf("请输入所要输入整数的个数:")

scanf("%d",&item)

printf("请输入%d个整数:\n",item)

for(i=0i<itemi++)

scanf("%d",&a[i])

sum1=sum2=item1=item2=0

for(i=0i<itemi++)

{

if(a[i]==0) item2++//0是特殊偶数

else if(a[i]%2==0)

{

sum2=sum2+a[i]

item2++

}

else

{

sum1=sum1+a[i]

item1++

}

}

printf("奇数之和为:%d,偶数之和为:%d\n",sum1,sum2)

}

扩展资料:

for表达式

表达式1:一般为赋值表达式,给控制变量赋初值;

表达式2:关系表达式或逻辑表达式,循环控制条件;

表达式3:一般为赋值表达式,给控制变量增量或减量。

语句:循环体,当有多条语句时,必须使用复合语句。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10998434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存