一包笼子 2023-11-21 20:49 采纳率: 83.3%
浏览 11
已结题

c语言题目 多项式计算

计算多项式
代码思路:一个两重循环 分别算出x的n次方(b)和阶乘(c),之后算比值(d),前面的正负号又i来判断,奇数则-d,偶数则+d,
d为正数,判断与误差的大小关系,最后输出sum

img

img

#include<stdio.h>
int main(){
    int x;
    float esp;
    scanf("%d %f",&x,&esp);
    int sum=1,b=1,c=1;
    float d;
    for(int i=1;i<99999;i++){
        for(int j=1;j<=i;j++){
            b*=x;
            c*=j;
        }
        d=b/c;
        b=c=1;
        if(i%2==1){
            sum=sum-d;
        }else{
            sum=sum+d;
        }
        if(d<esp){
            goto out;
        }
    }
out:
    printf("%.3lf\n",sum);
    return 0;
} 



@柯本

  • 写回答

2条回答 默认 最新

  • 柯本 2023-11-30 21:18
    关注
    
    #include<stdio.h>
    int main(){
        int x;
        double esp; //能用double不要用float
        scanf("%d %lf",&x,&esp);
        double  sum=1,b=1,c=1; //n!当n很大时int不够的
        double d; //同样
        for(int i=1;;i++){ ///99999不够大,这个条件不要的
            for(int j=1;j<=i;j++){
                b*=x;
                c*=j;
            }
            d=b/c; //若b,c 都是int,这个结果会不对的如1/2 int结果为0
            b=c=1;
            if(i%2==1){
                sum=sum-d;
            }else{
                sum=sum+d;
            }
            if(d<esp){
                //goto out;  //不建议用goto也没必要用goto
                break;
            }
        }
    out:
        printf("%.3lf\n",sum);
        return 0;
    } 
     
     
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月10日
  • 已采纳回答 12月2日
  • 修改了问题 11月21日
  • 创建了问题 11月21日

悬赏问题

  • ¥15 软件安装包用的是openinstall 在普通路由上有一些限速,怎么提速
  • ¥15 msgeq7根据音乐控制电机
  • ¥15 51单片机PN532刷卡原理图代码
  • ¥15 matlab如何不显示绘图而保存为能打开的fig图片?
  • ¥15 oracle数据库备份、
  • ¥15 关于Finetune模型,CUDA error: device-side assert triggered 报错
  • ¥15 能将阿里云上多个设备的信息能上传给小程序吗
  • ¥50 QT6.7 Camera预览窗口,camera分辨率设置
  • ¥15 车机是安卓4.4.3,车机没有gps,我想用外置蓝牙gps。所以在用安卓模拟位置服务时候,我下载的相关软件不显示在列表里
  • ¥15 matlab水位控制系统(详解)