c语言10-2
1、last day (错误程序)
#include <stdio.h> void lastday(int *y, int *m, int *d) { if(*d > 1) { *d -= 1; } if(*d == 1 && *m == 2 || *m == 4 || *m == 6 || *m == 9 || *m == 11) // 这种写法不正确,需要将逻辑或运算符用括号括起来 { *d = 31; *m -= 1; } if(*d == 1 && *m == 1) { *d = 31; *m = 12; *y -= 1; } if(*d == 1 && *m == 5 || *m == 7 || *m == 10 || *m == 12) { *d = 30; *m -= 1; } if(*d == 1 && *m == 3) { if(*y % 4 == 0 || *y % 400 == 0 && *y % 100 != 0) { *d = 29; *m -= 1; } else { *d = 28; *m -= 1; } } } int main(void) { int year, month, day; puts("please input three integers."); printf("year = "); scanf("%d", &year); printf("month = "); scanf("%d", &month); printf("day = "); scanf("%d", &day); printf("\ntoday: %d-%d-%d\n",year, month, day); lastday(&year, &month, &day); printf("lastday: %d-%d-%d\n", year, month, day); return 0; }
↓
修改程序
#include <stdio.h> void lastday(int *y, int *m, int *d) { if(*d > 1) { *d -= 1; } if(*d == 1 && (*m == 2 || *m == 4 || *m == 6 || *m == 9 || *m == 11)) { *d = 31; *m -= 1; } if(*d == 1 && *m == 1) { *d = 31; *m = 12; *y -= 1; } if(*d == 1 && (*m == 5 || *m == 7 || *m == 10 || *m == 12)) { *d = 30; *m -= 1; } if(*d == 1 && *m == 3) { if((*y % 4 == 0 || *y % 400 == 0) && *y % 100 != 0) { *d = 29; *m -= 1; } else { *d = 28; *m -= 1; } } } int main(void) { int year, month, day; puts("please input three integers."); printf("year = "); scanf("%d", &year); printf("month = "); scanf("%d", &month); printf("day = "); scanf("%d", &day); printf("\ntoday: %d-%d-%d\n",year, month, day); lastday(&year, &month, &day); printf("lastday: %d-%d-%d\n", year, month, day); return 0; }
2、tomorrow
#include <stdio.h> void tomo(int *y, int *m, int *d) { if(*m == 12) { if(*d < 31) *d += 1; else { *d = 1; *m = 1; *y += 1; } return; } if(*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 8 || *m == 10) { if(*d < 31) *d+=1; else { *d = 1; *m += 1; } return; } if(*m == 4 || *m == 6 || *m == 9 || *m == 11) { if(*d < 30) *d += 1; else { *d = 1; *m += 1; } return; } if(*m == 2 && ((*y % 4 == 0 || *y % 400 == 0) && *y % 100 != 0)) { if(*d < 29) *d += 1; else { *d = 1; *m += 1; } return; } if(*m == 2 && ((*y % 4 != 0 && *y % 400 != 0) || *y % 100 == 0)) { if(*d < 28) *d += 1; else { *d = 1; *m += 1; } return; } } int main(void) { int year, month, day; puts("please input three integers."); printf("year = "); scanf("%d", &year); printf("month = "); scanf("%d", &month); printf("day = "); scanf("%d", &day); printf("\ntoday: %d-%d-%d\n", year, month, day); tomo(&year, &month, &day); printf("\ntomorrow: %d-%d-%d\n", year, month, day); return 0; }
2、
#include <stdio.h> void tomor(int *y, int *m, int *d) { if(*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 8 || *m == 10) { if(*d < 31) *d += 1; else { *d = 1; *m += 1; } return; } if(*m == 12) { if(*d < 31) *d += 1; else { *d = 1; *m = 1; *y += 1; } return; } if(*m == 4 || *m == 6 || *m == 9 || *m == 11) { if(*d < 30) *d += 1; else { *d = 1; *m += 1; } return; } if(*m == 2 && ((*y % 4 == 0 || *y % 400 == 0) && *y % 100 != 0)) { if(*d < 29) *d += 1; else { *d = 1; *m += 1; } return; } if(*m == 2 &&((*y % 4 != 0 && *y % 400 != 0) || *y % 100 == 0)) { if(*d < 28) *d += 1; else { *d = 1; *m += 1; } return; } } int main(void) { int year, month, day; puts("please input three integers."); printf("year = "); scanf("%d", &year); printf("month = "); scanf("%d", &month); printf("day = "); scanf("%d", &day); printf("\ntoday: %d-%d-%d\n", year, month, day); tomor(&year, &month, &day); printf("\ntomorrow: %d-%d-%d\n", year, month, day); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律