解题思路:
注意事项:初始化 a[1]=1,len=1
参考代码:
#include
int main()
{
int n,i,j,k,len=1,a[100000]={0};//len长度一开始定为 1
scanf("%d",&n);
a[1]=1;
for(i=1;i<=n;i++)//要乘的数
{
for(j=1;j<=len;j++)//len表示有效数组的长度
{
a[j]*=i;//先把每一位算出来再存 例如:a数组为12345 i=35时 a[j]*i即 1*35 2*35 3*35 4*35 5*35 a数组后来为 35 70 105 140 175
}
for(k=1;k<=len;k++)/*转为十进制存储 35进3余5 70+3=73 进7余3 105+7=112进11 余2 140+11=151进15 余1 175+15=190 进19 余0 a数组后来为 进制+余数 再求余,得到的余数就是a数组存储的十进制结果 。即 5 3 2 1 0*/
{
if(a[k]>9)//需要进位的情况
{
a[k+1]+=a[k]/10;
a[k]%=10;
if(a[k+1]!=0&&k==len)
{
len++;//最高位需要进位
}
}
}
}
for(i=len;i>=1;i--)
{
printf("%d",a[i]);
}
return 0;
}
0.0分
3 人评分
大神老白 (C语言代码)浏览:640 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1294 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1143 |
IP判断 (C语言代码)浏览:761 |
【计算直线的交点数】 (C语言代码)浏览:1442 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:606 |
字符逆序 (C语言代码)浏览:455 |
局部变量作函数返回值的问题浏览:963 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:503 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:473 |