打印日历,用户输入年分和月份两个变量,系统计算该月份的1号是星期几,并计算该月有多少天。最后打印出该日历。已知:1900年1月1日是星期一

C语言

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>mon[2][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 0, 31, 29, 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;elsereturn 0;
}
//年份的第一天
int first_day_of_year(int year)
{int base_year = 1900;  //定义一个基准年1900年int first_day = 1;     //基准天:1999年1月1号是星期1int i = 1900;int total = 0;          //天数总和for (i = base_year; i < year; i++){total = total + 365 + isleap(i);  //isleap函数用于判断年份是否是闰年,如果是返回1,不是返回0}return (total+first_day)%7;
}
//月份第一天
int first_day_of_month(int year, int month, int first_year)
{int total = 0;  //天数和int i = 0;for(i = 1; i < month; i++){total = total + mon[isleap(year)][i];}return (total + first_year) % 7;
}
//展示日历
void show(int year,int  month, int first_month)
{int i = 0;printf("一\t二\t三\t四\t五\t六\t日\t\n");for (i = 0; i < first_month-1; i++){printf("\t");     //月份第一天是从first_month开始的,所以首先打印first_month-1个空格}for (i = 1; i <= mon[isleap(year)][month]; i++){printf("%-5d\t", i);if ((first_month-1+i) % 7 ==0) //如果(数字+空格数)%7==0,则换行printf("\n");}printf("\n");
}
int main()
{int year, month;printf("年/月:");  //输入你想打印的年份scanf("%d/%d", &year, &month);int first_year = first_day_of_year(year);//年份第一天int first_month = first_day_of_month(year, month, first_year);//月份第一天show(year, month, first_month);system("pause");return 0;
}

C语言/打印日历,用户输入年分和月份两个变量,系统计算该月份的1号是星期几,并计算该月有多少天。最后打印出该日历。已知:1900年1月1日是星期一相关推荐

  1. 用户输入行数和列数,之后在控制台打印出用户输入行数和列数的星星

    要求:用户输入行数和列数,之后在控制台打印出用户输入行数和列数的星星 实现代码: <!DOCTYPE html> <html lang="en"><h ...

  2. C语言-如何将用户输入的金额数字转换成中文大写?

    实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...

  3. 【C】已知1980年1月1日为星期二,求1980年1月1日之后任意一个日期是星期几。

    #include <stdio.h> // 判断是否是闰年 int is_leap_year(int year) {return (year % 4 == 0 && yea ...

  4. 19001月1日是星期一c语言,已知道1900年1月1日是星期一,请输入一具体的日期,如何判断此日期是星期几?请利用C语言来进行编程...

    这个是1984年1月1日是星期日的,你先看看,我再帮你改,最好自己能看懂 #include void main() { int year,month,day; int tempmonth,yearda ...

  5. c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...

    满意答案 q15173278975 推荐于 2017.11.26 采纳率:58%    等级:13 已帮助:5665人 用字符串处理很简单 #include #include void main () ...

  6. C语言数组 :用户输入一个数, 我要用这个数当数组的长度。怎么办呢

    C语言不支持动态数组,也就是说,数组在定义时就要指定长度,把输入数作为它的长度那就说明定义时没有指定长度,这是不合法的. 使用 指针+动态分配malloc int* p;int n;scanf(&qu ...

  7. c语言编程题输入两个直角边,C语言编程 直角三角形已知两边求第三边

    C语言编程题 求大神解答 好久没写C了,不知道对不对:intsum=0;intindex=0;for(;indexsum+=a[2][index];}returnsum; C语言编程题,求分段函数 刚 ...

  8. 输入年份和月份,打印出这个月有多少天

    用户输入年份和月份,打印出这个月有多少天(★) 其中1,3,5,7,8,10,12月有31天 4,6,9,11月有30天 2月比较特殊,如果是平年就是28天,闰年就是29天(闰年判断条件 : 能被40 ...

  9. 用Go语言 判断用户输入的年份是不是闰年 (Golang经典编程案例)

    判断一个年份是否是闰年,需要满足下面条件之一: 年份能被4整除,但不能被100整除: 能被400整除 下面用Go语言实现 判断用户输入的年份是不是闰年,代码如下: package mainimport ...

最新文章

  1. Centos Git1.7.1升级到Git2.2.1
  2. Weex快速上手教程(Weex Tutorial)
  3. python随机抽取样本1500个_(python)随机抽样
  4. 利用angular结合translate为项目实现国际化
  5. [Oracle PL/SQL]当数据表设计成具有父ID的时候,当需要选择所有与父ID同根生的所有节点的时候,使用的SQL语句...
  6. 微信小程序开发(二)
  7. Oracle触发器(trigger):一般用法
  8. C#线程使用(二)全面总结
  9. 【今日CV 视觉论文速览】14 Nov 2018
  10. Redis学习笔记三:Redis的数据类型
  11. Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
  12. 图像上采样和图像下采样
  13. MT4指标安装方法,以MACD红绿柱黄白线双线macd为例
  14. python源代码怎么用_Python写完代码怎么用
  15. 「网络流 24 题」火星探险问题。
  16. 全国大学生GIS应用技能大赛(开发试题参考)
  17. k8s之四层负载均衡Service:概念、原理解读
  18. yapi 接口管理平台手册
  19. Steam账号注册--流程
  20. 笔记本ghostwin10系统后只有C盘了别的盘的数据怎样找到

热门文章

  1. Stay hungry stay young
  2. 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)
  3. android平板哪个好用吗,明明知道iPad更实用,却坚持买安卓平板,是一种什么心态?...
  4. 【iOS】跳转App权限设置页面
  5. codecombat极客战记森林21-40通关代码
  6. 盘点男士们也喜爱的八大女性APP
  7. vue2的生命周期函数
  8. 安装 catboost 的正确方式
  9. 今天明经通道论坛又崩溃了
  10. JavaScript -- 闭包与作用域链