第一章 基本语法-4判断语句(if)练习平年闰年

本篇博客介绍了一个C++编程练习,涉及判断输入的年份是平年还是闰年,并根据月份输出该月的天数。通过if语句实现逻辑判断,详细阐述了闰年和平年的区别以及如何处理2月的特殊情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例题:输入年月(格式如:2015 11),输出这个月的天数

分析:首先要知道平年和闰年的不同点就是闰年2月29天,平年2月28天,其他都一样

如果不用数组的话,利用if,也可以判断思路如下:


如果输入的月份是1,3,5,7,8,10,12月

     则输出  31 天

否则 如果输入的月份是  4,6,9,11月

     则输出 30 天 

否则 (也就是输入的是2月,这时需要判断平年闰年)

      如果年份是闰年

             则输出 29 天    

      否则(也就是平年)

             则输出 28 天    

按照如上思路编写程序:

#include <iostream>
using namespace std;
/*if语句*/
int main() {
	int year,month;
	cout<<"输入年月(中间用空格隔开)"<<endl;
	cin>>year>>month;
	//如果输入的月份是1,3,5,7,8,10,12月
	if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
	   //  则输出  31 天
		cout<<year<<"年"<<month<<"月有31天"<<endl;
	}else if(month==4||month==6||month==9||month==11){
	//否则 如果输入的月份是  4,6,9,11月
	     //则输出 30 天
		cout<<year<<"年"<<month<<"月有30天"<<endl;
	}else{//否则 (也就是输入的是2月,这时需要判断平年闰年)
		//如果是400的倍数,或者不是100的倍数但是4的倍数 就是闰年
	    if(year%400==0||(year%100!=0&&year%4!=0)){
		//  如果年份是闰年,则输出 29 天
	    	cout<<year<<"年"<<month<<"月有29天"<<endl;
	    }else{//否则(也就是平年)则输出 28 天
	    	cout<<year<<"年"<<month<<"月有28天"<<endl;
	    }
	}
	return 0;
}<span style="font-weight: bold;">
</span>
如果使用数组来保持天数就比较简单点,

例如

int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
用这个数组来保持平年的天数,如果是闰年的话,就把2月的天数改为29(即days[1]=29),这里要注意数组的引索是从0开始的,即第一个数是days[1],然后输出 对应月份的天数days[month-1](第month个月的天数对应数组中的第month-1个元素)。这样的话就只需要判断平年闰年,不需要判断是几月。

代码如下(数组以后文章再提):

#include <iostream>
using namespace std;
int main() {
    int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    int year, month;
    cout << "输入年份和月份,中间用空格隔开,例如 :2015 2" << endl;
    cin >> year >> month;
    /* 如果是闰年,就把2月的天数改为29,如果是平年,就把2月的天数改为28*/
    if (year % 100 == 0) {
        if (year % 400 == 0) {//整百的润年(400的倍数,如:2000年)
            days[1] = 29;
        } else {
            days[1] = 28;
        }
    } else {//如果不是整百的年份
        if (year % 4 == 0) {//普通的润年 如:2012年
            days[1] = 29;
        } else {
            days[1] = 28;
        }
    }
    //days[month - 1] 是month月份的天数
    cout << year << "年" << month << "月,有" << days[month - 1] << "天" << endl;
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值