C++第12周项目1——某年的第几天

简介: 课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759【项目1-当年第几天】  定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。 参考解答1:#include<iostream>using namespac

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759

【项目1-当年第几天】
  定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。
 

参考解答1:

#include<iostream>
using namespace std;
int days(int y, int m, int d);
int main()
{
    int year, month, day;
    cout<<"输入年 月 日"<<endl;
    cin>>year>>month>>day;
    cout<<"这是该年的第"<<days(year, month, day)<<"天"<<endl;
    return 0;
}

int days(int y, int m, int d)
{
    int sum=d;
    //加上前m-1月的天数
    for(int i=1;i<m;i++)
    {
        switch(i)
        {
        case 2:
            sum+=((y%4==0&&y%100!=0)||y%400==0)?29:28;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            sum+=30;
            break;
        default:
            sum+=31;
            break;
        }
    }
    return sum;
}

用类似思路,有参考解答2:

#include<iostream>
using namespace std;
int days(int y, int m, int d);
int main()
{
    int year, month, day;
    cout<<"输入年 月 日"<<endl;
    cin>>year>>month>>day;
    cout<<"这是该年的第"<<days(year, month, day)<<"天"<<endl;
    return 0;
}

int days(int y, int m, int d)
{
    int sum=d;
    //加上前m-1月的天数
    for(int i=1; i<m; i++)
    {
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            sum+=31;
        else if (i==4||i==6||i==9||i==11)
            sum+=30;
        else
            sum+=((y%4==0&&y%100!=0)||y%400==0)?29:28;
    }
    return sum;
}

下下周学习了数组,可以这样来,30行之内解决问题(对数组充满期待吧):

#include<iostream>
using namespace std;
int days(int y, int m, int d);
int main()
{
    int year, month, day;
    cout<<"输入年 月 日"<<endl;
    cin>>year>>month>>day;
    cout<<"这是该年的第"<<days(year, month, day)<<"天"<<endl;
    return 0;
}

int days(int y, int m, int d)
{
    int sum=d;
    int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
    for(int i=1; i<m; i++)
    {
        sum+=a[i];
    }
    if(m>2&&((y%4==0&&y%100!=0)||y%400==0)) //若闰年,且晚于2月,加一天
        sum++;
    return sum;
}

有同学写成下面的代码,结果对,但这样的程序的确不好:

#include <iostream>
using namespace std;
int shijian(int year,int month,int day);
int main()
{
    int year,month,day,t;
    cout<<"要知道今天是今年第几天吗?请输入年月日:"<<endl;
    cin>>year>>month>>day;
    t=shijian(year,month,day);
    cout<<year<<"年"<<month<<"月"<<day<<"是本年第"<<t<<"天"<<endl;
    cout<<"我相信这将是最美好的一天."<<endl;
}
int shijian(int year,int month,int day)
{
    int t;
    if(year%4==0&&year%100!=0||year%400==0)
    {
        switch(month)
        {
        case 1:
            t=day;
            break;
        case 2:
            t=day+31;
            break;
        case 3:
            t=day+31+29;
            break;
        case 4:
            t=day+31+29+31;
            break;
        case 5:
            t=day+31+29+31+30;
            break;
        case 6:
            t=day+31+29+31+30+31;
            break;
        case 7:
            t=day+31+29+31+30+31+30;
            break;
        case 8:
            t=day+31+29+31+30+31+30+31;
            break;
        case 9:
            t=day+31+29+31+30+31+30+31+31;
            break;
        case 10:
            t=day+31+29+31+30+31+30+31+31+30;
            break;
        case 11:
            t=day+31+29+31+30+31+30+31+31+30+31;
            break;
        case 12:
            t=day+31+29+31+30+31+30+31+31+30+31+30;
            break;
        }
        return t;
    }
    else
    {
        switch(month)
        {
        case 1:
            t=day;
            break;
        case 2:
            t=day+31;
            break;
        case 3:
            t=day+31+28;
            break;
        case 4:
            t=day+31+28+31;
            break;
        case 5:
            t=day+31+28+31+30;
            break;
        case 6:
            t=day+31+28+31+30+31;
            break;
        case 7:
            t=day+31+28+31+30+31+30;
            break;
        case 8:
            t=day+31+28+31+30+31+30+31;
            break;
        case 9:
            t=day+31+28+31+30+31+30+31+31;
            break;
        case 10:
            t=day+31+28+31+30+31+30+31+31+30;
            break;
        case 11:
            t=day+31+28+31+30+31+30+31+31+30+31;
            break;
        case 12:
            t=day+31+28+31+30+31+30+31+31+30+31+30;
            break;
        }
        return t;
    }
}



目录
相关文章
|
6月前
|
编译器 C++ 开发者
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
338 1
|
6月前
|
算法 测试技术 数据处理
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
168 1
|
6月前
|
算法 测试技术 开发工具
编写高效技术文档的艺术:C++项目实践指南
编写高效技术文档的艺术:C++项目实践指南
165 0
|
6月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
213 7
WK
|
10天前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
32 1
|
28天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
234 3
|
2月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
39 3
|
4月前
|
Rust 测试技术 编译器
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
Rust与C++的区别及使用问题之Rust项目中组织目录结构的问题如何解决
|
3月前
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
81 0
|
4月前
|
Java C++ 开发者
如何根据项目需求选择使用C++还是Python进行内存管理?
【7月更文挑战第2天】如何根据项目需求选择使用C++还是Python进行内存管理?
47 0