您的位置:首页 > 其它

7--2(函数调用方式判断一年之中的第几天)

2013-03-20 20:29 295 查看
#include <iostream>

using namespace std;

struct N

{

int y;

int m;

int d;

}a;/*--------------------------------------------------------------------------------定义结构体变量*/

int main()

{

int j,g,i=1;

while(i==1)

{

int judge_y(N *p);

void judge_m(N *p);

void judge_d(N *p,int j);

int SUM(N *p,int j);/*-------------------------------------------------------函数声明*/

N *p;

p=&a;

cout<<"请按“年月日”输入"<<endl;

cout<<"请输入:"<<endl;

cin>>a.y>>a.m>>a.d;

/*---------------------------------------------------------------函数调用*/

j=judge_y(&a);/*---------------------------------------------------------------------------判断年份是否正确(包括是否为闰年)*/

judge_m(&a);/*-----------------------------------------------------------------------------判断月份是否正确*/

judge_d(&a,j);/*---------------------------------------------------------------------------判断日子是否正确*/

g=SUM(&a,j);/*-----------------------------------------------------------------------------计算天数*/

/*---------------------------------------------------------------函数调用*/

cout<<endl<<"计算完毕"<<endl;

cout<<a.y<<"/"<<a.m<<'/'<<a.d<<"是"<<a.y<<"年的第"<<g<<"天"<<endl;

/*--------------------------------------------------------------------------询问是否继续判断*/

cout<<"您还需要继续判断吗?(输入1继续,输入0退出)"<<endl;

cin>>i;

while(i!=0&&i!=1)

{

cout<<"您还需要继续判断吗?(输入1继续,输入0退出)"<<endl;

cin>>i;

}

} /*--------------------------------------------------------------------------询问是否继续判断*/

return 0;

}

int judge_y(N *p)/*-------------------------------------------------------------------年*/

{

while(p->y<=0)

{

cout<<"您输入的“年份”不合法,请重新输入"<<endl;

cout<<"请按“年月日”输入"<<endl;

cout<<"请输入:"<<endl;

cin>>p->y>>p->m>>p->d;

}

int j;

if((p->y%4==0)&&(p->y%100!=0))

{

j=29;

}

else j=28;

return j;

}

void judge_m(N *p)/*------------------------------------------------------------------月*/

{

while((p->m>12)||(p->m<1))

{

cout<<"您输入的“月份”不合法,请重新输入"<<endl;

cout<<"请按“月日”输入(这次只需输入月份和日子)"<<endl;

cout<<"请输入:"<<endl;

cin>>p->m>>p->d;

}

}

void judge_d(N *p,int j)/*------------------------------------------------------------日*/

{

if(p->m==2)

{

switch(j)

{

case 29:{while(p->d>29||p->d<1)

{

cout<<"您输入的“日子”不合法,请重新输入"<<endl;

cout<<"这次只需输入日子"<<endl;

cout<<"请输入:"<<endl;

cin>>p->d;

}break;

}

case 28:{while(p->d>28||p->d<1)

{

cout<<"您输入的“日子”不合法,请重新输入"<<endl;

cout<<"这次只需输入日子"<<endl;

cout<<"请输入:"<<endl;

cin>>p->d;

}break;

}

default :cout<<"出错啦!"<<endl;

}

}

else

switch (p->m)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:{while(p->d>31||p->d<1)

{

cout<<"您输入的“日子”不合法,请重新输入"<<endl;

cout<<"这次只需输入日子"<<endl;

cout<<"请输入:"<<endl;

cin>>p->d;

}break;

}

case 4:

case 6:

case 9:

case 11:{while(p->d>30||p->d<1)

{

cout<<"您输入的“日子”不合法,请重新输入"<<endl;

cout<<"这次只需输入日子"<<endl;

cout<<"请输入:"<<endl;

cin>>p->d;

}break;

}

default:cout<<"出错啦!!"<<endl;

}

}

int SUM(N *p,int j)/*-----------------------------------------------------------------计算*/

{

int g;

switch(j)

{

case 29:{switch(p->m)

{

case 1:{g=p->d;break;}

case 2:{g=31+p->d;break;}

case 3:{g=31+29+p->d;break;}

case 4:{g=31+29+31+p->d;break;}

case 5:{g=31+29+31+30+p->d;break;}

case 6:{g=31+29+31+30+31+p->d;break;}

case 7:{g=31+29+31+30+31+30+p->d;break;}

case 8:{g=31+29+31+30+31+30+31+p->d;break;}

case 9:{g=31+29+31+30+31+30+31+31+p->d;break;}

case 10:{g=31+29+31+30+31+30+31+31+30+p->d;break;}

case 11:{g=31+29+31+30+31+30+31+31+30+31+p->d;break;}

case 12:{g=31+29+31+30+31+30+31+31+30+31+30+p->d;break;}

default:{cout<<"出错啦!!!"<<endl;}

}break;

}

case 28:{switch(p->m)

{

case 1:{g=p->d;break;}

case 2:{g=31+p->d;break;}

case 3:{g=31+28+p->d;break;}

case 4:{g=31+28+31+p->d;break;}

case 5:{g=31+28+31+30+p->d;break;}

case 6:{g=31+28+31+30+31+p->d;break;}

case 7:{g=31+28+31+30+31+30+p->d;break;}

case 8:{g=31+28+31+30+31+30+31+p->d;break;}

case 9:{g=31+28+31+30+31+30+31+31+p->d;break;}

case 10:{g=31+28+31+30+31+30+31+31+30+p->d;break;}

case 11:{g=31+28+31+30+31+30+31+31+30+31+p->d;break;}

case 12:{g=31+28+31+30+31+30+31+31+30+31+30+p->d;break;}

default:{cout<<"出错啦!!!!"<<endl;}

}break;

}

default :cout<<"出错啦!!!!!"<<endl;

}

return g;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐