飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3042|回复: 1

[C/C++] 第11节课的作业 万年历 vc++6.0编译的

[复制链接]
  • TA的每日心情

    2017-3-23 16:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2012-3-30 21:27:54 | 显示全部楼层 |阅读模式
    #include <stdio.h>
    int isN(int a)
    {
    if(a%4==0&&a%100!=0||a%400==0)
      return 1;
    else
      return 0;
    }
    void date(int a,int b,int z)
    {
    int i=1,j;
    for(j=1;j<=b;j++)
    {
      printf("      ");
    }
    for(;i<=a;i++)
    {
      if(i==z)
      {
       printf("   [%d]",i);
      }
      else
      {
       printf(" %5d",i);
      }
      if((i+b)%7==0)
       printf("\n");
    }
    printf("\n");
    }
    int howdays(int x,int y,int z)
    {
    int m=0,i;
    if(x>=1979)
    {
      for(i=1979;i<x;i++)
      {
       if(isN(i))
        m+=366;
       else
        m+=365;
      }
    }
      switch(y)
      {
      case 1:m+=0;break;
      case 2:m+=31;break;
      case 3:m+=59;break;
      case 4:m+=90;break;
      case 5:m+=120;break;
      case 6:m+=151;break;
      case 7:m+=181;break;
      case 8:m+=212;break;
      case 9:m+=243;break;
      case 10:m+=273;break;
      case 11:m+=304;break;
      case 12:m+=334;break;
      default:printf("enter data error!\n");
      }
      if(isN(x)&&y>2)
       return m+(z-1)+1;
      else
       return m+(z-1);
    }
    int month(int a,int x)
    {
    if(a==1)
      return 31;
    if(a==2)
    {
      if(isN(x))
       return 29;
      else
       return 28;
    }
    if(a==3)
      return 31;
    if(a==4)
      return 30;
    if(a==5)
      return 31;
    if(a==6)
      return 30;
    if(a==7)
      return 31;
    if(a==8)
      return 31;
    if(a==9)
      return 30;
    if(a==10)
      return 31;
    if(a==11)
      return 30;
    if(a==12)
      return 31;
    }
    int main()
    {
    int i,b,a,x,y,z;
    char c=0;
    printf("输入日期 如2012-1-1:");
    scanf("%d-%d-%d",&x,&y,&z);
    while(c!='q')
    {
    system("cls");
    printf("%d-%d-%d:\n",x,y,z);
    if(x>=1979&&y>0&&y<=12&&z>0&&z<=month(y,x))
    {
    printf("    Mon  Tues  Wed   Thurs  Fri   Sat   Sun\n");
    i=howdays(x,y,1);
    b=i%7;
    a=month(y,x);
    date(a,b,z);
    printf("q键退出...\n\n方向键上年份+1  方向键下年份-1  方向键右月份+1  方向键左月份-1\n");
    printf("a键天数-1  s键天数+1");
    c=getch();
    if(c==0x48)
    {
      x++;z=1;
    }
    if(c==0x50&&x>1979)
    {
      x--;z=1;
    }
    if(c==0x4b&&y>1)
    {
      y--;
      z=1;
    }
    if(c==0x4d&&y<12)
    {
      y++;
      z=1;
    }
    if(c=='a'&&z>1)
      z--;
    if(c=='s'&&z<month(y,x))
      z++;
    }
    else
    {
      printf("输入日期有误,请重新输入:");
      scanf("%d-%d-%d",&x,&y,&z);
    }
    }
    return 0;
    }

    万年历.rar

    36.99 KB, 下载次数: 0, 下载积分: 飘云币 -2 枚

    PYG19周年生日快乐!
  • TA的每日心情

    2017-3-23 16:53
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2012-3-30 21:34:57 | 显示全部楼层
    刚学C   看了Nisy老师的教程后,也是按照视频中所提的思路写了个,望各位老师指点一二。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表