吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1496|回复: 11
收起左侧

[求助] switch 语句

[复制链接]
18131431963 发表于 2021-9-26 17:01
用switch语句编写程序:
y=x-sin(x)  x<-3;
y=pow(2,x)+x  -3<=x<=3
y=sqrt(x*x+2*x+3)  x>3
问题出在哪里呢?

#include <stdio.h>
#include <math.h>
int main()
{
        double x,y;
        int c;
        printf("请输入实数x:\n");
        scanf("%lf",&x);
        if(x<-3)
        c=1;
        else if(x>4)
        c=3;
        else
        c=(int)x;
        switch(c)
        {
                case 1: y=x-sin(x);break;
                case 2: y=pow(2,x)+x;break;
                case 3: y=sqrt(x*x+2*x+3);break;
        }
        printf("y=%.2f\n",y);
        return 0;
               
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

limlibgiag 发表于 2021-9-26 18:03
不需要强转
c=(int)x; 改成 c=x;
qjyjjmh 发表于 2021-9-26 19:25
Jack2002 发表于 2021-9-26 20:40
本帖最后由 Jack2002 于 2021-9-26 20:47 编辑

典型的逻辑不清晰,提问贴把疑问写清楚!
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <math.h>
int main()
{
    double x,y;
    int c;
    printf("请输入实数x:\n");
    //scanf("%lf",&x);
    x = 3.0;
    if(x<-3)
    {
        c=1;
    }
    else if(x>4)// 当x等于4.0时,会导致没有进入任何计算分支,加个default分支你就看到了
    {
        c=3;
    }
    else
    {
        //当x小于4.0或大于等于3.0时,c会被赋值为3,即不满足第一个if,也不满足else if,但是还是会进入case 3的原因
        c=(int)x;
    }
    switch(c)
    {
    case 1:
    {
        y=x-sin(x);
        printf("case1 y=%.2f\n",y);
        break;
    }
    case 2:
    {
        y=pow(2,x)+x;
        printf("case2 y=%.2f\n",y);
        break;
    }
    case 3:
    {
        y=sqrt(x*x+2*x+3);
        printf("case3 y=%.2f\n",y);
        break;
    }
    default:
        printf("输入错误");
        break;
    }
    //printf("y=%.2f\n",y);
    return 0;
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
18131431963 + 1 + 1 热心回复!

查看全部评分

 楼主| 18131431963 发表于 2021-9-26 21:01
Jack2002 发表于 2021-9-26 20:40
典型的逻辑不清晰,提问贴把疑问写清楚!
[mw_shl_code=cpp,true]#include
#include

非常感谢!可是,输入-1时,提示错误?不能得出正确的y值呢!
 楼主| 18131431963 发表于 2021-9-26 21:04
兄弟我岁数大,脑袋不太够用,属于自觉C语言。感谢大神们的指点!
Jack2002 发表于 2021-9-26 23:32
18131431963 发表于 2021-9-26 21:01
非常感谢!可是,输入-1时,提示错误?不能得出正确的y值呢!

-1 小于 -3吗? 大于 4吗? 强转成 int 也不等于 2,不提示输入错误就是见了鬼了!
 楼主| 18131431963 发表于 2021-9-27 12:39
Jack2002 发表于 2021-9-26 23:32
-1 小于 -3吗? 大于 4吗? 强转成 int 也不等于 2,不提示输入错误就是见了鬼了!

真的不明白!!!
wanshiz 发表于 2021-9-28 08:35
感觉c直接赋值为2吧,

免费评分

参与人数 1吾爱币 +1 收起 理由
18131431963 + 1 用心讨论,共获提升!

查看全部评分

 楼主| 18131431963 发表于 2021-9-28 19:37
#include <stdio.h>
#include <math.h>
int main()
{
    double x,y;
    int c;
    printf("请输入实数x:\n");
    scanf("%lf",&x);
    if(x<-3)
    {
        c=1;
    }
    else if(x<=3&&x>=-3)
        c=2;
    else if(x>3)
    {
        c=3;
    }
    else
    {
      
        c=(int)x;
    }
    switch(c)
    {
    case 1:
    {
        y=x-sin(x);
        
        break;
    }
    case 2:
    {
        y=pow(2,x)+x;
        
        break;
    }
    case 3:
    {
        y=sqrt(x*x+2*x+3);
        
        break;
    }
    default:
        printf("输入错误");
        break;
    }
    printf("y=%.2f\n",y);
    return 0;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表