zoukankan      html  css  js  c++  java
  • 26.利用while循环打出月历表

    /*

    */
    #include "stdio.h"
    void main()
    {
    int y,m,week,sumdays=0,maxdays;
    int n;
    int i;

    n=0;
    printf("请输入年份数:");
    yy:n=scanf("%d",&y);
    if(n!=1||y<1900)
    {
    printf("年份输入有误,请重输:");
    fflush(stdin);
    goto yy;
    }

    n=0;
    printf("请输入月份数:");
    mm:n=scanf("%d",&m);
    if(n!=1||m<1||m>12)
    {
    printf("月份输入有误,请重输:");
    fflush(stdin);
    goto mm;
    }

    //下面这个循环是解决了完整年的总天数
    i=1900;
    while(i<=y-1)
    {
    if(i%4==0&&i%100!=0||i%400==0)
    sumdays+=366;
    else
    sumdays+=365;
    i++;
    }
    printf("%d",sumdays);

    //下面这个循环是解决了完整月的总天数
    i=1;
    while(i<=m-1)
    {
    switch(i)
    {
    case 1:case 3:case 5:case 7:case 8:case 10: case 12:
    maxdays=31;break;
    case 4:case 6:case 9:case 11:
    maxdays=30;break;
    case 2:
    if(y%4==0&&y%100!=0||y%400==0)
    maxdays=29;
    else
    maxdays=28;
    break;
    }
    sumdays+=maxdays;
    i++;
    }

    //下一句把我们输入的那一年那个月的1号加入到总天数
    sumdays+=1;

    //求出输入的那一年那个月的1号是星期几
    week=sumdays%7;

    printf(" %d年%d的月历表如下: ",y,m);
    printf("日 一 二 三 四 五 六 ");

    //输出与星期数相同的空格数
    i=1;
    while(i<=week)
    {
    printf(" ");
    i++;
    }

    //先计算出你输入的那个月的最大天数
    switch(m)
    {
    case 1:case 3:case 5:case 7:case 8:case 10: case 12:
    maxdays=31;break;
    case 4:case 6:case 9:case 11:
    maxdays=30;break;
    case 2:
    if(y%4==0&&y%100!=0||y%400==0)
    maxdays=29;
    else
    maxdays=28;
    break;
    }

    //打印出1号到当月的最大天数
    i=1;
    while(i<=maxdays)
    {
    if(i<10)
    printf("0%d ",i);
    else
    printf("%d ",i);
    if((i+week)%7==0)
    printf(" ");
    i++;
    }
    }

  • 相关阅读:
    html+css 笔记
    JS随手笔记
    JQ几个淡入淡效果
    AngularJS编译阶段应分为两个阶段
    JavaScript 原型链的理解
    js继承的6种方式
    什么是跨域?跨域解决方法
    computed (计算属性) 和 methods (方法) 的区别
    谈谈vue生命周期
    基本类型有哪几种?null 是对象吗?基本数据类型和复杂数据类型存储有什么区别?
  • 原文地址:https://www.cnblogs.com/wyj1212/p/9006564.html
Copyright © 2011-2022 走看看