我的代码如下,不过运行有:warning C4700: local variable 'n' used without having been initialized 还没找到原因!!!!
代码:
#include<iostream.h>
void main(void)
    {int year,month,day,n,m;
    cout<<"year:"<<"month:"<<"day:"<<endl;
    cin>>year>>month>>day;
  if((year%4==0&&year%100!=0)||(year%400==0))//////////////判断是否为闰年
       switch(month)
         {case 1: n=0;break;
         case 2: n=31;break;
         case 3: n=60;break;//////////////////是闰年则从2月开始每月都多一天
         case 4: n=91;break; 
         case 5: n=121;break;
         case 6: n=150;break;
         case 7: n=180;break;
         case 8: n=211;break;
         case 9: n=242;break;
         case 10: n=272;break;
         case 11: n=303;break;
         case 12: n=333;break;
         default: cout<<"there is something wrong!!"<<endl;break;}
  else {if(n>31) n=n-1; else n;};//////////////////////不是闰年则从2月开始每月都少一天
  if(year>=2001) m=(365*(year-2001)+(n+day))%7;
  else m=(365*(2001-year)-(n+day))%7;
       switch(m)
        {case 0 : cout<<"sunday"<<endl;break;///////////////////能被7整除则我星期日
        case 1 : cout<<"monday"<<endl;break;
        case 2 : cout<<"tuesday"<<endl;break;
        case 3 : cout<<"wednesday"<<endl;break;
        case 4 : cout<<"thursday"<<endl;break;
        case 5 : cout<<"friday"<<endl;break;
        case 6 : cout<<"saturday"<<endl;break;
        default: cout<<"day out of range"<<endl;break;}
}注:标准日期设定为2001年1月1日  恰好为星期1感谢参与讨论!

解决方案 »

  1.   

    好象太复杂了,在csdn文档中心搜索“日历”有很多算法。
      

  2.   

    warning C4700: local variable 'n' used without having been initialized 还没找到原因!!!!
    ===========================
    你使用了一个没有初始化的变量!
    ------------------------------------
    体验速度,体验CSDN新版论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=3108679
      

  3.   

    else n 是有问题就是了,我的本意是引用上头switch(n)中n的值!
      

  4.   

    把N初始化不就可以了吗?
    else {if(n>31) n=n-1; else n;};有问题啊!
      

  5.   

    //下面代码没有警告了#include<iostream.h>void main(void)
        {
    int year=0,month=0,day=0,n=0,m=0;  //在这个地方初始化就可以了,虽然笨,但是管用
    cout<<"year:"<<"month:"<<"day:"<<endl;
    cin>>year>>month>>day;
    if((year%4==0&&year%100!=0)||(year%400==0))//////////////判断是否为闰年
    switch(month){
    case 1: n=0;break;
    case 2: n=31;break;
    case 3: n=60;break;//////////////////是闰年则从2月开始每月都多一天
    case 4: n=91;break; 
    case 5: n=121;break;
    case 6: n=150;break;
    case 7: n=180;break;
    case 8: n=211;break;
    case 9: n=242;break;
    case 10: n=272;break;
    case 11: n=303;break;
    case 12: n=333;break;
    default: cout<<"there is something wrong!!"<<endl;break;
    }
    else {if(n>31) n=n-1; };//////////////////////不是闰年则从2月开始每月都少一天
    if(year>=2001) m=(365*(year-2001)+(n+day))%7;
    else m=(365*(2001-year)-(n+day))%7;
    switch(m)
            {case 0 : cout<<"sunday"<<endl;break;///////////////////能被7整除则我星期日
            case 1 : cout<<"monday"<<endl;break;
            case 2 : cout<<"tuesday"<<endl;break;
            case 3 : cout<<"wednesday"<<endl;break;
            case 4 : cout<<"thursday"<<endl;break;
            case 5 : cout<<"friday"<<endl;break;
            case 6 : cout<<"saturday"<<endl;break;
            default: cout<<"day out of range"<<endl;break;}
    }