当前位置:首页 » 编程语言 » c语言30阶乘while
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言30阶乘while

发布时间: 2022-12-14 10:45:06

❶ while求n的阶乘

您好,很高兴回答您的问题。
c语言中,用while计算n的阶乘,主要就是要掌握循环变量循环变化、循环语句。具体为
#include<stdio. h>
void main()
{int i,n,s=1;
scanf("%d",&n);
while(i=1;i<=n;i++)
s=s*i;
printf("s=%d\n",s);
}

❷ C语言中如何编程计算阶乘

常见的有两种:

递归版本:

intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}

还有一种是循环版:

intans=1;
for(inti=1;i<=n;i++)ans*=i;

测试方法:

#include<stdio.h>

intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}

intmain(){
intn;
while(scanf("%d",&n)!=EOF){
intans=1;
for(inti=1;i<=n;i++)ans*=i;
printf("%d%d ",ans,Fac(n));
}
return0;
}

有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。

❸ 急!!!C语言阶乘问题 求一到一百的阶乘和 用While或While do循环语句或for 语句

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
usingnamespacestd;

constintMAXN=510;

charre[MAXN];
structBig{
ints[MAXN],len;
Big():len(1){memset(s,0,sizeof(s));}
voidread()
{
scanf("%s",re);
intn=strlen(re);
len=(n-1)/4+1;intx=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;
}
}
voidprint()
{
for(inti=len;i>=1;--i)
{
if(i!=len)printf("%04d",s[i]);
elseprintf("%d",s[i]);
}
}
Big&operator+=(Big&a)
{
intn=max(a.len,len);
for(inti=1;i<=n;++i)
s[i]+=a.s[i],s[i+1]+=s[i]/10000,s[i]%=10000;
while(s[len+1])len++;
return*this;
}
Big&operator*=(Big&a)
{
for(inti=len;i;--i)
{
for(intj=a.len;j-1;--j)
s[i+j-1]+=s[i]*a.s[j];
s[i]=s[i]*a.s[1];
intk=i;
while(s[k])
s[k+1]+=s[k]/10000,s[k]%=10000,++k;
}
while(s[len+1])len++;
return*this;
}
};
booloperator<(Big&a,Big&b)
{
if(a.len!=b.len)returna.len<b.len;
for(inti=a.len;i>=1;--i)
if(a.s[i]!=b.s[i])returna.s[i]<b.s[i];
returnfalse;
}
Bigoperator*(Big&a,Big&b)
{
Bigc=a;
returnc*=b;
}
Bigoperator+(Big&a,Big&b)
{
Bigc=a;
returnc+=b;
}
intmain()
{
Bigsum,x,i,dz,lim;
dz.s[1]=i.s[1]=x.s[1]=1;
lim.s[1]=101;
for(;i<lim;i+=dz)
sum+=x*=i;//从右往左运算,相当于x=x*i;sum=sum+x;
sum.print();
}

楼上用int的,自然溢出运行出来应该会是负数或者0.....题主以后如果出阶乘题数据要小

运行结果:

❹ c语言如何连续求无数个阶乘,用while循环结构

使用double型最多精确计算 22 的阶乘,算不了 100的阶乘,所以不需要用double型,直接用long型就可以了,long型最多只能算 20的阶乘。

#include<stdio.h>

intmain(){
longresult=1;
intn=1;
inti=1;
while(1){
printf("请输入求阶乘中的n(1~20),输入负整数退出本程序:");
scanf("%d",&n);

if(n<0){
break;
}elseif(n==0){
continue;
}elseif(n>=1&&n<=20){
result=1;
for(i=1;i<=n;i++){
result*=i;
}
printf("%d的阶乘是%ld ",n,result);
}
}
}

❺ c语言阶乘怎么表示

/*This program can calculate the factorial of (int n).*/

#include <stdio.h>

int factorial(int n)

{

return (n == 1)?n:factorial(n-1)*n;//recursion.

}

int main(void)

{

int n,fac;

printf("Please input the value of n:");//initialize n.

scanf("%d",&n);

fac = factorial(n)//variable fac is not necessary.

printf("The result is:%d ",fac);

return 0;

}

(5)c语言30阶乘while扩展阅读:

阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候我们会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。

❻ 用c语言求1-30之间的所有整数的阶乘

#include<stdio.h>
main()
{
int i;
double n;//因为30!已经超出了int的表示范围,所以用double
n=1.0;
for(i=1;i<=30;i++)
{
n*=i;
printf("%d!=%.0f\n",i,n);//输出的时候,n保留0位小数
}
}

❼ C语言阶乘 用 while

你的while执行时变量i没有初始化(没有值),因此,while循环被架空
要解决这个问题 你在while语句之前,必须给i赋初始值(比如写上i=1;之类的)