#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=510;
char re[MAXN];
struct Big{
int s[MAXN],len;
Big():len(1){memset(s,0,sizeof(s));}
void read()
{
scanf("%s",re);
int n=strlen(re);
len=(n-1)/4+1;int x=len,k=0;
while('0'<=re[k]&&re[k]<='9')
{
if(k&&k%4==n%4)x--;
s[x]=s[x]10+re[k]-'0';
++k;
}
}
void print()
{
for(int i=len;i>=1;--i)
{
if(i!=len)printf("%04d",s[i]);
else printf("%d",s[i]);
}
}
Big& operator +=(Big &a)
{
int n=max(alen,len);
for(int i=1;i<=n;++i)
s[i]+=as[i],s[i+1]+=s[i]/10000,s[i]%=10000;
while(s[len+1])len++;
return this;
}
Big& operator =(Big &a)
{
for(int i=len;i;--i)
{
for(int j=alen;j-1;--j)
s[i+j-1]+=s[i]as[j];
s[i]=s[i]as[1];
int k=i;
while(s[k])
s[k+1]+=s[k]/10000,s[k]%=10000,++k;
}
while(s[len+1])len++;
return this;
}
};
bool operator <(Big &a,Big &b)
{
if(alen!=blen)return alen<blen;
for(int i=alen;i>=1;--i)
if(as[i]!=bs[i])return as[i]<bs[i];
return false;
}
Big operator (Big &a,Big &b)
{
Big c=a;
return c=b;
}
Big operator + (Big &a,Big &b)
{
Big c=a;
return c+=b;
}
int main()
{
Big sum,x,i,dz,lim;
dzs[1]=is[1]=xs[1]=1;
lims[1]=101;
for(;i<lim;i+=dz)
sum+=x=i;//从右往左运算,相当于x=xi;sum=sum+x;
sumprint();
}
楼上用int的,自然溢出运行出来应该会是负数或者0题主以后如果出阶乘题数据要小
运行结果:
因为阶乘50太大了,变量存不下,所以最后显示0,如果你将阶乘数改小一点就没问题了,比如10
或者将int型改成long long型,然后结果已%lld输出,但40、50的阶乘也无法容纳,因为结果太大了,20、30还可以
使用 double 型最多精确计算 22 的阶乘,算不了 100 的阶乘,所以不需要用 double 型,直接用 long 型就可以了,long 型最多只能算 20 的阶乘。
#include<stdioh>int main() {
long result = 1;
int n = 1;
int i = 1;
while (1) {
printf("请输入求阶乘中的n(1~20), 输入负整数退出本程序:");
scanf("%d", & n);
if (n < 0) {
break;
} else if (n == 0) {
continue;
} else if (n >= 1 && n <= 20) {
result = 1;
for (i = 1; i <= n; i++) {
result = i;
}
printf("%d的阶乘是%ld\n", n, result);
}
}
}
declare @sum bigint
declare @i int
set @sum = 1
set @i = 2
while(@i <= 20)
begin
set @sum = @i @sum
set @i = @i + 1
end
print @sum
一个建议,想要学得真本事,问题就得自己尝试解决,除非你只是想敷衍自己
以上就是关于急!!!C语言阶乘问题 求一到一百的阶乘和 用While或While do循环语句或for 语句全部的内容,包括:急!!!C语言阶乘问题 求一到一百的阶乘和 用While或While do循环语句或for 语句、C语言求50的阶乘,用while来写,大神来看看为什么不对啊,结果是0。、c语言如何连续求无数个阶乘,用while循环结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)