请各位大佬给个注释
本帖最后由 一剑飘零 于 2022-5-23 23:31 编辑太烧脑了,在学结构体。果然是掉头发。麻烦大佬一点点时间,帮小弟注释一下吧。最好是白话文最容易理解的,有时我也能理解通,有时又迷糊了。
#include <stdio.h>
#include <stdbool.h>
//输入年月日计算出明天是什么日子
struct date {
int month;
int day;
int year;
};
bool isLeap(struct date d);
int number0fDays(struct date d);
int main() {
struct date today, tomorrow;
printf("请输入年月日(年 月 日):");
scanf("%d %d %d", &today.year, &today.month, &today.day);
if (today.day != number0fDays(today)) { //这里有些烧脑
tomorrow.day = today.day + 1;
tomorrow.month = today.month;
tomorrow.year = today.year;
} else if (today.month == 12) { //这个好理解
tomorrow.day = 1;
tomorrow.month = 1;
tomorrow.year = today.year + 1;
} else { //这个也好理解
tomorrow.day = 1;
tomorrow.month = today.month + 1;
tomorrow.year = today.year;
}
// printf("%d",isLeap());
printf("明天的日期是%d年%d月%d日\n", tomorrow.year, tomorrow.month, tomorrow.day);
return 0;
}
int number0fDays(struct date d) {
int days;
const int daysPerMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (d.month == 2 && isLeap(d)) { //这里的d代表的是什么?是哪个变量?是不是就是我输入的today?也就是说number0fDays和isLeap其实都是main中我输入的today的值?
days = 29;
} else {
days = daysPerMonth;//还有这里迷糊了。
}
return days;
}
bool isLeap(struct date d) { //这里返回值是不是就是true和false?还有这个参数都是形参,应该是main里面调用number0fDays这个函数中它再调用isLeap,我饶晕了
bool leap = false;
if ((d.year % 4 == 0 && d.year % 100 != 0) || d.year % 400 == 0)
leap = true;
return leap;
} 睡一觉,然后搞,说不定就搞出来了,我就是这样 16行就是调用这个月有多少天的函数,主要是判断今天是不是这个月最后一天,是和不是明天的计算方法不一样。
38行,d就是main里的today
41行,如果不是闰年2月,每个月天数就是数组里的数字,直接用下标访问取出来。-1是下标从0开始
45行,就判断是不是闰年啊,你说的也是对的。
搜索曾经的回忆 发表于 2022-5-23 23:41
睡一觉,然后搞,说不定就搞出来了,我就是这样
也是。有时看通了。再过一会又不懂了。反正就是太烧脑了。逻辑性太强了。 平淡最真 发表于 2022-5-23 23:44
16行就是调用这个月有多少天的函数,主要是判断今天是不是这个月最后一天,是和不是明天的计算方法不一样。 ...
感谢指点。-1原来是从0开始啊。这下知道了。我说下标哪有-1。 搜索曾经的回忆 发表于 2022-5-23 23:41
睡一觉,然后搞,说不定就搞出来了,我就是这样
是这么个道理,我也这样:lol 一剑飘零 发表于 2022-5-23 23:52
感谢指点。-1原来是从0开始啊。这下知道了。我说下标哪有-1。
-1是因为月份和数组下标之间差值为1
比如:1月的数组下标为0 5月的数组下标为4
所以【月份-1】才是这个月份在数组中的位置 一般简单的,百度都能搜到意思。。
就像我自学JavaScript、php、html、易语言、smail的时候。。。
大部分都是在百度或者在百度的路上。
用的多了就还是要继续百度。。。。 同志仍需努力,加油学习啊,
这个真的太基础了 平淡最真 发表于 2022-5-23 23:44
16行就是调用这个月有多少天的函数,主要是判断今天是不是这个月最后一天,是和不是明天的计算方法不一样。 ...
有劳看下我的悬赏帖:
https://www.52pojie.cn/thread-1639706-1-1.html
页:
[1]
2