吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 790|回复: 10
收起左侧

[求助] 请各位大佬给个注释

[复制链接]
一剑飘零 发表于 2022-5-23 23:19
本帖最后由 一剑飘零 于 2022-5-23 23:31 编辑

太烧脑了,在学结构体。果然是掉头发。麻烦大佬一点点时间,帮小弟注释一下吧。最好是白话文最容易理解的,有时我也能理解通,有时又迷糊了。
[C] 纯文本查看 复制代码
#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[12] = {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[d.month - 1];//还有这里迷糊了。
	}
	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;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

搜索曾经的回忆 发表于 2022-5-23 23:41
睡一觉,然后搞,说不定就搞出来了,我就是这样
平淡最真 发表于 2022-5-23 23:44
16行就是调用这个月有多少天的函数,主要是判断今天是不是这个月最后一天,是和不是明天的计算方法不一样。
38行,d就是main里的today
41行,如果不是闰年2月,每个月天数就是数组里的数字,直接用下标访问取出来。-1是下标从0开始
45行,就判断是不是闰年啊,你说的也是对的。
 楼主| 一剑飘零 发表于 2022-5-23 23:51
搜索曾经的回忆 发表于 2022-5-23 23:41
睡一觉,然后搞,说不定就搞出来了,我就是这样

也是。有时看通了。再过一会又不懂了。反正就是太烧脑了。逻辑性太强了。
 楼主| 一剑飘零 发表于 2022-5-23 23:52
平淡最真 发表于 2022-5-23 23:44
16行就是调用这个月有多少天的函数,主要是判断今天是不是这个月最后一天,是和不是明天的计算方法不一样。 ...

感谢指点。-1原来是从0开始啊。这下知道了。我说下标哪有-1。
luxingyu329 发表于 2022-5-24 00:16
搜索曾经的回忆 发表于 2022-5-23 23:41
睡一觉,然后搞,说不定就搞出来了,我就是这样

是这么个道理,我也这样
WuJ1n9 发表于 2022-5-24 00:29
一剑飘零 发表于 2022-5-23 23:52
感谢指点。-1原来是从0开始啊。这下知道了。我说下标哪有-1。

-1是因为月份和数组下标之间差值为1
比如:1月的数组下标为0   5月的数组下标为4
所以【月份-1】才是这个月份在数组中的位置
闷骚小贱男 发表于 2022-5-24 07:06
一般简单的,百度都能搜到意思。。
就像我自学JavaScript、php、html、易语言、smail的时候。。。
大部分都是在百度或者在百度的路上。
用的多了就还是要继续百度。。。。
vtor 发表于 2022-5-24 09:18
同志仍需努力,加油学习啊,
这个真的太基础了
Rocky10 发表于 2022-5-24 09:21
平淡最真 发表于 2022-5-23 23:44
16行就是调用这个月有多少天的函数,主要是判断今天是不是这个月最后一天,是和不是明天的计算方法不一样。 ...

有劳看下我的悬赏帖:
https://www.52pojie.cn/thread-1639706-1-1.html
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表