c语言用do while 语句写1x 2x 3 x 4 ....x 100,就是100的阶乘,怎么
发布网友
发布时间:2023-05-04 18:28
我来回答
共3个回答
热心网友
时间:2023-11-03 18:21
你好,100的阶乘结果大概有150位,用简单的do while语句是无法计算准确的结果的(结果最后100多位全是0,而正确的结果0也就20个左右)。
程序1:
#include <stdio.h>
#define M 1000
main()
{
int a[M], i, n, j, flag = 1;
printf("n=");
scanf("%d",&n);
printf("n!=");
a[0] = 1;
for(i = 1; i < M; i++)
a[i] = 0;
for(j = 2; j <= n; j++)
{
for(i = 0; i < flag; i++)
a[i] *= j;
for(i = 0; i < flag; i++)
if(a[i] >= 10)
{
a[i+1] += a[i]/10;
a[i] = a[i] % 10;
if(i == flag-1)
flag++;
}
}
for(j = flag - 1;j >= 0; j--)
printf("%d", a[j]);
}
程序2:
#include <stdio.h>
#include <string.h>
void f(int n)
{
void cheng(char s[],int n);
void jia(char s1[], char s2[]);
int jinwei=0, , shi, ge, num;
char b[1000], c[1000];
static char a[1000]={"1"};
strcpy(b,a);
strcpy(c,a);
num=strlen(a);
= n/100;
shi = n%100/10;
ge = n%10;
cheng(a, ge);
if(shi)
{
cheng(b, shi);
num=strlen(b);
b[num]=48;
b[num+1]=0;
jia(a, b);
}
if()
{
cheng(c, );
num=strlen(c);
c[num]=48;
c[num+1]=48;
c[num+2]=0;
jia(a, c);
}
printf("%d%d%d!=",,shi,ge);
puts(a);
}
void jia(char s1[], char s2[])
{
int i, m, n, k, jinwei=0;
m=strlen(s1);
n=strlen(s2);
if(m>=n)
{
for(i=n; i>=0; i--)
s2[i+m-n]=s2[i];
for(i=0; i<m-n; i++)
s2[i]=48;
}
else
{
for(i=m; i>=0; i--)
s1[i+n-m]=s1[i];
for(i=0; i<n-m; i++)
s1[i]=48;
}
for(i=m-1; i>=0; i--)
{
k=s1[i]+s2[i]+jinwei-96;
s1[i]=k%10+48;
jinwei=k/10;
}
if(jinwei)
{
for(i=m; i>=1; i--)
s1[i]=s1[i-1];
s1[0]=49;
s1[m+1]=0;
}
}
void cheng(char s[], int x)
{
int i, m, n, jinwei=0;
n=strlen(s);
for(i=n-1; i>=0; i--)
{
m=(s[i]-48)*x+jinwei;
s[i]=m%10+48;
jinwei=m/10;
}
if(jinwei)
{
{
for(i=n; i>=1; i--)
s[i]=s[i-1];
s[0]=jinwei+48;
}
s[n+1]=0;
}
}
void main()
{
int i, n;
printf("请输入1--150之内的整数!");
scanf("%d",&n);
if(n>0&&n<=150)
for(i=1; i<=n; i++)
f(i);
}
热心网友
时间:2023-11-03 18:21
#include <stdio.h>
#include <math.h>
void main()
{
double sum=1, i=1;
do
{
sum = sum * i;
i++;
}while(i<=100);
printf("%lf\n",sum);
}
热心网友
时间:2023-11-03 18:22
int i=1;
double result=1;
do
{
result=result*i;
i++;
}while(i!=101);
//result 的结果就是阶乘的结果