intmain(){double x =0, i =1, t =1, s =1;double sum =1;//作为累计数值的量int flag =1;//改变正负int n;//控制循环printf("请输入x和n的值:");scanf("%lf %d",&x,&n);do{
s = s*x;//相当于x x*x x*x*x x*x*x*x ……
t = t*i;//相当于1! 2! 3! 4! 5!……
sum = sum + flag*s / t;
flag =-flag;//改变正负号
i++;}while(i != n+1);printf("%.8lf", sum);//精确到小数点后8位return0;}
while
intmain(){double x =0, i =1, t =1, s =1;double sum =1;//作为累计数值的量int flag =1;//改变正负int n;//控制循环printf("请输入x和n的值:");scanf("%lf %d",&x,&n);while(i != n+1)//循环结束条件,自己简单带入思考一下就知道为什么要n+1了{
s = s*x;//相当于x x*x x*x*x x*x*x*x ……
t = t*i;//相当于1! 2! 3! 4! 5!……
sum = sum + flag*s / t;
flag =-flag;//改变正负号
i++;//因为i在这递增了,所以while循环里,n要+1,不然程序结果不对}printf("%.8lf", sum);//精确到小数点后8位return0;}
for
intmain(){double x =0, i =1, t =1, s =1;double sum =1;//作为累计数值的量int flag =1;//改变正负int n;//控制循环printf("请输入x和n的值:");scanf("%lf %d",&x,&n);for(int j =1; j <=n; j++){
s = s*x;//相当于x x*x x*x*x x*x*x*x ……
t = t*i;//相当于1! 2! 3! 4! 5!……
sum = sum + flag*s / t;
flag =-flag;//改变正负号
i++;}printf("%.8lf", sum);//精确到小数点后8位return0;}
另外一种代码格式
#include<math.h>doublef1(int n)//用于求阶乘{double s =1;int i;for(i =1; i <= n; i++){
s *= i;}return s;}intmain(){int n;double x, i;//pow函数中x和i的两个参数的值要是double型的double ex =1;int flag =1;printf("请输入x和n:");scanf("%lf %d",&x,&n);for(i =1; i <= n; i++){
ex += flag*pow(x, i)/f1(i);
flag =-flag;}printf("分别输出级数近似求和值:");printf("%.8lf", ex);//printf("%.8lf %lf\n", ex,exp(x));//exp(x)就是e的x次方,e就是对数里面的那个ereturn0;}
计算级数,要求精度为10^-8,小数点后八位。并用do……while、while和for语句编写程序do……whileint main(){ double x = 0, i = 1, t = 1, s = 1; double sum = 1;//作为累计数值的量 int flag = 1;//改变正负 int n;//控制循环 printf("请输入x和n的值:"); scanf("%lf %d", &x, &n); do { s = s*x;//相当于x x*x