分类：电脑/网络-软件
问题：vc++的一个问题编译时出错了。我不知道什么地方错了。希望高手指 
时出错了。我不知道什么地方错了。希望高手指教。下面是代码#include<iostream.h>class Date{private:  int m_nMonth;  int m_nDay;  int m_nYear;public:  Date (int t1,int t2,int t3)  {       m_nDay=t1;    m_nMonth=t2;       m_nYear=t3;    };  void Print();  void setval(int ,int ,int );  v时出错了。我不知道什么地方错了。希望高手指教。下面是代码#include<iostream.h>class Date{private:  int m_nMonth;  int m_nDay;  int m_nYear;public:  Date (int t1,int t2,int t3)  {       m_nDay=t1;    m_nMonth=t2;       m_nYear=t3;    };  void Print();  void setval(int ,int ,int );  void Addoneday();};void Date::Print(){  cout<<m_nDay<<"/"<<m_nMonth<<"/"<<m_nYear<<endl;  cout<<"增加一天之后的日期是："<<endl;}void Date::setval(int d,int m,int y){  m_nDay=d;  m_nMonth=m;    m_nYear=y;}void Date::Addoneday(){  switch(char(m_nMonth))  {    case' 1':  case '3':  case '5':  case '7':  case '8':  case '10':  case '12':  {    if(m_nDay==31)      {    m_nDay=1;    m_nMonth++;    if(m_nMonth==13)    {      m_nMonth=1;      m_nYear++;    }         else      m_nDay++;    break;  }    break;  case '4':  case '6':  case '9':  case '11':  {    if(m_nDay==30)    {      m_nDay=1;      m_nMonth++;    }    else      m_nDay++;    break;  }  break;  case '2':  {    if(m_nYear%4==0)    {      if(m_nDay==29)      {        m_nDay=1;        m_nMonth++;      }      else        m_nDay++;      break;    }    else      if(m_nDay==28)      {        m_nDay=1;        m_nMonth++;      }      else        m_nDay++;          break;  }  break;  cout<<"加1后的日期是："<<m_nDay<<"/"<<m_nMonth<<"/"<<m_nYear;    }void main(){  int d1,m1,y1;  cout<<"请输入日期(日/月/年)："<<endl;  cin>>d1>>m1>>y1;  Date myDate(d1,m1,y1);  myDate.Print();  myDate.Addoneday ();      char set;  cout<<"是否要重新设置（y/n）";  cin>>set;  while(set=='y'||set=='Y')  {  cout<<"请输入新的日期(日/月/年)：";  cin>>d1>>m1>>y1;   tval (d1,m1,y1);    myDate.Print();  cout<<"是否继续设置(y/n)";  cin>>set;  myDate.Addoneday ();  }}
回答：/*虽然我已经通过程序,但是有几点建议:1.请以后不要那样写程序,谁也看不明白.太乱了.记住:先设计在编码,逻辑结构要清晰简单,为以后合作编写程序的时候为别人提供参考,而且代码出现问题也可以好找出错误所在2.对于 case 即使不执行也让它执行一个空操作3.对于case语句中的同一条件下,不要多用break语句,使用相同的出口,你可能自己都不知道什么地方出口了吧,你程序的错误就在这个地方,提示的错误就是找不到程序的结束.修改后的程序如下(本程序只未了能通过调试而修改没有注重其他如编程标准和详细注释等方面的追究,如要深究,请自己多下工夫)*/#include<iostream.h>class Date{private:int m_nMonth;int m_nDay;int m_nYear;public:Date (int t1,int t2,int t3){m_nDay=t1;m_nMonth=t2;m_nYear=t3; }void Print();void setval(int ,int ,int );void Addoneday();};void Date::Print(){cout<<m_nDay<<"/"<<m_nMonth<<"/"<<m_nYear<<endl;cout<<"增加一天之后的日期是："<<endl;}void Date::setval(int d,int m,int y){m_nDay=d;m_nMonth=m;m_nYear=y;}void Date::Addoneday(){switch(m_nMonth){case 1:;case 3:;case 5:;case 7:;case 8:;case 10:;case 12:if(m_nDay==31){m_nDay=1;m_nMonth++;if(m_nMonth==13){m_nMonth=1;m_nYear++;}elsem_nDay++;break;case 4:;case 6:;case 9:;case 11:{if(m_nDay==30){m_nDay=1;m_nMonth++;}elsem_nDay++;}break;case 2:{if(m_nYear%4==0){if(m_nDay==29){  m_nDay=1;  m_nMonth++;}elsem_nDay++;}else if(m_nDay==28){m_nDay=1;m_nMonth++;}elsem_nDay++;}break;}cout<<"加1后的日期是:"<<m_nDay<<"/"<<m_nMonth<<"/"<<m_nYear;}}void main(){    int d1,m1,y1;  cout<<"请输入日期(日/月/年)："<<endl;  cin>>d1>>m1>>y1;  Date myDate(d1,m1,y1);  myDate.Print();   myDate.Addoneday ();char set;cout<<"是否要重新设置（y/n）";cin>>set;while(set=='y'||set=='Y'){cout<<"请输入新的日期(日/月/年)：";cin>>d1>>m1>>y1; tval (d1,m1,y1);myDate.Print();cout<<"是否继续设置(y/n)";cin>>set;myDate.Addoneday ();}}