| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 572 人关注过本帖
标题:求助,为何这个程序运行输不出,正确的,只是0.0的数字??
只看楼主 加入收藏
阿贞小朋友
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-3-16
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
求助,为何这个程序运行输不出,正确的,只是0.0的数字??
#include <stdio.h>
int main (void)
{
    long double CM ;
    long   FEET ;
    long    num ;
    printf("Enter a height in centimeters:");
    scanf("%d",&num);
    CM = ( 328 / 10000);
    FEET  = 12 ;
    while (num > 0)
    {
        printf( " %d.0 cm=%d feet , %.1f inches \n",num,(num * CM),(num * CM * FEET));
        printf("Enter a height in centimeters (< = 0 to quit) :");
        scanf("%d",&num);

    }

    return 0 ;

}
搜索更多相关主题的帖子: include double return Enter 
2014-03-16 10:50
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:1 
听不懂你的中文
更听不懂你的逻辑,既然“正确的“,你想问什么?

就代码而言,CM = ( 328 / 10000)为什么不直接写成CM = 0?
2014-03-16 19:44
阿贞小朋友
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-3-16
收藏
得分:0 
就是比如我 输入 182
就要输出
182.0 cm =5 feet , 11.7 inches
2014-03-16 20:52
阿贞小朋友
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-3-16
收藏
得分:0 
本来是用
#define CM  0.0328
#define FEET  12
后来一直不行,所以才改成这样的
2014-03-16 20:58
火雨流星泪
Rank: 2
等 级:论坛游民
帖 子:65
专家分:78
注 册:2013-5-12
收藏
得分:1 
那个“\”这个符号和我们数学的除号不完全相同的,\这个表示两数相除取结果的整数部分。例如3/2=1而不是1.5;另外“%”表示两数相除取结果的余数部分,例如100%3=1.
2014-03-16 21:14
阿贞小朋友
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-3-16
收藏
得分:0 
楼上的我明白啊
好吧!他原来的题目是:
编写一个程序让用户按厘米输入一个高度值,然后程序按照厘米和英尺英寸显示这个高度值。允许厘米和英寸的值出现小数部分。程序允许用户继续输入,知道用户输入一个非正的数值。运行如下:
Enter a height in centimeters :182
182.0 cm = 5 feet ,11.7 inches
2014-03-16 22:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:1 
回复 6楼 阿贞小朋友
程序代码:
#include <stdio.h>

#define CM2FEET 0.032808398950131
#define CM2INCH 0.39370078740157

int main( void )
{
    for( double cm; printf("%s","Enter a height in centimeters (< = 0 to quit) :"), scanf("%lf",&cm)==1 && cm>0; )
    {
        double feet = cm * CM2FEET;
        double inch = cm * CM2INCH;

        printf( " %fcm=%f feet, %finches\n", cm, feet, inch );
    }

    return 0 ;
}
2014-03-17 08:30
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:2 
以下是引用阿贞小朋友在2014-3-16 10:50:21的发言:

#include  
int main (void)
{
    long double CM ;
    long   FEET ;
    long    num ;
    printf("Enter a height in centimeters:");
    scanf("%d",&num);
    CM = ( 328 / 10000);  ///////试试这里的改成 CM = 328/(double)10000;
    FEET  = 12 ;
    while (num > 0)
    {
        printf( " %d.0 cm=%d feet , %.1f inches \n",num,(num * CM),(num * CM * FEET));
        printf("Enter a height in centimeters (< = 0 to quit) :");
        scanf("%d",&num);
 
    }
 
    return 0 ;
 
}
首先这是类型转化的问题:
因为328/10000是整数相除,肯定会是0,只要比10000小的整数拿来除以1W,结果都是这样,但是你把其中的一个数转化成浮点型,那么,它会以浮点数的相除来计算的。
2014-03-18 14:27
阿贞小朋友
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-3-16
收藏
得分:0 
嗯嗯,明白 了,谢谢了
2014-03-20 22:28
快速回复:求助,为何这个程序运行输不出,正确的,只是0.0的数字??
数据加载中...
 
   



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

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