zoukankan      html  css  js  c++  java
  • 算法提高 5-3日历

    问题描述
      已知2007年1月1日为星期一。设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。为完成此函数,设计必要的辅助函数也是必要的。
    样例输入
    一个满足题目要求的输入范例。
    例:

    2050 3
    样例输出
    与上面的样例输入对应的输出。
    例:


    数据规模和约定
      输入数据中每一个数的范围。
      例:年 2007-3000,月:1-12。
    #include <stdio.h>
    
    int daynum[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //二月暂以平年记 
    
    int IsLeap(int year){
        if((year%4 == 0 && year%100 != 0) || year%400 == 0)
            return 1;
        return 0;
    }
    
    int WeekDay(int year,int month){
        int daycount = 1; //某月第一天 
        int i;
        for(i=2007;i<year;i++){
            daycount += (IsLeap(i) + 365); // great;
        }
        for(i=1;i<month;i++){
            daycount += daynum[i];
        }
        if(month > 2)
            daycount += IsLeap(year);
        return daycount%7;
    }
    
    void Print_Calendar(int year,int month,int day){
        int i,count;
        printf("Calendar %d - %02d
    ",year,month);//%02d
        printf("---------------------
    ");
        printf("Su Mo Tu We Th Fr Sa
    ");
        printf("---------------------
    ");
        for(i=0;i<day;i++)//输出第一行数字前的空格 
            printf("   "); //三个空格
        for(i=1;i< (7-day);i++) 
            printf("%2d ",i);
        printf("%2d
    ",7-day);//最后一个数字不带空格 
        if(month == 2 && IsLeap(year))
            daynum[month] += 1;
        count = 0;
        for(i=7-day+1;i<=daynum[month];i++){
            count ++;
            if(count % 7 == 0)
                printf("%2d
    ",i);
            else{
                if(count == daynum[month]+day-7) //最后一行特别处理 
                    printf("%2d
    ");
                else{
                    printf("%2d ",i);
                }
            }
        }
        printf("---------------------
    ");
    }
    
    int main(){
        int year,month,day;
        scanf("%d%d",&year,&month);
        day = WeekDay(year,month);
        Print_Calendar(year,month,day);
        return 0; 
    }
  • 相关阅读:
    scala学习手记7
    scala学习手记6
    scala学习手记5
    scala学习手记4
    scala学习手记3
    scala学习手记2
    Scala学习手记1
    Java实现的一个小说采集程序
    Java的值传递和引用传递
    java 使用反射
  • 原文地址:https://www.cnblogs.com/emptyCoder/p/6231249.html
Copyright © 2011-2022 走看看