点赞(0)
 

0.0分

6 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 12 条评论

Cpp 1年前 回复TA
@nctdream #include <stdio.h> int main() {     int i,j,k=0;     int a[10000];     a[0]=1;     for(i=1; i<=10000; i++)     {         a[i]=0;     }     for(i=2; i<=1977; i++) /*阶乘每一位数*/     {         for(j=0; j<=k; j++) /*k使位数限定,即每次a[j]*=i时都只乘一位数*/         {             a[j]*=i;/*阶乘每一位数*/         }         for(j=0; j<=k; j++)         {             if(a[k]>=10)/*判断首位是否大于十,如果大于十,则k++,增加一位数*/             {                 k++;             }             if(a[j]>=10)/*判断每一位数,如果该位数大于十,则进位*/             {                 a[j+1]+=(a[j]/10);                 a[j]%=10;             }         }     }     for(i=k; i>=0; i--)     {         printf("%d",a[i]);     }     return 0; }
Cpp 1年前 回复TA
@nctdream 下面是我的仿版
Cpp 1年前 回复TA
@nctdream 上面是改编版,验证过了,是对的
Cpp 1年前 回复TA
@nctdream #include<stdio.h> int main() {     int i,j,k;     int a[10000]; //用数组存储结果     a[0]=1; //先存储1!     k=0; //用k来表示数组中数的第一位的下标     for(i=1;i<=10000;i++)     {         a[i]=0;     }     for(i=2; i<=1977; i++) //从1乘到1977     {         for(j=0; j<=k; j++) //用i乘以每个数             a[j]=a[j]*i;         for(j=0; j<=k; j++) //判断每个数是否大于10;大于10就进位         {             if(a[k]>=10) //判断数的第一位是否大于10;大于10 k就自加                 k++;             if(a[j]>=10) //判断每一位的数是否大于10,大于就进位             {                 a[j+1]=a[j+1]+a[j]/10;                 a[j]=a[j]%10;             }         }     }     for(i=k; i>=0; i--) //输出,从数的第一位开始输出         printf("%d",a[i]);     return 0; }
Cpp 1年前 回复TA
@nctdream 为什么不能撤回
Cpp 1年前 回复TA
@nctdream 哦,没错
Cpp 1年前 回复TA
@nctdream 但加上for(i=1;i<=10000;i++)     {         a[i]=0;     }才能正确
Cpp 1年前 回复TA
@nctdream 说错话了૮ ºﻌºა站岗
Cpp 1年前 回复TA
@nctdream me
Cpp 1年前 回复TA
@nctdream 错了