注册 登录
编程论坛 C语言论坛

我错哪儿啦?

hbccc 发布于 2020-02-18 17:11, 1451 次点击
刚做了一个习题,厘米和英寸换算,编译都对,就是运行结果不对,请哪位大神指教一下哈。
# include <stdio.h>

# define INTCM 2.54 //1英寸=2.54厘米
# define XING 50

double itc(double);
double cti(double);

int main(void)
{
    int i=0;
    int n;
    double cms;
    double inchs,result;
   
    printf("START:\n\n\n\n\n");
   
    for(i=0;i<XING;i++)
        printf("*");
        printf("\n\n");
    printf("请输入序号:\n\n");
    printf("1、厘米转英寸             2、英寸转厘米\n\n");
    for(i=0;i<XING;i++)
        printf("*");
        printf("\n\n");
        printf("请输入您的选择(1或2):");
    scanf("%d",&n);
        printf("您输入的是:%d\n",n);
   
    if (n==1)
       {printf("请输入厘米数:");
       scanf("%f",&cms);
       result=cti(cms);
       printf("%5.2f厘米=%5.2f英寸",cms,result); }
    else   
    if(n==2)
    {printf("请输入英寸数:");
     scanf("%f",&inchs);
     result=itc(inchs);
     printf("%1.2f英寸=%1.2f厘米",inchs,result);
    }
    else
    printf("请输入“1”或“2”!");
        
    printf("\n\n\n\n\nTHE END");
   
    return 0;
}


double itc(double inch)
{

    double cm;
    cm=inch*INTCM;
    return cm;
}

double cti(double cm)
{
    double inch;
    inch=cm/INTCM;
    return inch;
}

运行过后算不出结果,可能是输入的参数没传到函数里,哪位大神指教一二,谢谢哈。
2 回复
#2
纯蓝之刃2020-02-18 17:53
scanf("%lf",&cms);
scanf("%lf",&inchs);

输入你用的是%f,这是float类型,而cms和inchs是double类型,所以应该使用%lf进行输入。
float和double类型在内存占用的字节数不同。
#3
hbccc2020-02-18 18:15
回复 2楼 纯蓝之刃
大神果然高见,我想破了脑袋都没想出来,谢谢。
1