用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时,你需要编写一个C语言程序来确定n是几位数。这可以通过计算n的位数来实现。具体来说,你可以使用循环来将n除以10,直到n小于10为止。每次除以10时,计数器加1,最终计数器的值就是n的位数。

以下是一个简单的C语言程序,可以实现这个功能:

```

#include <stdio.h>

int main() {

int n

int count = 0

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

scanf("%d", &n)

while (n >= 10) {

n /= 10

count++

}

count++// 加上最高位

printf("%d 是 %d 位数。\n", n, count)

return 0

}

```

在这个程序中,我们首先声明了一个变量n来存储输入的正整数,以及一个计数器count来记录n的位数。然后,我们使用scanf函数来读取用户输入的n。接下来,我们使用一个while循环来将n除以10,直到n小于10为止。每次循环时,计数器count加1。最后,我们再将count加1,以计算最高位的位数。最后,我们使用printf函数输出n的位数。

希望这个C语言程序能够帮助你解决这个问题!


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

原文地址: https://outofmemory.cn/yw/11186244.html

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

发表评论

登录后才能评论

评论列表(0条)

保存