酷站(www.ku0.com)-致力于为互联网从业者提供专业的网络资源资讯

热门关键词:  企业  as  baidu  c4rp3nt3r  美女

C语言打印某一年中某月的日历的方法

来源:互联网 作者:秩名 人气: 发布时间:2021-12-06
本篇文章主要介绍了C语言打印某一年中某月的日历的方法,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

大致思路:

  • ① 判断输入的年份是否闰年;
  • ② 计算输入月份的第一天是该年的第几天;
  • ③ 计算输入月份的第一天是星期几;
  • ④ 输出。

结合代码使用:

#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
    int arr1[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    int i = 0;
    int year = 0;
    int month = 0;
    int days = 0;
    int week = 0;//判断第一天周几
    scanf("%d%d", &year, &month);
    if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))//判断是否是闰年
    {
    arr1[2] = 29;//闰年2月29天
    }
    for (i = 0; i < month; i++)
    {
        days += arr1[i];//计算该月第一天是该年多少天
    }
    days++;//该月第一天,还要把这一天算上
    //套用计算星期几的公式
    week = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + days) % 7;
    printf(" 日 一 二 三 四 五 六 ");//表头
    int arr2[50] = {0};
    for (i = 0; i < week; i++)
    {
        printf("   ");//整型数组不能存放空格,因此直接把空格打印出来
    }
    arr2[week] = 1;
    for (i = week + 1; i <= arr1[month]+week-1; i++)//把输入月份的每一天放到数组中
    {
        arr2[i] = arr2[i-1]+1;
    }
    int count = 0;//记录已打印几个数据,打印7个数据就换行
    i = week;
    int flag = 1;//用于记录是否为第一行,第一行不能用count计数方式换行
    while (i<=arr1[month]+week-1)//把该月所有天数都打印出来
    {
        if (flag <= 7-week)
        {
            printf("%3d", arr2[i]);
            if (flag == 7 - week)//打印够数据后换行
                printf(" ");
            flag++;
        }
        else
        {
            printf("%3d", arr2[i]);
            count++;
            if (count == 7)
            {
                count = 0;
                printf(" ");
            }
        }
        i++;
    }
    return 0;
}

 

实现结果:

 

版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://blog.csdn.net/m0_59793804/article/details/121736174

相关文章

  • c++11中std::move函数的使用

    c++11中std::move函数的使用

    C++11在运行期有所增强,通过增加核心的右值引用机制来改善临时对象导致的效率低下的问题。C++临时对象引入了多余的构造、析构及其内部资源的申请释放函数调用,导......
    01-26
  • 让我们一起来对C语言指针再分析

    让我们一起来对C语言指针再分析

    初次认识指针,我们大概了解到一下知识。 1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2. 指针的大小是固定的 4/8 个字节( 32 位平台 /64 位平台)......
    01-26
  • C语言的线性表之顺序表你了解吗?

    C语言的线性表之顺序表你了解吗?

    线性表 顺序表 (C语言) 概念 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表中的数据元素,这种表示也称做线性表的顺序储存结构或顺序映像。通常......
    01-25
  • C语言实现一个闪烁的圣诞树的方法

    C语言实现一个闪烁的圣诞树的方法

    圣诞节来啦!看到很多小伙伴用各种语言画出了圣诞树,于是就想用 C 语言来画一颗圣诞树,有点粗糙,下面先来看一下效果图吧! 图1 圣诞树 下面来看下源码,如下所......
    12-27
  • Unity3D实现甜品消消乐游戏的教程

    Unity3D实现甜品消消乐游戏的教程

    前言 解释: 之前用的ScreenToGif录屏,因为上传的.gif最大不超过5MB,所以做了不少删帧和色彩弱化等处理,这才导致色彩看上去不是很舒服,不要盯着它看太久,不然会有......
    12-24
  • C语言的常量和字符串的详解介绍

    C语言的常量和字符串的详解介绍

    常量种类 C语言中,我们常使用的常量有以下几种: 字面常量 const常变量 #define定义的标识符常量 枚举常量 代码如下: #includestdio.h enum { //使用enum来建立枚举常量 papa,/......
    12-13
  • C语言把浮点数转换为字符串的方法

    C语言把浮点数转换为字符串的方法

    把浮点数转换为字符串 1、把float/double格式化输出到字符串 标准的C语言提供了atof函数把字符串转double,但是没有提供把float/double转换为字符串的库函数,而是采用sprint......
    12-10
  • C语言系统调用约定介绍

    C语言系统调用约定介绍

    常见的函数调用约定 cdecl , stdcall , fastcall , thiscall , naked call 简单介绍 HANDLE WINAPI GetStdHandle( _In_ DWORD nStdHandle ); //WINAPI不是返回值的类型,HANDLE才是 像这种函数的返回值我......
    12-07
  • C语言打印某一年中某月的日历的方法

    C语言打印某一年中某月的日历的方法

    大致思路: ① 判断输入的年份是否闰年; ② 计算输入月份的第一天是该年的第几天; ③ 计算输入月份的第一天是星期几; ④ 输出。 结合代码使用: #define _CRT_SECURE......
    12-06
  • C语言实现可排序通讯录的代码

    C语言实现可排序通讯录的代码

    1.目的 写一个实用型通讯录,它有如下功能: 显示目录 void ShowMenu() { printf(#######################\n); printf(#1.Add 2.Del 3.Search #\n); printf(#4.Mod 5.Show 6.Clear #\n); printf(#7.Sort 0.Exit #\......
    11-29