`
ccjsjymg
  • 浏览: 60886 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第一次写c++,统计输入年份和月份统计当前月份有多少天

阅读更多
#include <iostream.h>
/**
 * 输入年份和月来统计当月有多少天
 */
bool isleapYear(int year){
	if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		return true;
	else
		return false;
}
int getDays(int year,int month){
	int day = 0;
	if(month < 8){
		for(int i = 1;i <= 7;i++){
			if(month == i){
				if(i % 2 == 0){
					if(i == 2){
						if(isleapYear(year))
							day = 29;
						else
							day = 28;
					}else{
						day = 30;
					}
				}else{
					cout<<"hello";
					day = 31;
				}
				break;
			}
			
		}
	}else{
		for(int i = 8;i <= 12;i++){
			if(month == i){
				if(i % 2 == 0){
					day = 31;
				}else{
					day = 30;
				}
				break;
			}
		}
	}
	return day;
}
int dayOfMonth(int year,int month){
	return getDays(year,month);
}


int main(){
	int year,month;
	cout<<"请分别输入年份和月分:\n";
	cin>>year>>month;
	int days = dayOfMonth(year,month);
	cout<<year<<"年"<<month<<"月有"<<days<<"天"<<endl;
	return 0;
}



感觉c++不像java在调用方法,没有顺序,而c++很有节奏感,可能是面向过程和面对对象之间的差异吧
分享到:
评论
3 楼 RednaxelaFX 2009-03-31  
嘛嘛。顶楼的代码除了cin和cout外其实不很C++?至少C++的惯用法用iostream是不带.h的,然后用std命名空间……

中间的两个for循环其实都没有意义对吧?循环体被一个大if罩着,实际上没必要循环,直接把循环体拉出来就行。
最方便的方法是查表没错~

话说完整的DateTime API极其容易写错,包括Java、Excel等都不能幸免。小demo要实用化道路漫长……嗯扯远了。
2 楼 ray_linn 2009-03-31  
麻烦发新手版吧。。。
1 楼 agurick 2009-03-31  
解决这个问题最简单的方法是查表,速度快也容易读。

#define MAX_MONTH 12

const static int days_in_month[MAX_MONTH] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

...
...

相关推荐

Global site tag (gtag.js) - Google Analytics