70,021
社区成员




//题: 定义一个Date结构体数据类型(年、月、日),计算该日在本年中是第几天
#include <iostream.h>
struct Date
{
int yy,mm,dd;
};
void input(Date *p)
{
cout<<"请输入年、月、日:\n";
cin>>p->yy>>p->mm>>p->dd;
}
int countday(Date &s)
{
int t=0,month[]={1,31,28,31,30,31,30,31,31,30,31,30,31};
for (int i=!(s.yy%400==0
|| (s.yy%100!=0 && s.yy%4==0) && s.mm>2); i<s.mm; ++i)
t+=month[i];
return t+s.dd;
}
void main()
{
Date d;
int dayth;
input(&d);
dayth=countday(d);
cout<<"本年中的第"<<dayth<<"天!"<<endl;
}
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
int leap_year(int a);
int cal_day(struct date a);
/*判断闰年*/
int leap_year(int a)
{
if(a%400==0||(a%4==0&&a%100!=0))
{
return 1;
}
else
{
return 0;
}
// if(a%400==0)
// return 1;
// else if(a%100==0)
// return 0;
// else if(a%4==0)
// return 1;
// else
// return 0;
}
/*计算一年中的第几天*/
int cal_day(struct date a)
{
int i;
int sum=0;
int b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
for(i=0;i<a.month-1;i++)
{
sum+=b[i];
}
if(a.month>2)
{
sum=sum+a.day+leap_year(a.year);
}
else
{
sum=sum+a.day;
}
return sum;
}
int main()
{
struct date a;
int n;
printf("\n请输入日期(年 月 日)\n");
scanf("%d%d%d",&a.year,&a.month,&a.day);
n=cal_day(a);
printf("该日在本年中是第%d天\n",n);
return 0;
}
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
int leap_year(int a);
int cal_day(struct date a);
/*判断闰年*/
int leap_year(int a)
{
if(a%400==0||(a%4==0&&a%100!=0))
return 1;
else
return 0;
// if(a%400==0)
// return 1;
// else if(a%100==0)
// return 0;
// else if(a%4==0)
// return 1;
// else
// return 0;
}
/*计算一年中的第几天*/
int cal_day(struct date a)
{
int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
for(int i=0;i<a.month-1;i++)
sum+=b[i];
if(a.month>2)
sum=sum+a.day+leap_year(a.year);
else
sum=sum+a.day;
return sum;
}
void main()
{
struct date a;
int n;
printf("\n请输入日期(年 月 日)\n");
scanf("%d%d%d",&a.year,&a.month,&a.day);
n=cal_day(a);
printf("该日在本年中是第%d天\n",n);
}
int year;/*年*/
int month;/*月*/
int date;/*日*/
int days = 0;/*该年的第几天*/
switch (month)
{
case 12:
days += 30;
case 11:
days += 31;
case 10:
days += 30;
case 9:
days += 31;
case 8:
days += 31;
case 7:
days += 30;
case 6:
days += 31;
case 5:
days += 30;
case 4:
days += 31;
case 3:
{
if (0 == year % 4)
{
days += 29;
}
else
{
days += 28;
}
}
case 2:
days += 31;
default:
days += 0;
}
//[Quote=引用 9 楼 huanmie_09 的回复:]
#include<stdio.h>struct date {int year;int month;int day;
};int is_leap_year(int year)
{return year%4==0&& year%100!=0|| year%400==0;
}int day_of_year(struct date*d)
{staticint data[2][12]= {{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};int i, j;int result= d->day;
j= is_leap_year(d->year);for (i=0; i< d->month-1;++i) {
result+= data[j][i];
}return result;
}int main()
{struct date d;
d.year=2010;
d.month=3;
d.day=10;
printf("%d年%d月%d日是该年中的第%d天.\n", d.year, d.month, d.day, day_of_year(&d));return0;
}
typedef struct Time
{
int year,month,day;
}Time;
//计算某年是否为闰年
bool IsLeapYear(int year)
{
return year%(year%100?400:4)?1:0;
}
int ComputePassHour(const Time & t1, const Time & t2)
{
int tdays1 = 0;//记录从t1那年的1月1号到t1时刻经过的天数
int i = 1;
int table[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i =1; i<t1.month;i++)
{
tdays1+= table[i];
if(i == 2 && IsLeapYear(t1.year))
tdays1++;
}
tdays1+=t1.day-1;
int tdays2 = 0;//记录从t1那年的1月1号到t2时刻经过的天数
for(i = t1.year; i<t2.year;i++)
{
if(IsLeapYear(i))
tdays2 += 366;
else
tdays2 += 365;
}
for(i = 1; i<t2.month;i++)
{
tdays2+= table[i];
if(i == 2 && IsLeapYear(t2.year))
tdays2++;
}
tdays2 += t2.day-1;
return tdays2-tdays1;//返回t1到t2经过的天数
}
}