丽江醉乡民谣酒吧价格:大家帮我写一个C++程序,要求是从1一直乘以到1000,有急用,拜托!

来源:百度文库 编辑:高校问答 时间:2024/03/29 16:18:03

〈个人意见,仅供参考〉
我没学过c++其实也就是求1000!我想c中也一样。基本的思想:就是一楼那样的递推法,或者用函数的递归调用。
下面的方法,是对一楼的补充“溢位voerflow”的解决方法。
1.变通的方法求1000!
#include<math.h>
#include<stdio.h>
int main()
{
long i;
double ln=0;
for(i=1;i<=1000;i++)
ln+=log10(i);
i=(long)ln;ln=pow(10,ln-i);
printf("10000!=%lf*10^%ld\n",ln,i);
return 0;
}
2.如果熟悉数据结构的知识可以用下面的方法解决
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
short mul(short a[],short d,short x)
{
long i,y=0;
for(i=0;i<d;i++)
{
y+=a[i]*(long)x;
a[i]=(short)(y%1000);
y/=1000;
}
a[d]=(short)y;
return d+!!y;
}
void main()
{
long s;
short *a,i,j,n,ws=1;
printf("N=");scanf("%d",&n);
#define Pi 3.14159265358979323846L
s=(long)((log(2*Pi*n)/2+n*(log(n)-1))/log(10)+1);
a=(short*)malloc((s/4+2)*sizeof(short));*a=1;

for(i=2;i<=n;i++)
ws=mul(a,ws,i);

printf("%d!=%d",n,a[ws-1]);
for(j=ws-2;j>=0;j--)
printf("%04d",a[j]);
printf("\n");
free(a);
}

main()
{
long i,j;
i=0;j=1;
while(i<1000)
{
i=i+1;
j=j*i;
}
printf("%ld",j);
}

#include<iostream.h>
void main()
{
int i=0;
double ji=1;
for(i=0;i<1000;i++)
ji=ji*(i+1);
cout<<ji;
}
这个程序只能乘到170,到以后会有数据溢出,不能在乘了.要是得到题目的结果,我想是不是定义一个链表,用于存放数据,然后自己在链表上进行加法和乘法运算,自己考虑进位等,而不能直接利用电脑里的数学运算了.
仅作参考!!!

上面的代码不行