职业退货师获刑:哪位哥哥能帮小弟看一下程序呀,我的程序不能退出了,能帮我设计一下吗?

来源:百度文库 编辑:高校问答 时间:2024/05/05 22:50:25
这个程序是一个计算时间时期的一个程序,可是它不能退出,一输入退出条件就死循环,请帮小弟看看这个程序吧.谢谢各位了.
//1.h是头文件,它定义了一个类
class nyr
{
public:
nyr(){y=2000;m=1;d=1;xq=6;}//定义初始的年日日为2000-1-1星期六
~nyr();
int change(int data);//选择每个月的天数
int sun_month(int);//计算月份
int sum_year();
int sun_day(int);
void sun_week(int);
void print(int);
void print_day(int);
int year,month,day,all_day;//要计算的时间
private:
int y,m,d,xq;
int sumday,tt,tt1,y1;
};
//1.cpp是计算日期的程序文件
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include"1.h"
int nyr::change(int data) //选择月份的天数
{
int day;
switch(data)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day=31; break;
case 4:
case 6:
case 9:
case 11: day=30; break;
case 2:
if((year%4==0 && year%100!=0) || year%400==0)
day=29;
else
day=28;
break;
default:
day=0;
cout<<"你输入的月份错误~!请重新输入~!"<<endl;
}
return day;
}

int nyr::sum_year()//计算每年的天数
{
y1=year-y;
all_day=(y1*365)+(y1/4+1);
if(year>2000)
return all_day;
else
return (all_day-1);
}
int nyr::sun_day(int month)//计算剩余月份的天数
{
sumday=0;
for(int i=1;i<month;i++)
{
sumday+=change(i);
}
return sumday;
}

void nyr::sun_week(int data)//计算当前月份是星期几
{
tt=xq+data;
if(tt>=7)
tt=tt-7;
cout<<"tt "<<tt<<endl;
}

void nyr::print(int month)//输出月份
{
printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
for(int j=0;j<tt;j++)
cout<<"\t";
for(int i=1;i<=change(month);i++)
{
if(day==i)
tt1=tt;
cout<<i<<"\t";
if(tt>=6)
{
cout<<endl;
tt=0;
}
else
tt++;
}
cout<<endl<<endl;
cout<<year<<"年"<<month<<"月"<<day<<"日 ";
print_day(tt1);
cout<<endl;
}
nyr::~nyr()
{
cout<<"本程序已经结束谢谢您的使用~!"<<endl;
}

void nyr::print_day(int tt1)
{
switch(tt1)
{
case 1: cout<<"星期一"<<endl; break;
case 2: cout<<"星期二"<<endl; break;
case 3: cout<<"星期三"<<endl; break;
case 4: cout<<"星期四"<<endl; break;
case 5: cout<<"星期五"<<endl; break;
case 6: cout<<"星期六"<<endl; break;
case 0: cout<<"星期日"<<endl; break;
}
}
//main.cpp这个是主程序文件 我在这里设计了一个出口可是不好使
#include<iostream.h>
#include"1.h"
int main()
{
int year,month,day,sumday;
bool bl=true;
nyr *pfun1,*pfun2,p1;
pfun1=&p1;
pfun2=&p1;
while(bl==true)
{
cout<<"输入'#'退出程序"<<endl;
cout<<"请输入要查询的年月日:";
cin>>year>>month>>day;
if((char)year=='#') //这里是出口,问题就出现在这里
reutrn 0;
// bl=false;
// break;
p1.year=year;
p1.day=day;
sumday=pfun1->sum_year()+pfun2->sun_day(month);
cout<<"sumday "<<sumday<<endl;
pfun1->sun_week(sumday%7);
p1.print(month);
}
}

哥哥我的程序还有很多问题请各位帮忙了.

year是int型的,你输入#,输入流会产生错误。
你可以改个退出条件嘛,比如输入0,0,0时退出

year是int型的,你输入#,输入流会产生错误。你可以改个退出条件嘛,比如输入0,0,0时退出。