请编写一个程序,读入一个非负整数,计算并打印其阶乘
#include<stdio.h>
int main(void)
{
unsigned int x;
unsigned int y;
int sum;
sum=1;
printf("请输入x的值:");
scanf("%d",&x);
y=x;
if(x==0)
{
printf("%d的阶乘为1",x);
}
else
{
while(x>0)
{
sum*=x;
x--;
}
printf("%d的阶乘为%d",y,sum);
}
}
运行结果:
请编写一个程序,利用下面的公式来估算数学常数e的值
e=1+1/1!+1/2!+1/3!+....
#include<stdio.h>
int main(void)
{
unsigned int x;
int sum;
int y;
float a;
float sum1;
sum1=1.00;
printf("请输入x的值:");
scanf("%d",&x);
y=x;
while(y>0){
sum=1;
while(x>0)
{
sum*=x;
x--;
}
a=1.00/sum;//求阶乘的倒数
sum1=a+sum1;//求阶乘导数和
y--;
x=y;
}
printf("e的值为%.6f",sum1);
}
运行结果:当x的取值越大所求取得e值越准确
请编写一个程序,利用下面的公式来计算e的x次方的值
#include<stdio.h>
int main(void)
{
unsigned int x;
unsigned int y;
float sum;//定义sum为 x的幂次方和
sum=1.00;
float sum1;//定义sum1为比值和
int sum2;//定义sum2为阶乘
int m;
float a;
sum1=1.000000;
puts("请输入x的值:");
scanf("%d",&x);
puts("请输入y的值:");
scanf("%d",&y);
m=y;
int n=0;
while(n!=y)
{
sum=x*sum;
n++;
} //先求x的y次方
while(m>0)
{
sum2=1;
while(y>0)
{
sum2*=y;
y--;
} //求阶乘
a=sum/sum2;//幂次方与阶乘的比值
sum1=a+sum1;//求比值和
m--;
y=m;
}
printf("e的%d次方的值为%.6f",x,sum1);
}
运行结果为: