求C++大神帮助,我们考试要做一个小程序,程序在网上找好了,可是看不懂,帮我翻译一下大概意思。

#include<iostream>usingnamespacestd;constintmon_day[2][12]={31,28,31,30,31,30,31,31,3... #include<iostream>
using namespacestd;

const intmon_day[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31};
int IsLeap(intyear)
{
if(year%400==0 || (year%4==0 &&year%100!=0))
return 1;
else
return 0;
}

voidShowCalenDar(int y,int m)
{
if(m==0)
{
m=12,y=y-1;
}
if(m==13)
{
m=1,y=y+1;
}
int i=0,j=0,t=0,n=0;
t =y-1;
t =(1+t+t/4-t/100+t/400)%7; //t为当前年份一月一号的星期

n =IsLeap(y);

for(i=1;i<m;i++)
{
t+=mon_day[n][i-1];
t %=7;
}
if(t==0)
t = 7; //计算后的t为当前年份当前月份一号的星期

cout<<endl;
cout<<y<<"年"<<m<<"月"<<endl;
cout<<"------------------------------"<<endl;
cout<<" 一 二 三 四 五 六 日"<<endl;

for(j=1;j<t;j++)
cout<<" ";

for(j=1;j<=mon_day[n][m-1];j++)
{
printf("%4d",j);

t++;
if(t==8)
{
cout<<endl; //控制输出的整齐
t = 1;
}
}
if(t!=1)
cout<<endl;

cout<<"------------------------------"<<endl;
cout<<endl;
}

int main()
{
int year,month;
while(1)
{
cout<<"请输入年份和月份 :";
cin>>year>>month;
ShowCalenDar(year,month-1);
ShowCalenDar(year,month);
ShowCalenDar(year,month+1);

}
return 0;
}
展开
 我来答
weidonghui117
2013-06-05 · TA获得超过162个赞
知道小有建树答主
回答量:115
采纳率:100%
帮助的人:91.9万
展开全部
#include<iostream>
using namespace std;
const int mon_day[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31};
//定义一个数组,数组一个为闰年每月的最大值,一个为平年每月的最大值
int IsLeap(int year)//定义个判断是否为闰年的函数
{
if(year%400==0 || (year%4==0 &&year%100!=0))
return 1; //是闰年返回1
else
return 0; //不是闰年
}
void ShowCalenDar(int y,int m) //生成日历函数
{
if(m==0) //如果输入月份为0
{
m=12,y=y-1; //使月份直接为12
}
if(m == 13) //上同如果月份输入了13
{
m=1,y=y+1;
}
int i=0,j=0,t=0,n=0;
t =y-1;
t =(1+t+t/4-t/100+t/400)%7; //t为当前年份一月一号的星期
n =IsLeap(y); //调用闰年判断函数,n=1或0
for(i=1;i<m;i++)
{
t+=mon_day[n][i-1]; //累加t和所输入的月份的天数
t %=7; //计算后的t为当前年份和每个月份一号的星期
//当i = 1时,t就是2月1号的星期
//当i = 2时,t就是3月1号的星期
}
if(t==0)
t = 7; //计算后的t为当前年份当前月份一号的星期
cout<<endl;
cout<<y<<"年"<<m<<"月"<<endl;
cout<<"------------------------------"<<endl;
cout<<" 一 二 三 四 五 六 日"<<endl;
for(j=1;j<t;j++) //控制输出每个月一号的位置
cout<<" ";
for(j=1;j<=mon_day[n][m-1];j++)
{
printf("%4d",j); //输出日历表
t++;
if(t==8)
{
cout<<endl; //控制输出的整齐,每8个数据换行一次
t = 1; //t重置为1
}
}
if(t!=1)
cout<<endl;
cout<<"------------------------------"<<endl;
cout<<endl;
}
int main() //主函数
{
int year,month;
while(1)
{
cout<<"请输入年份和月份 :";
cin>>year>>month; //输入年月 以空格隔开,或者换行隔开
ShowCalenDar(year,month-1); //显示所输入年和上个月的日历表
ShowCalenDar(year,month); //显示所输入年月的日历表
ShowCalenDar(year,month+1);
}
return 0;
}

good good study,day day up!!
坦荡又热心灬工匠G
2013-06-05 · 超过26用户采纳过TA的回答
知道答主
回答量:279
采纳率:0%
帮助的人:87万
展开全部
#include<iostream>  
using namespacestd;  
 
const intmon_day[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31}; 
int IsLeap(int year) //判断是不是闰年
{  
     if(year%400==0 || (year%4==0 &&year%100!=0)) 
     return 1;  
     else
     return 0;  
}  
 
voidShowCalenDar(int y,int m)  //打印输出y年m月的日历 就和日历一样的

    if(m==0)
    {
        m=12,y=y-1;
    }
    if(m==13)
    {
        m=1,y=y+1;
    }
    int i=0,j=0,t=0,n=0;
     t =y-1;  
     t =(1+t+t/4-t/100+t/400)%7;      //t为当前年份一月一号的星期
 
     n =IsLeap(y);
 
    for(i=1;i<m;i++)
     {
      t+=mon_day[n][i-1];
      t %=7;
     }
    if(t==0)
        t = 7;    //计算后的t为当前年份当前月份一号的星期

cout<<endl;  
     cout<<y<<"年"<<m<<"月"<<endl;
     cout<<"------------------------------"<<endl;
     cout<<"  一  二  三  四  五  六  日"<<endl; 
 
     for(j=1;j<t;j++)    
     cout<<"    ";
 
     for(j=1;j<=mon_day[n][m-1];j++)
     {  
         printf("%4d",j);
       
         t++;  
             if(t==8)
             {  
              cout<<endl;   //控制输出的整齐
              t = 1;  
             } 
     }  
     if(t!=1) 
     cout<<endl;  
 
     cout<<"------------------------------"<<endl;   
     cout<<endl;  
}  
 
int main()  
{  
 int year,month;  
 while(1)
 {  
  cout<<"请输入年份和月份 :";
  cin>>year>>month;
  ShowCalenDar(year,month-1);
  ShowCalenDar(year,month);
  ShowCalenDar(year,month+1);
 
 }  
 return 0;  
}

很简单的 你自己看看

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风笳
2013-06-05
知道答主
回答量:16
采纳率:0%
帮助的人:10万
展开全部
注释还是挺清晰的吧?总之就是打印一个日历表,具体是某个年某个月的。
第一个函数判断是否是闰年,第二个函数从得到main函数中所传递的参数,打印日历表。就这样,没多的,请再多思考一下,还是很简单的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐VoV乐
推荐于2016-10-29 · 知道合伙人软件行家
乐VoV乐
知道合伙人软件行家
采纳数:289 获赞数:878
深圳市潮范文化传播有限公司软件工程师.

向TA提问 私信TA
展开全部
#include<iostream>
using namespace std;
//二维数组,存放1年12月份的天数。但此处初始化有点问题,无论平年或闰年,2月份均为28天,需要修改
const int mon_day[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};
int IsLeap(int year) //判断是否是闰年
{
if(year%400==0 || (year%4==0 &&year%100!=0))
return 1; //是闰年返回1
else return 0; //否则返回0
}
void ShowCalenDar(int y,int m)
{
if(m==0) //用户输入月份为0,则转换为12,年份减一
{
m=12,y=y-1;
}
if(m==13) //用户输入月份为13,则转换为1,年份加一
{
m=1,y=y+1;
}
int i=0,j=0,t=0,n=0;
t =y-1;
t =(1+t+t/4-t/100+t/400)%7; //t为当前年份一月一号的星期 计算公式
n =IsLeap(y); //判断是否是闰年
for(i=1;i<m;i++)
{
t+=mon_day[n][i-1]; //累加从1月到m月所有的天数
t %=7; //求与7的余数,得星期几
}
if(t==0)
t = 7; //计算后的t为当前年份当前月份一号的星期
cout<<endl;
cout<<y<<"年"<<m<<"月"<<endl;
cout<<"------------------------------"<<endl;
cout<<" 一 二 三 四 五 六 日"<<endl;
for(j=1;j<t;j++) //输出空格,直到当前星期数
cout<<" ";
for(j=1;j<=mon_day[n][m-1];j++)
{
printf("%4d",j); //控制格式
t++;
if(t==8) //到星期8换行,转换为星期1
{
cout<<endl; //控制输出的整齐
t = 1;
}
}
if(t!=1)
cout<<endl;
cout<<"------------------------------"<<endl;
cout<<endl;
}
int main()
{
int year,month;
while(1)
{
cout<<"请输入年份和月份 :";
cin>>year>>month; //读取用户输入的年份和月份
ShowCalenDar(year,month-1); //输出当前月份前1月的日历
ShowCalenDar(year,month); //输出当前月份的日历
ShowCalenDar(year,month+1); //输出当前月份后一天的日历
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式