| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1872 人关注过本帖
标题:新手求助
只看楼主 加入收藏
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
 问题点数:0 回复次数:23 
新手求助
大家好,我学C语言才刚两天,编了一个选择语句的程序

{
    float x,y;
    scanf("%f",&x);
    if (x<1)
    y=x;
    else if (1<=x<10)
    y=2*x-1;
    else
    y=3*x-11;
    printf("%f",y);
    getch();
}

当x大于10的时候输出的一直是y=2x-1,而不是y=3x-11。
希望大家能帮我找出错误,谢谢
搜索更多相关主题的帖子: C语言 
2008-07-03 01:42
gdsing
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-1-24
收藏
得分:0 
#include <stdio.h>

int main(){
    double x,y;
    scanf("%lf",&x);
    if(x<1){
        y=x;
    }else if(1<=x<10){ //1<=x<10;这里要您自己拆开,C没那么智能理解这么复杂的关系式
        y=2*x-1;
    }else{
        y=3*x-11;
    }
    printf("%lf\n",y);
    getch(); //warning: implicit declaration of function `getch'
    return 0;
}
2008-07-03 02:58
cxhiou
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2007-6-13
收藏
得分:0 
else if (x>=1&&x<10)

2008-07-03 09:07
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
谢谢楼上的两位
2008-07-04 00:52
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
if (1<=x<10) 永远为真``因为 1<=x  不是1就是 0 , 而 0 和1 永远<10

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-07-04 00:56
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
谢谢楼上的,看来我对C语言的理解还很少。

又有一个小问题

float m;
m=1/3;
printf("f",m);

这里m的结果为什么是0,而不是0.3。

谢谢解答
2008-07-05 03:20
fulanlinghun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-7-5
收藏
得分:0 
我也才学C两天,一下是我的看法,说得不知道对不对,请高手指点一下

这个我也试了一下,结果也是0.000000,但是如果把m=1/3换成m=1.000000/3.000000,结果就变成了0.333333,我想可能是程序把1和3看做是整形常量,1/3得出的结果也是整形,然后把整形转换成浮点型付给m,所以就只剩0了


我也是刚学C,刚看了一个教程,是黑客基地的,你是怎么学c的,说说好吗
2008-07-05 04:56
benyu1107
Rank: 1
来 自:桂林
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-4-24
收藏
得分:0 
除法运算符 “/ ”:注意两个整数相除,结果为整数,“向零取整”的方法。
2008-07-05 08:55
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
[bo][un]fulanlinghun[/un] 在 2008-7-5 04:56 的发言:[/bo]

我也才学C两天,一下是我的看法,说得不知道对不对,请高手指点一下

这个我也试了一下,结果也是0.000000,但是如果把m=1/3换成m=1.000000/3.000000,结果就变成了0.333333,我想可能是程序把1和3看做是整形常量, ...

你好,我还是在按照谭老师的那本书在学习。
谢谢你的回复,你说的很对。
希望我们共同学习共同进步。
2008-07-05 13:55
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
今天做谭老师的一维数组的例题,居然发现运行不了,从printf("\n")向下程序就不走了。大家知道为什么吗?
main()
{
    int a[11];
    int i,j,t;
    printf("input 10 numbers: \n");
    for (i=1;i<11;i++)    //是我自己抄错了,这里应该是i<11,而不是原来的i<=11,实在抱歉
        scanf("%d",&a[i]);
    printf("\n");   
    for (j=1;j<=9;j++)
      {for (i=1;i<=10-j;i++)
        if (a[i]>a[i+1])
            {t=a[i];a[i]=a[i+1];a[i+1]=t;}
      }
      printf("the sorted numbers:\n");
      for(i=1;i<11;i++)
            {printf("%d",a[i]);}
    getch();
}

[[it] 本帖最后由 都都 于 2008-7-7 02:36 编辑 [/it]]
2008-07-06 02:36
快速回复:新手求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021498 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved