| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1308 人关注过本帖
标题:关于用c写日历
只看楼主 加入收藏
大魔王MONKEY
Rank: 1
来 自:信阳
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-6-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
关于用c写日历
向大佬致敬!!渣渣灰这厢有礼了!  大作业有点小问题想请教一下大家!
关于用c写日历📆  下面代码只能实现年历 所以哪里加点什么能实现日历呢😉
#include <stdio.h>

main(){
/*判断输入年份是否是闰年的函数*/
int isLeapYear(int);
/*判断每月天数的函数*/
int monthDays(int,int);
/*判断某个日期是星期几的函数*/
int getWeekDay(int,int,int);
/*输出某年某月月历的函数*/
void outMonthDays(int,int);

  int Year,Month;
  printf("请输入年份:");
  scanf("%d",&Year);
  printf("%d年日历为:\n",Year);
  printf("----------------------------------------------\n");
  for(Month=1;Month<=12;Month++){
    outMonthDays(Year,Month);
  }
  return 0;
}
/*判断闰年函数的具体实现*/
int isLeapYear(int Year){
  if(Year%4==0 && Year%100!=0 || Year%400==0)
    return 1;
  return 0;
}
/*判断每月天数的具体实现*/
int monthDays(int Year,int Month){
 if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12){
    return 31;
 }else if(Month == 4 || Month == 6 || Month == 9 || Month == 11){
    return 30;
 }else{
    if(isLeapYear(Year))
        return 29;
    return 28;
 }
}
/*判断某年某月某号是周几的具体实现*/
int getWeekDay(int Year,int Month,int Day){
  int i,temp,weekday,Days=0;
  for(i=1;i<=Month-1;i++){
    Days+=monthDays(Year,i);
  }
  Days = Days + Day;
  temp = (Year-1)+(Year-1)/4-(Year-1)/100+(Year-1)/400+Days;
  weekday = temp % 7;
  return weekday;
}
/*打印某年某月日历的具体实现*/
void outMonthDays(int Year,int Month){
  int i,j,weekday;
  printf("%d年%d月日历\n",Year,Month);
  printf("              六\n");
  weekday = getWeekDay(Year,Month,1);
    for(i=0;i<weekday;i++){
    printf("    ");
  }
  for(j=1;j<=monthDays(Year,Month);j++){
    printf("%4d",j);
    if((j+weekday)%7==0){
        printf("\n");
    }
  }
  printf("\n");
printf("--------------------------------------------------------\n");
}
搜索更多相关主题的帖子: printf || 日历 int Year 
2020-06-21 08:06
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:10 
年历和日历有啥区别?稍微百度了一下也没找到答案,所以真不知道程序到底有什么用,原谅……

linux下日历时间转字符串的彩控输出(输入年月日):
程序代码:
#include <stdio.h>
#include <time.h>

void main(void)
{
    int year, month, day;
    unsigned long tp;

    scanf("%d%d%d", &year, &month, &day);
    if (0 >= (month -= 2)) {
        month += 12;
        year -= 1;
    }
    tp = ((((unsigned long)(year/4-year/100+year/400+367*month/12+day)+year*365-719499)*24)*60)*60;
    printf("\033[05;32m%s\033[0m", ctime(&tp));
}

梦想拥有一台龙芯3A-4000
2020-06-21 19:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
以下是引用ditg在2020-6-21 19:03:02的发言:

年历和日历有啥区别?稍微百度了一下也没找到答案,所以真不知道程序到底有什么用,原谅……


我猜,楼主的代码全是抄袭的,而他一个字都看不懂。
楼主的代码中,main函数接收一个year,然后输出这year的12个月份的日历。
而楼主想要的是:main函数接收year和month,然后输出这year的month的日历。

程序代码:
#include <stdio.h>
#include <stdbool.h>

bool isLeapYear( unsigned year )
{
    return year%4==0 && year%100!=0 || year%400==0;
}

unsigned monthDays( unsigned year, unsigned month )
{
    static const unsigned buf[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    if( month<1 || month>12 )
        return 0;
    if( isLeapYear(year) && month==2 )
        return 29;
    return buf[month-1];
}

unsigned getWeekDay( unsigned year, unsigned month, unsigned day )
{
    unsigned days = day;
    for( unsigned i=1; i<month; ++i )
        days += monthDays(year,i);
    unsigned temp = (year-1)+(year-1)/4-(year-1)/100+(year-1)/400+days;
    return temp%7;
}

void outMonthDays( unsigned year, unsigned month )
{
    printf( "%u年%u月日历\n", year, month );
    printf("  日  一  二  三  四  五  六\n");
    unsigned weekday = getWeekDay( year, month, 1 );
    for( unsigned i=0; i<weekday; ++i )
        printf("    ");
    for( unsigned j=1; j<=monthDays(year,month); ++j )
    {
        printf( "%4u", j );
        if( (j+weekday)%7 == 0 )
            printf("\n");
    }
    printf("\n--------------------------------------------------------\n");
}

int main( void )
{
    unsigned year, month;
    printf( "请输入年份和月份(例如 2020 6):" );
    scanf( "%u%u", &year, &month );
    outMonthDays( year, month );
}
2020-06-22 08:58
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
回复 3楼 rjsp
等着吧,大魔王今晚就给您托梦……马上看一眼自己身后,那个长头发穿白衣服、飘来飘去那个女的是谁?!

梦想拥有一台龙芯3A-4000
2020-06-22 11:34
快速回复:关于用c写日历
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017143 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved