1乘2乘3乘到100的c语言(1乘以2乘以3乘以4乘到100, 用C语言编辑出来)

本文目录
1乘以2乘以3乘以4乘到100, 用C语言编辑出来
你这个属于大数的乘法了,对于已经给定的类型已经满足不了精度了
所以只能用
数组
来存储,然后进行运算
举个例子吧,现在已经乘到10了
1*2*3*4*5*6*7*8*9*10已经得到结果了3628800
现在计算3628800*11(算法是小学的那种竖式计算)
3628800
11
---------------------------------------------
3628800
3628800
然后a[n]b[n]c[n]
分别表示三个数组(c[n]装结果)(如果你学过
数据结构
的话就用栈)
分别知道a.length和b.length
假设数组a[i]为(i=1,2,a.length):0088263
b[i]为(i=1,2,a.length):0088263
那么就是:
c里面的元素都先为0;
c=a;
for(j=2;j《b.length;j++)
{
c[j]=c[j]+a[j]+b[j-1];
if(c[j]》=10)
{
c[j]=c[j]%10;
c[j+1]=c[j]/10;
}
}
c[j]=b[j];
差不多就是这个
思路
。。。
我也没好好写,判断那些的写的时候自己考虑周全点就好了
存储方式可以自己去优化,我这也是给你说个思路,我的这是不合理的!
加油!!!大概的思路就是这样,提高精度
直接乘的话你会越界的
C语言1乘到100怎么编写
100的阶乘已经是大数相乘了,在c语言中没有现成的数据型可以用,所以用数组模拟计算
#include 《stdio.h》
#define MAXN 1000
int a[MAXN],b[MAXN];
void pwrite(int *a,int k,int c)//将计算的结果数组[a]按每一位输出,k为所计算数字,i为计算所得位数,计算后所得结果是按从最后一位到第一位,故应该倒序输出
{
int i;
printf(“%4d != “,k);
for(i= c-1;i》=0;i--)
{
printf(“%d“,a[i]);
}
printf(“\n\n“);
}
void pnext(int k,int *cp);
int main(void)
{
int n,c,k;
printf(“Enter the number n(n《=100):“);
scanf(“%d“,&n);
a=1;
c=1; //初始化长度为1,随计算位数增加
/*pwrite(a,1,c);*/
for(k=2;k《=n;k++)
{
pnext(k,&c); //此处计算结果,计算1*2*3*...*n
//pwrite(a,k,c);
if (k==n)
{
pwrite(a,k,c);//计算到n时输出
}
}
system(“pause“);
return 0;
}
void pnext(int k,int *cp) //cp此处代表计算的位数,n代表将要乘的数字
{
int i, j;
int temp = *cp;
for ( i=0; i《temp; i++ )
{
b[i] = a[i]; //利用b[i]作为暂时记录的数组
}
for ( i=1; i《k; i++ )// add for k-1 times
{
for ( j=0; j《temp; j++ )
{
a[j] += b[j]; //每一位对齐相加,
if ( a[j] 》 9 )
{
a[j+1] += a[j]/10;
a[j] = a[j]%10; //如果大于9则进位
if ( j == *cp-1 )// add *cp for only once
{
(*cp)++; //如果是最高位,则自加即可,不必进位
}
}
}
}
while ( a[*cp-1] 》 9 )
{
a[*cp] += a[*cp-1]/10;
a[*cp-1] = a[*cp-1]%10;
(*cp)++; //对最高位进行处理,此时n值已变,故应自加
}
}
1×2×3×4×5×.×100C语言编程
#include 《stdio.h》
__int64 run(int num);
int main(void)
{
printf(“1×2×3×4×5×....×10计算的结果是:%lld\n“,run(1));
return 0;
}
__int64 run(int num)
{
if (num 》= 10)
{
return num;
}
num *= run(num+1);
return num;
}
求得的数字太大,就先加到10吧,结果是对的,望采纳!
s=1×2×3×100的c语言
#include “stdafx.h“
int main(int argc, char* argv)
{
int i = 1;
double sum = 1;
for (i; i 《 101; i++)
{
sum = sum * i;
}
printf(“sum = %d“, sum);
getchar();
getchar();
return 0;
}
单片机1*2*3*****100怎么用C语言编程
楼上的代码全有问题,1乘到20就已经等于2432902008176640000了,早已经溢出了
所以你需要自己定义一个长数组用来放这个数字,刚大概用电脑上的计算器算了下,大概是10的160次方左右,例如定义char a ,其中a是个位,a是十位,依次类推,长整数的乘法算法也不简单,估计你算的是累加吧,要真是累乘,那比较麻烦的

更多文章:
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00








