求编程 C语言 计算生日是当年的第多少天
发布网友
发布时间:2023-07-05 00:45
我来回答
共4个回答
热心网友
时间:2024-10-22 16:50
算了,我重改一个,但这个程序只能算出正确结果,不判断输入的年月日是否合法,其中考虑了闰年等问题。
#include "iostream.h"
int main()
{
cout<<endl<<"此程序用于计算某日期为当年第几天。"<<endl<<endl;
cout<<"请输入一个日期(年月日用空格隔开,前面不要加零):";
int l,y,r;
cin>>l>>y>>r; //输入一个日期
int tian=0;
switch (y)
{
case 12:
tian=tian+30;//如果月份是12月,那么加上11月的全部天数。再顺序加上以下的所有月份天数。
case 11:
tian=tian+31;//如果月份是11月,那么加上10月的全部天数。再顺序加上以下的所有月份天数。
case 10:
tian=tian+30;
case 9:
tian=tian+31;
case 8:
tian=tian+31;
case 7:
tian=tian+30;
case 6:
tian=tian+31;
case 5:
tian=tian+30;
case 4:
tian=tian+31;
case 3:
(l%400==0 || (l%4==0 && l%100!=0))?(tian=tian+29):(tian=tian+28);
case 2:
tian=tian+31;
case 1:
tian=tian+r;//最后加上当月的号数。
}
cout<<"此日期为当年第"<<tian<<"天"<<endl;
return 0;
}
热心网友
时间:2024-10-22 16:50
仅代表思路,语法不保证正确
for(i=1,i<=m,i++)
{
switch(m)
{
case 2:sum+=(y%4==0&&y%100!=0||y%400==0)?28:29;break;
case 4:
case 6:
case 9:
case 11:sum+=30;break;
default:sum+=31;break;
}
}
sum+=d;
热心网友
时间:2024-10-22 16:51
#include<stdio.h>
void main()
{
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int imonth,iday,ans;
scanf(%d,%d,imonth,iday);
ans = ....
}
热心网友
时间:2024-10-22 16:51
#include "stdafx.h"
#include <stdio.h>
int GetDaysOfYear(int nYear)
{
if((nYear%4 == 0 && nYear%100 !=0) || nYear%400 == 0)
{
return 366;
}
else
return 365;
}
int GetDaysOfMonth(int nMonth,int nYear)
{
switch(nMonth)
{
case 4:
case 6:
case 8:
case 11:
return 30;
case 2:
if(GetDaysOfYear(nYear) == 365)
return 28;
else
return 29;
break;
default:
return 31;
}
}
class date
{
public:
void Set(int n1=1900, int n2=1, int n3=1);
int operator - (const date &v1);
int m_nYear;
int m_nMonth;
int m_nDay;
};
int date::operator -(const date &v1)
{
int nCounter = 0;
int nYear = m_nYear - v1.m_nYear;
if(nYear == 0)
{
int nMonth = m_nMonth - v1.m_nMonth;
if(nMonth == 0)
return m_nDay - v1.m_nDay;
else if(m_nMonth >0)
{
for(int i=v1.m_nMonth+1; i<m_nMonth; i++)
nCounter += GetDaysOfMonth(i,m_nYear);
nCounter += m_nDay;
nCounter += GetDaysOfMonth(v1.m_nMonth,v1.m_nYear) - v1.m_nDay;
}
}
else if(nYear > 0)
{
for(int i=v1.m_nYear+1; i<m_nYear; i++)
nCounter+=GetDaysOfYear(i);
for(int i=1; i<m_nMonth; i++)
nCounter += GetDaysOfMonth(i,m_nYear);
nCounter+=m_nDay;
for(int i=v1.m_nMonth+1; i<13; i++)
nCounter += GetDaysOfMonth(i,v1.m_nYear);
nCounter += GetDaysOfMonth(v1.m_nMonth,v1.m_nYear) - v1.m_nDay;
}
return nCounter;
}
void date::Set(int n1, int n2, int n3)
{
if(n1 > 999)
{
m_nYear = n1;
m_nMonth = n2;
m_nDay = n3;
}
else
{
m_nMonth = n1;
m_nDay = n2;
m_nYear = n3;
}
}
void main()
{
date d1,d2;
d1.Set(1985,1,1); // 生日
d2.Set(2007,12,7); // 今天
int nDays = d2 - d1;
printf("生日到今天有%d天\n",nDays);
}