注册 登录
编程论坛 C++教室

求助,为何这个程序运行输不出,正确的,只是0.0的数字??

阿贞小朋友 发布于 2014-03-16 10:50, 572 次点击
#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 ;

}
8 回复
#2
rjsp2014-03-16 19:44
听不懂你的中文
更听不懂你的逻辑,既然“正确的“,你想问什么?

就代码而言,CM = ( 328 / 10000)为什么不直接写成CM = 0?
#3
阿贞小朋友2014-03-16 20:52
就是比如我 输入 182
就要输出
182.0 cm =5 feet , 11.7 inches
#4
阿贞小朋友2014-03-16 20:58
本来是用
#define CM  0.0328
#define FEET  12
后来一直不行,所以才改成这样的
#5
火雨流星泪2014-03-16 21:14
那个“\”这个符号和我们数学的除号不完全相同的,\这个表示两数相除取结果的整数部分。例如3/2=1而不是1.5;另外“%”表示两数相除取结果的余数部分,例如100%3=1.
#6
阿贞小朋友2014-03-16 22:45
楼上的我明白啊
好吧!他原来的题目是:
编写一个程序让用户按厘米输入一个高度值,然后程序按照厘米和英尺英寸显示这个高度值。允许厘米和英寸的值出现小数部分。程序允许用户继续输入,知道用户输入一个非正的数值。运行如下:
Enter a height in centimeters :182
182.0 cm = 5 feet ,11.7 inches
#7
rjsp2014-03-17 08:30
回复 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 ;
}
#8
lonely_212014-03-18 14:27
以下是引用阿贞小朋友在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,结果都是这样,但是你把其中的一个数转化成浮点型,那么,它会以浮点数的相除来计算的。
#9
阿贞小朋友2014-03-20 22:28
嗯嗯,明白 了,谢谢了
1