| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1872 人关注过本帖
标题:新手求助
取消只看楼主 加入收藏
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
 问题点数:0 回复次数:11 
新手求助
大家好,我学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
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
谢谢楼上的两位
2008-07-04 00:52
都都
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
都都
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
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
[bo][un]死了都要C[/un] 在 2008-7-6 03:04 的发言:[/bo]

冒泡排序吧```

输入数组的数据地一个数据是a[0]不是a[1]哦```

是冒泡排序,这里是故意把a[1]设为数组的第一位了,这样在有11个数据的数组里,从a[1]到a[10]一共是10个数据,a[0]跳过去了。

不知道怎么运行不下去了。希望大家来帮帮忙找错误。
2008-07-07 01:12
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
谢谢楼上的两位。
这个题是我自己抄错了,里面输入scanf函数和输出printf的限制表达式i<11,我都给写错成了i<=11了,这样,本来数组要求输入从 a[1]到a[10] 10个数据,变成了要输入到a[11]的11个数据。因此我每次只输入10个数据,而程序还在等待我的第11个数据,所以才运行不下去的。
这里就我自己犯的错误向大家道歉。
2008-07-07 02:44
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
刚刚实验了关于将字符串复制到字符数组复制的函数:
strc(str1,str2,2);
意义是将字符串2的前两位复制到字符数组1里去。
可是我运用这个函数得到的却是将整个字符串2复制到了字符数组1里去。
main()
{
    char str1[10],str2[]={"China"};
    strcpy(str1,str2,2);
    puts(str1);
    strcpy(str1,"super",2);
    puts(str1);
    getch();
}
结果是  China         而不是Ch
        super               su

是我用错了这个函数吗,还是有什么别的注意事项?
2008-07-09 00:56
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
[bo][un]woshiyun[/un] 在 2008-7-9 09:33 的发言:[/bo]


strncpy
不会给str1添加结束符,
自己要手工加。

如何手动给str1加结束符呢, puts(str1"\0")??
2008-07-10 01:31
都都
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-7-3
收藏
得分:0 
刚做关于函数形参,实参和返回值的例题,这个题是说,函数值max()和返回值z的类型不一样,函数值为整型,而返回值z为实型,则最后返回的值依函数值为准,为整型。这点程序执行的没有错,但是max本是一个求两数之间最大值的函数,我输入一个1.5和2.5得到的结果却是1,就是说,返回的值是较小的这个,而不是应该得到的2. 大家能帮我找找错误看看是为什么吗?
main()
{
    float a,b;
    int c;
    scanf("%f,%f",&a,&b);
    c=max(a,b);
    printf("Max is %d",c);
    getch();
}
max(float x,float y)
{
    float z;
    z=x>y? x:y;
    return(z);
}
2008-07-11 02:03
快速回复:新手求助
数据加载中...
 
   



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

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