解题思路:循环里嵌套一个乘法:把大数a存到数组里,让数组的每一个数都乘以另一个数b,数值溢出就向前进位。
注意事项:
参考代码:
#include<stdio.h>
int main(void)
{
int c[100000]={0}; c[0]=1;//存储大数的数组,并初始化
int add = 0;
int size = 1;//size为数组存储的数值的位数,也是乘法中较大数的位数
int num;
scanf("%d",&num);//读取数值,准备计算num的阶乘
for(int j=1;j<=num;j++)//累乘,从1乘到num为止
{
/*下面两个for循环用于计算乘法*/
for(int i=0;i<size;i++)
{
int come = c[i]*j+add;
c[i] = come%10;
add = come/10;
}
for(;add>0;)// 如果还有进位,继续扩展数组
{
c[size] = add%10;
add = add/10;
size++;
}
}
for(int i=size-1;i>=0;i--)//逆序输出result数组,便是计算结果
{
printf("%d",c[i]);
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复