求1到100的阶乘,应该用数组表示大整数吧.希望每行都注释清楚啊 用C语言啦啦.用数组的方式表示大整数,老师是这样提醒的
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/23 21:21:34
求1到100的阶乘,
应该用数组表示大整数吧.希望每行都注释清楚啊
用C语言啦啦.用数组的方式表示大整数,老师是这样提醒的,可是我还是不会
应该用数组表示大整数吧.希望每行都注释清楚啊
用C语言啦啦.用数组的方式表示大整数,老师是这样提醒的,可是我还是不会
#include
#define N 10000
int main()
{
static long int r[N]={1};
int i,j;
int k=0,l=0;
for(i=1;i
再问: 这个这个。。我想求它们一起的和
再答: #include #define N 10000 int main() { static long int r[N]={1}; static long int t[N]={0}; int i,j; int k=0,l=0,tk=0; for(i=1;i=0;j--) { printf("%04d",t[j]); } printf("\n"); return 0; } 1!+2!+3!+....+99!+100!= 94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313 请按任意键继续. . .
再问: 看不懂。,能给我每段来个注释么。谢谢
再答: //整体思路是用数组保存结果,每个int元素保存4位
#include <stdio.h>
#define N 10000
int main()
{
static long int r[N]={1}; //保存阶乘值
static long int t[N]={0}; //保存和
int i,j;
int k=0,l=0,tk=0; //k用来标记阶乘结果进位值,l用来标记长度,tk用来和的进位值
for(i=1;i<=100;i++)
{
for(j=0;j<=l;j++)
{
r[j]=r[j]*i+k; //每个元素都和i乘一次并且和上一位的结果的进位值相加
k=r[j]/10000; //求出本次乘法的进位值
r[j]=r[j]%10000; //留下后4位
t[j]=t[j]+r[j]+tk; //和数组的每个元素都和上面计算出的阶乘元素相加,并且和上一次求和产生的进位值tk相加
tk=t[j]/10000; //留下后4位
t[j]=t[j]%10000; //求出本次进位值
}
if(k) //如果上面的循环计算完以后k不为0,那说明最高位有进位
{
l++; //下次内循环长度+1
r[j]=k; //最高位==k
t[j]+=r[j]; //和数组也加进去
k=0; //k置0
}
if(tk) //如果tk不等于0.说明和数组最高位有进位,处理类似上面的
{
t[j]+=tk;
if(t[j]>10000)
{
t[j+1]=1;
t[j]=t[j]%10000;
}
tk=0;
}
j=l;
}
printf("1!+2!+3!+....+99!+100!=\n%d",t[j--]); // 输出 (最高4位不需要输出前置0,所以单独输出一次)
for(;j>=0;j--)
{
printf("%04d",t[j]); //4位有效数字,不满4位则前面补0
}
printf("\n");
return 0;
}
#define N 10000
int main()
{
static long int r[N]={1};
int i,j;
int k=0,l=0;
for(i=1;i
再问: 这个这个。。我想求它们一起的和
再答: #include #define N 10000 int main() { static long int r[N]={1}; static long int t[N]={0}; int i,j; int k=0,l=0,tk=0; for(i=1;i=0;j--) { printf("%04d",t[j]); } printf("\n"); return 0; } 1!+2!+3!+....+99!+100!= 94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313 请按任意键继续. . .
再问: 看不懂。,能给我每段来个注释么。谢谢
再答: //整体思路是用数组保存结果,每个int元素保存4位
#include <stdio.h>
#define N 10000
int main()
{
static long int r[N]={1}; //保存阶乘值
static long int t[N]={0}; //保存和
int i,j;
int k=0,l=0,tk=0; //k用来标记阶乘结果进位值,l用来标记长度,tk用来和的进位值
for(i=1;i<=100;i++)
{
for(j=0;j<=l;j++)
{
r[j]=r[j]*i+k; //每个元素都和i乘一次并且和上一位的结果的进位值相加
k=r[j]/10000; //求出本次乘法的进位值
r[j]=r[j]%10000; //留下后4位
t[j]=t[j]+r[j]+tk; //和数组的每个元素都和上面计算出的阶乘元素相加,并且和上一次求和产生的进位值tk相加
tk=t[j]/10000; //留下后4位
t[j]=t[j]%10000; //求出本次进位值
}
if(k) //如果上面的循环计算完以后k不为0,那说明最高位有进位
{
l++; //下次内循环长度+1
r[j]=k; //最高位==k
t[j]+=r[j]; //和数组也加进去
k=0; //k置0
}
if(tk) //如果tk不等于0.说明和数组最高位有进位,处理类似上面的
{
t[j]+=tk;
if(t[j]>10000)
{
t[j+1]=1;
t[j]=t[j]%10000;
}
tk=0;
}
j=l;
}
printf("1!+2!+3!+....+99!+100!=\n%d",t[j--]); // 输出 (最高4位不需要输出前置0,所以单独输出一次)
for(;j>=0;j--)
{
printf("%04d",t[j]); //4位有效数字,不满4位则前面补0
}
printf("\n");
return 0;
}
求1到100的阶乘,应该用数组表示大整数吧.希望每行都注释清楚啊 用C语言啦啦.用数组的方式表示大整数,老师是这样提醒的
C语言编程:用一个数组表示一个正整数,一个数组元素表示整数的一位,例如396可以用数组表示
在C语言中怎样表示一个既有整数又有浮点数的数组
在c语言中,int a[10]表示a是一个整数有10个元素的数组?
用c语言.定义一个数组存储10个整数,用户输入10个数值存储到数组里,计算平均值,并统计低于平均值的个数
求一段c++的代码 是用来计算阶乘的 要求能够将比较大的数,比方说20的阶乘的最终结果用长整数来表示
用handle定义数组,该数组表示的是什么内容?
编写程序,产生30个[1,100]间的随机整数到5行6列数组中【C语言】
用C语言编写输入100个整数.将他们存入数组a中,再输入一个整数x.统计并输出数组a中不小于X的元数个数
c语言编程,输入一个数组,利用自定义函数求数组的平均数(用数组做参数).
49、假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)
用c++语言分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组