zdh2579941211 2022-11-19 22:19 采纳率: 0%
浏览 5

#include <math.h> ... What,s your age?

今天晚上在写一个while循环交互的程序时出现了编译情况
情况是这样的我写的是一个虚岁减去实岁的语句
然后虚岁减去实岁大于0.5的话就可以参军了
我输入的条件我感觉都没什么问题,但就是编译不出来

#include <math.h>
#include <stdio.h>

int main(void)
{
    const double shisui = 18;
    double xusui;
    printf("What,s your age?\n" );
    scanf("lf",&xusui);
    while(fabs(xusui - shisui) <(double) 0.5)//fabs()是返回某一个值的绝对值的一个函数;
    {
        printf("Your age is too small.\n" );
        scanf("%f",&xusui);
    }
    printf("You age is commit 18 that is commit to attebd in PLA.\n");
    return 0;
}


不是说编译不出结果,是哪个结果是假的,不是我想要的。
上图:

我打印出的结果:
What,s your age?
17
You age is commit 18 that is commit to attebd in PLA.
//17就是虚岁,17 - 18明显小于0.5啊,他直接编译出虚岁减去实岁>=0.5的结果了,我就很懵。

我把之前的<0.5改成小于等于了,这时候不论输入多少岁都是符合当兵要求(即是语句中的条件为假,(第二个打印结果)然后打印出可以参军的结果)while(fabs(xusui - shisui) <=(double) 0.5

我想要达到的结果:当我输入18.5以上时它能够得出可以参军的结果,小于18.5就显示年龄还太小的结果(第一个打印结果)

  • 写回答

1条回答 默认 最新

  • 牛牛要坚持 2022-11-19 22:39
    关注

    scanf里输入double类型数据要%lf
    fabs是求实数绝对值 17-18最后求绝对值是1.0了
    可以设if( xusui>18.5) ... else if(xusui<18.5)…

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月19日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。