输入年月日输出是这一年的第几天
C\C++面试题:输入年月日,打印出为这一年的第几天。
基本知识
先明确基本的闰年和每月的天数,来看一首儿歌。
一三五七八十腊(12);
四六九冬(11)三十整;
二月特殊不可忘;
平年二月二十八;
闰年二月把一加。
如歌所说,闰年平年的每个月的天数都可得到。
C代码
首先定义一个结构体保存年月日信息
typedef struct{
int year;
int month;
int day;
}Date;
然后通过数组保存平年的每个月的天数,并判断闰年修改2月天数
int m_days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(onedate.year%4 == 0)
m_days[2] = 29;
最后循环相加个月天数即可
for(i=1;i<onedate.month;i++){
days += m_days[i];
}
最后上完整代码
#include <stdio.h>
typedef struct{
int year;
int month;
int day;
}Date;
int day_of_year(Date onedate){
int i;
int days = onedate.day;
int m_days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(onedate.year%4 == 0)
m_days[2] = 29;
for(i=1;i<onedate.month;i++){
days += m_days[i];
}
return days;
}
int main()
{
Date inDate;
int days;
printf("请输入年份:");
scanf("%d", &inDate.year);
printf("请输入月份:");
scanf("%d", &inDate.month);
printf("请输入日期:");
scanf("%d", &inDate.day);
days = day_of_year(inDate);
printf("%d年%d月%d日是%d年的第%d天\n",inDate.year,inDate.month,inDate.day,inDate.year,days);
return 0;
}
C++代码
换汤不换药,如下
#include <iostream>
using namespace std;
typedef struct{
int year;
int month;
int day;
}Date;
int day_of_year(Date onedate){
int i;
int days = onedate.day;
int m_days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(onedate.year%4 == 0)
m_days[2] = 29;
for(i=1;i<onedate.month;i++){
days += m_days[i];
}
return days;
}
int main()
{
Date inDate;
int days;
cout << "请输入年份: " ;
cin >> inDate.year;
cout << "请输入月份: " ;
cin >> inDate.month;
cout << "请输入日期: " ;
cin >> inDate.day;
days = day_of_year(inDate);
cout << inDate.year << "年";
cout << inDate.month << "月";
cout << inDate.day << "日是";
cout << inDate.year << "年的第";
cout << days << "天" << endl;
return 0;
}
结语
考察常识和编程能力,顺便看看代码风格
支持的点个赞~ 谢谢~~