24小时热门版块排行榜    

查看: 757  |  回复: 9
当前主题已经存档。

梅里雪山

银虫 (正式写手)

[交流] 【讨论】请高手给点指导

题目要求:
有一个函数
           x         x<1
y=     2x-1     1≤x<10
       3x-11      x≥10

写一段程序,输入x输出y.
我的程序如下:
#include
void main()
{
        float x,y;
        scanf("%f",&x);
        if(x<1)
                printf("y=%f",x);
        else
        {
                if(x>=10)
                        y=3x-11;
                        printf("y=%f",y);
                else
                        y=2x-1;
                        printf("y=%f",y);
        }
}
非常感谢大家!我是个初学者,正准备考今年的国家二级

[ Last edited by 梅里雪山 on 2009-7-26 at 09:30 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rjjy

木虫 (著名写手)

没发现问题啊!
2楼2009-07-25 12:01:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rjjy

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
热心虫友开的C++答疑专贴:
http://muchong.com/bbs/viewthread.php?tid=1367520&fpage=1
可参考!
3楼2009-07-25 12:02:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

梅里雪山

银虫 (正式写手)

引用回帖:
Originally posted by rjjy at 2009-7-25 12:01:
没发现问题啊!

但是运行不出来啊
4楼2009-07-25 12:06:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

0112358

木虫 (职业作家)

这个问题不用高手吧,让我这个外行试试

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
rjjy(金币+1,VIP+0):好眼力! 7-25 21:35
帮你改过的:
#include
void main()
{
        float x,y;
        scanf("%f",&x);
        if(x<1)
                printf("y=%f",x);
        else
        {
                if(x>=10)
                        y=3*x-11;
                else
                        y=2*x-1;
                        printf("y=%f",y);
        }
}

你的原语句有三处错误
最明显的就是省略了乘号“*”,另外一处提示“misplaced else in function main”,虽然我觉得好像没有什么错误(我的基础仅限于大学时候学的C),反正我删除多于的printf后就没有错误了

[ Last edited by 0112358 on 2009-7-25 at 21:27 ]
5楼2009-07-25 19:57:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木叶清风

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
rjjy(金币+1,VIP+0):谢谢交流! 7-25 21:36
首先,在现代编译器里面void main()是可能会出问题的,不信你到gcc里面试试
其次,浮点数比较不对,浮点数比较是会有精度问题的,应该用两者之差小于你需要的精度;
最后,程序写得不规范,养成很好的对齐习惯很重要的
www.cvdelver.com
6楼2009-07-25 21:17:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ms98

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
0112358(金币+5):欢迎常来指导,现在程序版要提高指导待遇,先小讲一下,很清楚,想起了我的C语言老师了,呵呵
ls的我无语了...
这个初级问题明显是教材习题,编译器应该是vc或者turbo c。void main是可以的,当然用int  main肯定更标准。
if(x<1)和 if(x>=10)根本不存在浮点数比较问题。只有==才存在,这是因为2-10进制转换在小数部分可能会存在无法精确转换的问题(比如0.1这个10进制在2进制下就成了无限循环)。
对齐不是主要问题,当然规范要慢慢来学。
lz碰到的问题应该在这儿:
     if(x>=10)
         y=3x-11;
         printf("y=%f",y);
这句话问题大,首先乘号不能省略,其次if后面只能跟一个语句,现在有两个语句,需要用{}改为复合语句。“misplaced else in function main”就是这个原因导致的。
程序逻辑不好,改一下吧:
#include
int main()
{
        float x,y;  //这里题意不清,这样也可以
        scanf("%f", &x);
        if(x<1)
              y = x;
        else if(x>=10)
              y=3*x-11;
        else // 1≤x<10
              y=2*x-1;
        printf("y=%f",y);
        return 0;
}
应付一下作业没问题了。
lz最大的问题就是根本没有说清楚自己的问题是什么,碰到了什么困难,错误信息是什么,哎...

[ Last edited by ms98 on 2009-7-25 at 23:27 ]
7楼2009-07-25 22:13:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

prestoner

木虫 (小有名气)


sunxiao(金币+1,VIP+0):谢谢参与,欢迎常来 7-26 05:40
main函数的标准写法:
int main(int argc, char *argv[])
╰╭︿︿☆╮ {/ . .\} ( (oo) ) ︶︶︶︶
8楼2009-07-26 00:58:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫舞幽

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
sunxiao(金币+2,VIP+0):thank u 7-27 06:25
printf语句太多了,其实不用的,循环的最后加一句就行,还有就是乘号的问题,貌似再没什么
9楼2009-07-26 15:36:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
0112358(金币+1):欢迎常来程序版回帖讨论
应该说是
int main(void)和 int main(int argc, char *argv[])
引用回帖:
Originally posted by prestoner at 2009-7-26 00:58:
main函数的标准写法:
int main(int argc, char *argv[])

10楼2009-07-28 10:50:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 梅里雪山 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见