2 csdn acm CSDN_ACM 于 2017.01.16 16:10 提问

C语言阶乘计算。n!=1*2*3*…*n

#include
#define N 10000
int main()
{
int a[N]={1};
int k=0,l=1,n;
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j {
a[j]=a[j]*i+k;
k=a[j]/10000;
a[j]=a[j]%10000;
}
if(k)
{
a[j]=k;
l++;
k=0;
}
}
printf("%d",a[l-1]);
for(i=l-2;i>=0;i--)
printf("%04d",a[i]);
printf("\n");
return 0;
}
哪位大神可以告诉我这代码是什么意思怎么运行的,看不懂小白一名

2个回答

jhcconan614
jhcconan614   2017.01.16 21:52
已采纳
 #define N 10000
int main()
{
    int a[N] = { 1 };//
    int k = 0, l = 1, n;
    int i, j;
    scanf("%d", &n);//输入一个整数
    for (i = 1; i <= n; i++)//
    {
        for (j = 0; j<i;j++)//
        {
            a[j] = a[j] * i + k;//求阶乘的
            //给出上限10000,如果在所得阶乘结果在范围内,那么值不变;否则,去掉最高位
            k = a[j] / 10000;
            a[j] = a[j] % 10000;
        }
        if (k)//判断是否超出上限10000
        {
            a[j] = k;
            l++;
            k = 0;
        }
    }
    printf("%d", a[l - 1]);
    //计算结果:如:输入10,则输出8800,其正确结果为:3628800
    for (i = l - 2; i >= 0; i--)//
        printf("%04d", a[i]);
    printf("\n");
    system("pause");
    return 0;
}
LD0807
LD0807   2017.01.16 18:49

重点就是两个for循环,你把基本的语法看懂了应该这个不难吧。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c语言方法实现1!+2!+3!+4!+.....+n!=?阶乘之和
c语言方法实现1!+2!+3!+4!+.....+n!=?阶乘之和
n的阶乘和计算1!+2!+3!+........+n!
n阶乘:1x2x3x4……xnint main() { int n ; scanf(&quot;%d&quot;, &amp;amp;n); int sum = 1 ; int i = 1; for (; i &amp;lt;= n; i++) { sum=sum*i; } printf(&quot;%d\n&quot;, sum); system(&quot;pause&quot;); return 0; }计算1!+2!+3!...
编程求阶乘之和1!+2!+......+n!
#include int sum_fun(int n)     //递归函数求各项阶乘 {  if(1 == n) {  return 1; } else {  return sum_fun(n - 1)*n; } } int main() {  int i,n,sum = 0; printf("n = "); scanf("%d",&n);
递归求奇数的阶乘1*3*5*7......*n(n为奇数)
/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:fibnacci.cpp * 作 者:赵加响 * 完成日期:2013 年11 月 20 日 * 版本号:v1.0 * 输入描述:无 * 问题描述:递归
PAT 7-41 C语言练习题
7-41 计算阶乘和(10 分)对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。输入格式:输入在一行中给出一个不超过10的正整数N。输出格式:在一行中输出S的值。输入样例:3 输出样例:9 #include &amp;lt;stdio.h&amp;gt;int main(){ int i,j,n,res=1,sum=0; scanf(&quot;%d&quot;,&amp;amp;n); for(i=1;i&amp;lt;=n...
C语言:求n的阶乘/求1!+2!+.....+n!
       首先求n的阶乘,我们先要产生1-n的数字,然后累乘起来,利用for循环来实现。       所以求n的阶乘的具体代码如下:#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; int main() { int i = 0; int n = 0; int ret = 1; scanf_s(&quot;%d&quot;, &amp;amp;n);//输入n ...
1133: 【C语言训练】求1+2!+3!+...+N!的和
题目描述 求1+2!+3!+...+N!的和 输入 正整数N(N〈=20) 输出 1+2!+3!+...+N!的和 (结果为整数形式) 样例输入 3 样例输出 9 提示 这道题目,看提交和通过率1/5吧,所以发出来了。 我觉得他们是不知道怎么存储20的阶乘,因为这个数据是很大的,暂且不说还要累加。 由于OJ系统不同,要用lld%,但是我自身编译
计算1!+2!+3!+......+n!的和
main() { int i,j,n; long p,sum=0; printf(“input n:”); scanf(“%d”,&n);for(i=1;i<=n;i++) { p=1; for(j=1;j<=i;j++) { p=p*j; } sum=sum+p; } printf("1!+2!+...+%d!=%d\
c语言用递归的方法实现1!+2!+3!+4!+.....+n!=?阶乘之和
#include "stdafx.h" #include int getmul(int n){//递归求阶乘 int sum; int temp = 1; if(n<=0){ printf("输入的数据错误,不能小于0!\n"); return -1; }else{ if(n ==1 ){ su
求1到任意整数的阶乘之和 例如(1!+2!+3!+~~~+n!)
 using System;using System.Collections.Generic;using System.Text;namespace Text{    class Program    {        static void Main(string[] args)        {            Program p = new Program();