• 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++;
    }
    }

  • 相关阅读:
    matlab2016b
    【ccf- csp201509-4】高速公路
    【ccf- csp201412-2】z字形扫描
    【ccf-csp201512-5】矩阵
    【动态规划】矩阵连乘分析
    JAVA环境搭建
    【离散数学2】代数系统趣题
    给文本编辑框绑定变量
    清空文本框SetDlgItemText(IDC_TXTXT,NULL);
    有关SetTimer函数的用法
  • 原文地址:https://www.cnblogs.com/wyj1212/p/9006564.html
Copyright © 2020-2023  润新知