c - 用 C 编写一个程序,提示用户输入两个日期,然后指示日历上哪个日期更早
问题描述
#include <stdio.h>
int main(void)
{
int month, day, year, month_2, day_2, year_2;
printf("Enter first date (mm/dd/yy): ");
scanf("%d/%d/%d", &month, &day, &year);
printf("Enter second date (mm/dd/yy): ");
scanf("%d/%d/%d", &month_2, &day_2, &year_2);
if (year < year_2 && month < month_2 && day < day_2)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month, day, year, month_2, day_2, year_2);
else if (year == year_2 && month == month_2 && day == day_2)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month, day, year, month_2, day_2, year_2);
else
printf("%d/%d/%d is earlier than %d/%d/%d\n", month, day, year, month_2, day_2, year_2);
}
我得到 3/6/8 的输出早于 5/17/7,这是错误的。我完全陷入了这个问题,非常感谢您的帮助。我正在使用 KN King 的 C 编程:一种现代方法, 2008 年第 2 版。
解决方案
程序的语法看起来正确,但逻辑却不正确。要比较日期,首先进行年份,如果它们相等则进行月份,它们是否仍然相等,比较天。
因此,您必须稍微修改条件。以下代码提供代码的条件部分。
顺便说一句,您的 printf() 函数也不正确,您一直在打印第一个日期早于第二个日期。
if (year < year_2)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month, day, year, month_2, day_2, year_2);
else if (year == year_2)
if (month < month_2)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month, day, year, month_2, day_2, year_2);
else if (month == month_2)
if (day < day_2)
printf("%d/%d/%d is earlier than %d/%d/%d\n", month, day, year, month_2, day_2, year_2);
else if (day == day_2)
printf("%d/%d/%d is equal to %d/%d/%d\n", month_2, day_2, year_2, month, day, year);
else
printf("%d/%d/%d is earlier than %d/%d/%d\n", month_2, day_2, year_2, month, day, year);
else
printf("%d/%d/%d is earlier than %d/%d/%d\n", month_2, day_2, year_2, month, day, year);
else
printf("%d/%d/%d is earlier than %d/%d/%d\n", month_2, day_2, year_2, month, day, year);
推荐阅读
- angular - 避免在 Angular 中的 keyup 事件中重复调用
- javascript - 快速响应未在锚标记 href 中添加 html 属性值
- python - 在 Python / Keras 中创建图层对象的括号之外的额外括号是什么?
- angular - 如何从角度构建中排除模块?
- laravel-livewire - 使用 alpinejs 和 livewire 从带有事件监听器的组件打开模型
- docker-compose - elastic bean stalk 无法使用 docker-compose 部署,失败并出现错误:open /var/pids/eb-docker-compose-log.pid:没有这样的文件或目录
- ssl - 用于生产和消费的 kafka ssl 端口
- react-native - React Native 多行 Toast 消息
- amazon-web-services - 为什么 AWS ALB 不提供使用静态 IP?
- vba - 文本文件的基本加密