HDU2005 第几天?(C++)
问题链接
[link] http://acm.hdu.edu.cn/showproblem.php?pid=2005
做题思路
- 将年月日取出,转化为相应的数值表示
- 使用数组存储每个月的天数
- 判断是否为闰年,区分二月份的天数
- 最终结果计算
额外知识
将年月日取出时作者使用的.find .find_last_of 找到特定字符所对应的索引值
解题代码
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int convert_to_num(string a){
int len=a.length();
//cout<<"a.length"<<len;
int sum=0;
for(int i=0;i<len;i++){
sum+=int(a[i]-'0')*pow(10,len-1-i);
}
//cout<<"sum==="<<sum<<endl;
return sum;
}
int main(){ //给定一个时间 判断是该年的第几天
string date;
while(cin>>date){
int a=date.find('/');
int b=date.find_last_of('/');
//将字符串转换为数字
int year=convert_to_num(date.substr(0,a));
int month=convert_to_num(date.substr(a+1,b-a-1));
int day=convert_to_num(date.substr(b+1));
//求每月的天数
//求2月的天数
int month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(year%400==0){
month_day[1]=29;
}
//判断是第几天
int count=0;
for(int j=0;j<month-1;j++){
count+=month_day[j];
}
count+=day;
cout<<count<<endl;
}
return 0;
}