解题思路: for循环+switch足以解这道题

注意事项:1.2月的闰月要判断 2.循环的条件  int i = 1; i < m; i++ 不能等于m不然会多加一个月份的天数 3. sum在每一次输出结束时或者循环开始前归0,不然会把之前的sum加到新的一轮中 4.输出中的格式化输出,我不太喜欢使用所以加一个一个字符代替,也可以用

scanf("%d/%d/%d", &y, &m, &d) != EOF


参考代码:

#include <iostream>
using namespace std;

// 判断给定的年份是否是闰年
bool isp(int x) {
    if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0)) {
        return true;
    }
    return false;
}

int main() {
    int y, m, d;
    char op;
    // 循环处理多组输入数据
    while (cin >> y >> op >> m >> op >> d) {
        int sum = 0;  // 初始化累计天数为0
        // 遍历从1到m-1的月份,累加这些月份的天数
        for (int i = 1; i < m; i++) {
            switch (i) {
                case 2:  // 二月
                    if (isp(y))
                        sum += 29;  // 闰年2月有29天
                    else
                        sum += 28;  // 非闰年2月有28天
                    break;
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:  // 大月(31天)
                    sum += 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:  // 小月(30天)
                    sum += 30;
                    break;
            }
        }
        // 在累计天数的基础上加上输入的日(d),并输出结果
        cout << sum + d << endl;
    }
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论