用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

*/

以下是一份C语言程序,能够计算并显示一个正整数的各位数字之和:

```c

#include <stdio.h>

int main() {

int num, sum = 0

printf("Please input a positive integer:")

scanf("%d", &num)

// 循环提取num的个位数字并求和

while (num >0) {

sum += num % 10

num /= 10

}

// 输出结果

printf("The sum of digits of the integer is: %d\n", sum)

return 0

}

```

在程序中,首先从键盘输入一个正整数,然后利用循环计算该数的各位数字之和,并把结果存储在变量 `sum` 中。在循环中,每次取余 *** 作 `num % 10` 可以得到num的个位数字,将结果加入累加器中,同时将 `num` 缩小10倍,以便在下一次循环时提取下一位数字。当 `num` 被除以 10 后,如果商为 0,则表示num的所有位数都已经被提取完了,可以退出循环。

最后,输出结果即可。

需要注意的是,在实际的应用场景中,应该对输入的正整数进行边界处理,以确保输入数据的正确性。同时,在进行整数运算时,还需要注意可能出现的整数溢出问题。

此程序可通过以下步骤实现:

1、输入一个正整数

2、将整数转换为字符串(使用sprintf函数)

3、求字符串的长度(strlen函数),即正整数的位数

代码如下:

#include <stdio.h>

#include <string.h>

int main()

{

long num

char str[20]

scanf("%ld", &num)

sprintf(str, "%ld", num)

printf("%d", strlen(str))

return 0

}

这样写主要是考虑到整数的前面可能有0,比如:00090,是两位数。如果确认没有前置0的话,可以简化过程,省去转换为字符串的过程,直接用gets得到字符串。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存