cedtek 2021-09-12 20:58 采纳率: 100%
浏览 76
已采纳

if...else...用法的逻辑问题

《全国计算机等级考试二级教程—— C 语言程序设计(2019年版)》
第 4 章 选择结构
习题4.21
4.21 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。

  1. 判断年份
  2. 判断月份
  3. 判断天数

ex4_21.c

#include <stdio.h>

int main(void)
{
  int y0=0, y1=0, m0=0, m1=1, d0=0, d1=0;

  printf("请输入您的生日(例:1999 1 1)\n");
  scanf("%d%d%d", &y0, &m0, &d0);
  printf("您的生日为:%d年%d月%d日\n", y0, m0, d0);
  printf("请输入当前的日期(例:1999 1 1)\n");
  scanf("%d%d%d", &y1, &m1, &d1);
  printf("当前日期为:%d年%d月%d日\n", y1, m1, d1);

  if (y1 >= y0)
  {
    if (m1 >= m0)
    {
      if (d1 >= d0)
      {
        printf("您的实际年龄为:%d岁\n", y1-y0);
      }
      else
      {
        printf("您的实际年龄为:%d岁\n", y1-y0-1);
      }
    }
    else
    {
        printf("您的实际年龄为:%d岁\n", y1-y0-1);
    }
  }
  else
  {
    printf("您的实际年龄为:0岁\n");
  }

  return 0;
}

img

程序运行结果错误,不知道哪里逻辑有问题?

  • 写回答

1条回答 默认 最新

  • [PE]经典八炮 2021-09-12 21:10
    关注

    if (m1 >= m0)
    {
    if (d1 >= d0)
    {
    printf("您的实际年龄为:%d岁\n", y1-y0);
    }
    else
    {
    printf("您的实际年龄为:%d岁\n", y1-y0-1);
    }
    }
    你想想这里,如果现在的月比以前大,而日比以前小,会输出什么?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月13日
  • 创建了问题 9月12日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?