编程-这万年历的代码错哪了?

问题描述

这万年历的代码错哪了?
 #include<iostream>
using namespace std;
#include<iomanip>
int daysofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int Isleap_year(int year)
{
    if((year%4==0&&year%100!=0)||year%400==0)
        return 1;
    else
        return 0;
}
int get_days(int y,int m,int d)
{
    int i,count=d;  //公年元年1月1日是星期1
    for(i=1;i<y;i++)
    {
        if(Isleap_year(i))
            count++;
    }
    count+=(365*(y-1));
    if(Isleap_year(y))
        daysofmonth[2]=29;
    for(i=1;i<m;i++)
        count+=daysofmonth[i];
    return count;
}
void printf_year()
{
    system("cls");//清屏
    int sum,year,month;
    int a[10],b[10];
    cout<<"你想知道哪一年的年历呢?请输入:";
    cin>>year;
    cout<<"======================= The calender of year "<<year<<"========================"<<endl;
    int i=1;
    int j;
    for(i=1;i<=12/3;i++)//每一行显示三个月的月历
    {
        cout<<"----------------------------------------------------------------------------"<<endl;
        for(int h=1;h<=3;h++)
        {
            int m=3*(i-1)+h;
            cout<<"        "<<m<<"月          ";//月份名
        }
        cout<<endl<<"-----------------------------------------------------------------------------"<<endl;
        for( j=0;j<3;j++)
            cout<<"日"<<" 一"<<" 二"<<" 三"<<" 四"<<" 五"<<" 六 "<<"  ";
        cout<<endl;

        for( j=0;j<3;j++)
        {
            month=3*(i-1)+j+1;
            sum=get_days(year,month,1);
            sum=sum%7;
            for(int m=0;m<sum;m++)
                cout<<"   ";
            if(Isleap_year(year))
                daysofmonth[2]=29;
            b[j]=daysofmonth[month];
            for(int k=1;k<8-sum;)
            {
                cout<<setw(2)<<setfill(' ')<<k<<" ";
                k++;
                a[j]=k;
            }
            cout<<"  ";
        }
        cout<<endl;
        for(int w=1;w<=5;w++)
        {
            for(int j=0;j<3;j++)
            {
               int m;
               for(m=1;m<=7;m++,a[j]++)
               {
                   if(a[j]>b[j])
                       break;
                   cout<<setw(2)<<setfill(' ')<<a[j]<<" ";
               }
               for(int n=1;a[j]>b[j],n<=8-m+1;n++)
                   cout<<"  ";
               if(a[j]>b[j]&&m!=8)
                   cout<<"  ";
            }
            cout<<endl;
        }
    }
    cout<<"================================================="<<endl;
}
void main()
{
    printf_year();
    system("pause");
}

解决方案

修改:

            for(int w=1;w<=5;w++)
        {
            for(int j=0;j<3;j++)
            {
                int m;
                for(m=1;m<=7;m++,a[j]++)
                {
                    if(a[j]>b[j]) cout<<"   ";
                    else cout<<setw(2)<<setfill(' ')<<a[j]<<" ";
                }
                cout<<"  ";
            }
            cout<<endl;
        }

解决方案二:

程序本身没大问题,就是输出的时候空格计算不对

解决方案三:

仔细看了下,问题不少,参考下这个
http://blog.sina.com.cn/s/blog_7745925a0100w2t1.html

解决方案四:

http://blog.csdn.net/xianfajushi/article/details/44811153

解决方案五:

大帅手把手教你做日历控件——WinForm窗体控件库和日历算法

时间: 2024-08-31 04:23:23

编程-这万年历的代码错哪了?的相关文章

编程-这个电子钟的代码错哪了?

问题描述 这个电子钟的代码错哪了? 计算机代码编程培训"> #include ""digiclock.h""#include <QPalette>#include <QTimer>#include <QTime>#include <QMouseEvent>DigiClock::DigiClock(QWidget *parent): QLCDNumber(parent){ QPalette p=QPale

编程-自定义菜单:这代码错哪了?

问题描述 自定义菜单:这代码错哪了? 解决方案 微信创建自定义菜单代码微信平台自定义菜单代码

编程-我这个给各位学生的总分排名的代码错哪了?

问题描述 我这个给各位学生的总分排名的代码错哪了? #include<stdio.h> #include<stdlib.h> #include<string.h> #define maxsize 5 struct student { int num; char name[30]; int english,computer,math,chinese; int rank; }; double aen,aco,ama,ach;int maxch,maxma,maxen,max

c++模板编程问题-C++模板编程问题,各种报错,但一直找不到错,求大侠们指导,感激不尽

问题描述 C++模板编程问题,各种报错,但一直找不到错,求大侠们指导,感激不尽 在实现一个C++模板类时出现诸多错误,刚入手模板编程,找错找了大半天,未果,纠结中,求助大神们指导,感激不尽.这是一个类声明,定义部分感觉不会出错,大多也类似,只给出了部分 编译错误报告 语法错误 :1. 缺少";"(在"<"的前面)--报错行1 2: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int--报错行1(我传入模板实参为int) template c

【C 语言】 这个代码错在哪了?我用的是Dev C++

问题描述 [C 语言] 这个代码错在哪了?我用的是Dev C++ /*题目:输入某年某月某日,判断这一天是这一年的第几天?*/ #include #define MONTH 12 struct date{ int Day; int Month; int Year; }; int main() { int count,days,month; struct date today; int daysPerMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

vc++-VC编程中提取源程序代码应用另一个程序

问题描述 VC编程中提取源程序代码应用另一个程序 请问各位大神,现在我有一段VC二维码识别程序的源代码,如何将其提取并编译成一个新的程序,满足从指定位置访问图片文件,输出识别信息?求指导. 在VC编程环境下实现,谢谢! 解决方案 既然有源代码,那么你要做的就是程序得到输入文件路径,然后传给源码中的函数对应参数,获取函数返回结果,进行处理. 解决方案二: 参考:http://blog.csdn.net/liuyu60305002/article/details/8713399 解决方案三: 有一段

数据-matlab 代码错在哪 求解决

问题描述 matlab 代码错在哪 求解决 想要用12个数据去预测1个数据 P=[2.97 3.02 3.29 3.35 5.6 5.41 4.82 3.61 2.92 2.03 1.95 1.94 3.01 3.18 3.45 3.51 5.82 5.58 4.95 3.95 3.01 2.21 2.13 2.13 3.2 3.31 3.56 3.72 6.01 5.73 5.2 4.11 3.21 2.33 2.3 2.3 3.4 3.42 3.8 3.88 6.21 5.88 5.41 4

android-怎么形成编程思想,写代码的时候不知道该干什么

问题描述 怎么形成编程思想,写代码的时候不知道该干什么 最近在看视频学Android,可以看懂视频中的大多数代码,但是让我自己写就有点难了,写完这一步不知道下一步该干什么,甚至是根本不知道该怎么下手,请问怎么才能形成编程思想啊,写不出来就很烦 解决方案 无论是使用什么编程语言,你首先需要确定需求,即功能的定义. 自己用纸来写出整个流程,当然用 Visio 等工具也可以,编程只是个实现的过程,编程用的语言只是个工具.如果你都不清楚想要做什么,和怎么去做,那使用什么编程语言都是一样的. 解决方案二:

xmlentities-在xml文档中插入图片总是失败,请大家帮我看看这段代码错在哪里了?

问题描述 在xml文档中插入图片总是失败,请大家帮我看看这段代码错在哪里了? <?xml version="1.0" encoding="GB2312"?> <!DOCTYPE photos[ <!ELEMENT photos (photo*)> <!ELEMENT photo EMPTY> <!ATTLIST photo Sources ENTITIES #REQUIRED> <!ENTITY ic1 S