问答1 问答5 问答50 问答500 问答1000

c 语言 输出一个日历表

提问网友 发布时间:2022-08-28 07:19
声明声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2023-06-26 17:04
1、功能要求 :
1)输入任一年将显示出该年的所有月份日期,对应的星期
2)注意闰年情况
其显示格式要求如下:
1)份:中文英文都可以,
2)下一行显示星期,从周日到周六,中英文都可以
3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐

2、例程:
#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int IsLeapYear(int); //声明头文件和函数
void main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; //每个月的天数,最后一个是闰年2月
printf("Please enter the year: ");
scanf("%d",&year); //输入年份
while(Year_Start < year) //计算从公元1年1月1日到你所查询年份前一年的天数,是为了以后确定这一年的第一天是星期几
{
if( IsLeapYear( Year_Start ) ) //确定一年的天数,闰年为366天,一般为365天
Per_Year_Days = 366;
else
Per_Year_Days = 365;
Year_days = Year_days + Per_Year_Days;
Year_Start++;
}
for( temp = 1; temp <=12; temp++ ) //循环输出每个月的日历
{
switch( temp )
{
case 1:
printf(" January(%d)\n",year); //如 January(2008)
break;
case 2:
printf(" February(%d)\n",year);
break;
case 3:
printf(" March(%d)\n",year);
break;
case 4:
printf(" April(%d)\n",year);
break;
case 5:
printf(" May(%d)\n",year);
break;
case 6:
printf(" June(%d)\n",year);
break;
case 7:
printf(" July(%d)\n",year);
break;
case 8:
printf(" August(%d)\n",year);
break;
case 9:
printf(" September(%d)\n",year);
break;
case 10:
printf(" October(%d)\n",year);
break;
case 11:
printf(" November(%d)\n",year);
break;
case 12:
printf(" December(%d)\n",year);
break;
}
i = Year_days % 7; //计算这个月第一天是星期几
printf("Mon Tue Wed Thu Fri Sat Sun\n");
if( i != 0 )
for( temp_i = 0; temp_i < i; temp_i++) //第一天不是星期一,在前面补空格,本来的空格少了,我加了两个
printf(" ");
day = 1;
if( IsLeapYear(year) && temp == 2) //闰年的2月
while( day <= month_day[12] )
{
if( day >1 )
if( Year_days % 7 == 0 ) //如果不是1号且昨天是星期天,输入回车, 换行
printf("\n");
if( day >= 10 ) //如果大于或等于10号则输出日期并加2个空格,小于10号输出日期并加3个空格
printf("%d ",day); //开始没想到这几行是干嘛用的,只要一个输出就好嘛,后来才想到是用来调整格式的

else //只是他并没有调整好,我做了下修改,现在很整齐了
printf("%d ",day);
Year_days++;
day++;
}
else //不是闰年2月的
while (day <= month_day[temp-1]) //输出,同上
{
if( day > 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >=10 ) //理由同上
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' ) //输入q退出程序
exit(0);
}
getch();
}
int IsLeapYear( int year ) //判断是否为闰年
{
if ((year %4 == 0) && (year % 100 != 0) || //年份能被4整除且不能被100整除 或者 能被400整除的为闰年
(year % 400 == 0) )
return 1;
else
return 0;
}

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

QQ音乐版本更新后,以前的歌曲全不见了!怎么找回啊? 凤凰传奇男主唱叫什么名字?是哪里人? 风凰传奇男的叫什么名字? 水男孩的演员 向云龙结婚了吗 俄区大菠萝中文语音包怎么下载 李籽洁这个名字好不好? 李圩洁这名字好吗含义又是什么 七年级难忘作文500字 灵活就业人员刚交一年医保,不想交了,到退休会不会有什么影响 求高手支援!红箭鱼家养及下崽问题!急!已经死了一只了! accident 和mistake 怎么区分?不要解释意思。 accident happen是动词还是名词? accident 和mistake 怎么区分?不要解释意思. 英语选择题:There were five people killed in the road accident. 帮帮忙Accident 用英语如何来解释这个词? 请用事物名称为我的狗狗命名 有移动宽带的可以保号吗 关于过年的好成语 玻尿酸去法令纹有害吗? 日历输出程序java控制流程 一年日历的输出 C语言输出日历问题,比较急,高悬赏 西游记三十九回概括 贺知章的回乡偶书少小就离家到了老大的时候才回来作者到底干什么去了... 《回乡偶书》大多数人都只学了一半,还有一半是什么? 怎样做出来的红糖糯米饭好吃? 自己当讲师如何发朋友圈 ipad7处理器相当于苹果几 2022年7月13日是搬家的最佳日子么 360安全桌面的桌面框设置后,重新启动就不见了。 渎职是什么 OPPO u707t 刷机的安装包 给我百度云或者网址 oppo u707t 手机怎么刷机 我手机是OPPOu707t,我root不小心把手机固件壁纸显示器和通知栏删了... oppo u707t 已经刷了coloros的 现在想刷miui 求方法(不能使用电脑) 手... 手机oppo u707t怎样刷机,求解。怎样下载固件包,手机自己刷机,不用电脑... 请帮我查询下公主购是什么样的平台? 高考考试统一发放文具用完后回收到哪里了~ 高考考场统一配备的文具,用完整理收纳到什么地方