C语言 级数e^x求和

一、题目

011:编写程序求级数 e^x 的前m+1项之和。级数 e^x 的前m+1项之和的计算公式为:在这里插入图片描述
(书例3.38)

二、代码实现

思路:根据公式递推累加即可

代码如下:

//011:编写程序求级数e^x的前m+1项之和。级数e^x的前m+1项之和的计算公式为:e^x=1+x+x^2/2!+x^3/3!+...+x^m/m!
#include<stdio.h>
int main()
{
    int i,m;
    char ch;//判断程序是否继续的字符变量
    double x;
    do{
    printf("please input your x and m in this format:m,x\n");
    scanf("%d,%lf",&m,&x);//输入指定的x变量和m
    double sum=1,item=1;
    for(i=1;i<=m;i++)
    {
        item*=x/i;
        sum+=item;//计算每项并累加
    }
    printf("the result e^%g(%d items) is %g\n",x,m+1,sum);
    printf("\ncontinue? y/n\n");
    scanf(" %c",&ch);
    }while(ch!='n');//当键入的字符不是n时,默认继续运行程序
    printf("END\n");
    return 0;
}

运行结果:

please input your x and m in this format:m,x
50,3.3
the result e^3.3(51 items) is 27.1126

continue? y/n
y
please input your x and m in this format:m,x
50,6
the result e^6(51 items) is 403.429

continue? y/n
n
END

按任意键关闭终端。

注意两个细节问题

一、do-while循环中for循环计算前重新对item和sum进行赋值或者直接定义成局部变量(如上),如果定义成全局变量且不重新赋值,continue后会继续接上次结果计算。

二、scanf在第一次输入结束后,回车符会残留在数据缓冲区中,第二次scanf会直接读取该回车符,可以在第二次的scanf语句%c前加个空格。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值