c语言实现这个,为啥我提交老是答案错误 ??哪里有问题呢

如题所述

第1个回答  推荐于2018-03-08
不能这么做,double转化int丢失精度,正确做事用if else不是switch追问

?我仅仅在switch转化了,并不影响x的值呀

本回答被网友采纳
第2个回答  2017-03-26
你看一下是不是跟格式有关?输出一行后要换行之类的追问

。。这方面的问题可以排除

第3个回答  2017-03-27
我知道了,printf把y =去掉,直接输出数据追问

跟那个没关系吧,输出要求是输出y=xxx这个格式的

追答

可是你代码没问题啊,要不你把完整代码贴出来

第4个回答  2017-03-26
你定义sinf()等函数了吗?库函数没有f,就是sin()!要包含math.h。追问

我没有定义,但是编译是通过的

咋回事呢 ?我网上查了,有这个函数的

http://en.cppreference.com/w/c/numeric/math

我是在这个网站查询的

🙄 里面有...f的函数

不会是我看错了文档或者错用了吧,那个网站

我去,被删了

追答

试了一下有sinf之类的函数,似乎是专门为float型设置的。

#include <stdio.h>
#include "math.h"
int main(int argc,char *argv[]){
    float x,y;
    scanf("%f",&x);
    if(0>x || x>=40)
        printf("No definition\n");
    else{
        switch((int)x/10+1){
            case 1: y=sinf(x);printf("y=%.2f\n",y);break;
            case 2: y=cosf(x);printf("y=%.2f\n",y);break;
            case 3: y=expf(x);printf("y=%.2f\n",y);break;
            case 4: y=logf(x+1);printf("y=%.2f\n",y);break;
        }
    }
    return 0;
}

追问

是呀,所以这代码写的没问题吧

而且我输入20进入,发现结果个计算器算下来的并不一样

追答

终于开放了……

本回答被提问者采纳
第5个回答  2018-03-08
定义x、y的时候,输入的x是float单精度,作比较的时候,是将x与整数0、40进行比较,于是发生错误。可以将float x 改为 int x 就没问题了。也可以在要比较的0 和 40 这些数后面加个.0(点零)。
相似回答