首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >打印当月日历

打印当月日历
EN

Stack Overflow用户
提问于 2015-09-01 10:08:22
回答 1查看 476关注 0票数 2

我现在正在做一个超过3个月的程序,在今天的某个时候,我决定程序在某个时候应该打印当前给定的日历。

日历应该是这样的:

苏茂图我们公司Sa 1 2 3 4 5 6 7 8 10 11 12 13 14 16 16 18 19 20 21 22 23 24 25 26 27 28 29 30

因此,我创建了以下函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void printWeek(int firstDay,int lastDay){
int i;

printf("Su  Mo  Tu  We  Th  Fr  Sa\n");
for(i = 1; i <= lastDay; i++) {
    printf("%2d  ", i);
    if((i + firstDay - 1)%7 ==0){
        printf("\n");
    }
  }
}

并打印如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Su  Mo  Tu  We  Th  Fr  Sa
 1   2   3   4   5   6   7
 8   9  10  11  12  13  14
15  16  17  18  19  20  21
22  23  24  25  26  27  28
29  30

我们发言的月份是9月(2015年),应如下所示:

苏茂图我们公司Sa 1 2 3 4 5 6 7 8 10 11 12 13 14 16 16 18 19 20 21 22 23 24 25 26 27 28 29 30

因为2015年9月从周二而不是周日开始,我创建了另一个返回天数的函数(Sunday == 0Monday == 1.Saturday == 6):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int dayWeek(int d, int m, int y){
int month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day[] = {0, 1, 2, 3, 4, 5, 6};
int i;

    if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)){
        month[1] = 29;
    }

    if (y < 1900 || m < 1 || m > 12 || d < 1 || d > month[m - 1]) {
        printf("This is an invalid date.\n");
        exit(1);
    }



    for (i = 1900; i < y; i++){
        if (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0)){
            d += 366;
        }else{
            d += 365;
        }
    }

    for (i = 0; i < m - 1; i++){
        d += month[i];
    }

    return day[d % 7];
}

在某个时候,程序会打印给定数据的第一天和最后一天的日历。

问题是:如何获得以下输出:

苏茂图我们公司Sa 1 2 3 4 5 6 7 8 10 11 12 13 14 16 16 18 19 20 21 22 23 24 25 26 27 28 29 30

我已经知道函数dayWeek()返回2,即星期二(从2015年9月开始的第一周),但我不知道如何更改函数printWeek();将9月1日打印为星期二而不是星期日。希望你能听懂我糟糕的英语。

下面是我现在的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#include<stdlib.h>

int dayWeek(int d, int m, int y){
    int month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int day[] = {0, 1, 2, 3, 4, 5, 6};
    int i;

    if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)){
        month[1] = 29;
    }

    if (y < 1900 || m < 1 || m > 12 || d < 1 || d > month[m - 1]) {
        printf("This is an invalid date.\n");
        exit(1);
    }



    for (i = 1900; i < y; i++){
        if (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0)){
            d += 366;
        }else{
            d += 365;
        }
    }

    for (i = 0; i < m - 1; i++){
        d += month[i];
    }

    return day[d % 7];
}

void printWeek(int firstDay,int lastDay){
    int i;

    printf("Su  Mo  Tu  We  Th  Fr  Sa\n");
    for(i = 1; i <= lastDay; i++) {
        printf("%2d  ", i);
        if((i + firstDay - 1)%7 ==0){
            printf("\n");
        }
    }
}

int main(void){
    int day = 1;
    int month = 9;
    int year = 2015;

    int weekDay = dayWeek(day,month,year);
    printf("The day of the Week is\t%d\n\n",weekDay);

    printWeek(day,30);
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2015-09-01 11:21:01

因此,这是一个常见的问题,数据不完全对齐。

您需要一个“一周中的一天”的柜台,以及一个月份中的日期单独的柜台。

我已将printWeek重命名为printMonth。发送一周的第一天(firstWeekDay) (0 - 6)。然后,打印标题后,为初始日期位置创建空格。

最后,周结束基于ifirstWeekDay,因此何时添加新行将被修改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void printMonth(int firstDay,int lastDay, int firstWeekDay ){
    int i;
    printf("Su  Mo  Tu  We  Th  Fr  Sa\n");
    for(i = 0; i < firstWeekDay ; i ++ ) {
        printf("    ");
    }
    for(i = 1; i <= lastDay; i++) {
        printf("%2d  ", i);
        if((i + firstDay + firstWeekDay - 1)%7 ==0){
            printf("\n");
        }
    }
}

int main(void){
    int day = 1;
    int month = 9;
    int year = 2015;

    int weekDay = dayWeek(day,month,year);
    printf("The day of the Week is\t%d\n\n",weekDay);

    printMonth(day,30, weekDay);
    return 0;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32338237

复制
相关文章
WordPress 如何获取分类/标签的ID
鼠标移动到编辑处,看到浏览器底部出现链接,其中的tag_ID=5中这个5就是分类的ID,标签同理。
可定
2020/04/20
5.8K0
WordPress 如何获取分类/标签的ID
WordPress通过分类ID获取分类名称与链接
在Wordpress主题开发的过程中,尤其是CMS主题分类的布局,通过后台选项选择分类,前台通过调用分类的ID来获取分类的名称和链接,这时我们将使用到get_cat_name()和get_category_link()两个函数,反过来也可以通过get_cat_ID()函数来获取分类ID。
.T.
2022/02/22
2.2K0
WordPress || WordPress 获取当前分类 ID 的几种方法
下面介绍的几种方法目的都是一样的,但是使用的环境和状况均不同,请大家仔细分辨以及寻找适合自己的方法来进行使用。
w候人兮猗
2020/07/01
2.4K0
tp6中无限极分类里面的获取多级分类数据
就是很多很多的数据,按照无限极分类结构排序。每一个数组的所有数据都是顶级分类及其其下数据
贵哥的编程之路
2022/06/05
9840
tp6中无限极分类里面的获取多级分类数据
MySQL获取每个分类下面的前三条数据
现在项目遇到个问题,我相册图片里面有很多分类,我想取出每个分类下面的前三条数据,应该怎么做呢? 数据结构如下:
用户7657330
2020/08/14
2.5K0
getIdentifier获取资源id
首先我想到的是反射,但是经过实验发现提示报错no emoty constructor。
提莫队长
2019/02/21
4K0
网站404页面的设计
每一个网站都必须有404页面,404页面指的是显示网站错误链接的页面,可能是该访问的页面不存在,也可能是页面已经被删除。
岳泽以
2022/10/26
1.4K0
网站404页面的设计
mybatis获取update的id
平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。
似水的流年
2018/01/25
9.3K0
mybatis获取update的id
平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。 其实可以通过 mybatis 的 selectKey 标签来解决这个问题。  selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。如: <selectKey resultType="int" order="AFTER" keyProperty="id"> SELECT
似水的流年
2018/03/28
3.8K0
sqlite 获取最后插入id
SQLite数据库中的表均有一个特殊的rowid字段,它是一个不重复的64位有符号整数,默认起始值为1。rowid别名为oid或_rowid_,但在创建表的SQL声明语句中只能使用rowid作为关键字。如果在创建表的时候设置了类型为integer的具有自动增长性的主键,那么这时的主键相当于是rowid的别名。
随心助手
2020/06/09
6.2K0
mybatis获取update的id
平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。
似水的流年
2019/12/06
3.4K0
Typecho自定义首页/单页模板以及不同分类不同模板
虽然Typecho程序看起来和WordPress一样是个人博客程序,但是我们都知道后者的强大,有很多内容网站、企业网站,甚至B2C商城网站都有使用WordPress程序。但是我们也知道WordPress的弱点就是后续占用资源太大,功能插件是丰富,但是用多之后很占用资源。对于公司一些小的企业网站项目,后面准备用Typecho程序或者ZBLOG程序制作,比较轻便。
老蒋
2021/12/24
3.2K0
Typecho自定义首页/单页模板以及不同分类不同模板
pgsql 通过 序列 批量获取ID
CREATE OR REPLACE FUNCTION getNextIds (VARCHAR,INTEGER) RETURNS VARCHAR AS $body$ DECLARE str VARCHAR ; DECLARE nextid VARCHAR ; BEGIN str = ''; FOR i in 1..$2 loop nextid = (SELECT NEXTVAL($1)); str = str || nextid || ';' ; EN
qubianzhong
2018/08/08
3.9K0
Python 进程,获取进程id( o
import os pid=os.fork() #fork反复拷贝 if pid==0: print("A",os.getpid(),os.getppid()) else: print("B",os.getpid(),os.getppid()) # os.getpid()获取当前进程id os.getppid()获取父进程id
py3study
2020/01/10
4.5K0
职教云教师ID获取教程
首先呢,因为这个教师ID在多个地方都有出现,但是每个老师的活动情况都不一样,所以也就没有写到软件里了(好吧,我就是懒)。然后修改作业时间呀,作业分数呀都需要用到这个ID,所以这里写一下获取教程。
SingYi
2022/07/14
3.8K0
职教云教师ID获取教程
Android 动态获取资源的ID
但是对于以上做法, 官方并不推荐,并且 getIdentifier这个写library的时候, 如果里面需要引用主程的资源且R所在的包名未知时还是很有用的(如果在gradle里修改了packageName, R所在的包名是和packageName不一样的,没法反射),当然也是有解决的办法: 如果愿意,是可以根据业务拼接出 “package_name.R.drawable.class” 的。但是如果这样的话,视具体情况一定有更好的解法。
胖虎哥
2023/05/10
2.5K0
WordPress 技巧:找到最顶层父页面的 ID
如果你的页面结构有多层级,下面的代码可以找到某个页面最顶层的父页面 ID: <?php if ($post->post_parent) { $ancestors = get_post_ancesto
Denis
2023/04/13
4550
go语言获取协程id
package main import (    "bytes"    "fmt"    "runtime"    "strconv"    "time" ) func main() {    go func() {       gid := GetGid()       fmt.Printf("child goruntine1 gid:%v \n",gid)    }()    go func() {       gid := GetGid()       fmt.Printf("child goru
仙士可
2022/03/28
3K0
分类页权重高,产品页权重低不收录咋办?
树形结构对大部分网站来说是最优化的,若是域名权重比较低,就算网站扁平,最终产品页还是权重过低,无法达到搜索引擎蜘蛛抓取的最低标准,这个时候可以考虑彻底改变树形结构了。
茹莱神兽
2022/08/24
9040
分类页权重高,产品页权重低不收录咋办?
php 获取连续id,WordPress文章ID连续及ID重新排列的方法
解决Wordpress 文章 ID连续问题,同时让Wordpress 文章 ID重新排列。在用以下方法前,先备份好网站文件和数据库文件,以免操作不当造成损失。哈哈哈
超级小可爱
2023/02/20
9.3K0

相似问题

获取当前活动页面的分类ID

131

获取Wordpress分类页面的根术语ID

20

WordPress -获取包含页面的短代码页ID

13

创建分类后获取分类ID - wordpress

11

如何显示Wordpress分类页面的自定义分类?

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文