今天,嗨壳技术分享网给大家整理一些打印年历到文件中c语言内容。
用c语言编程:打印年历
没想到这个程序会做这么长,要不得多要点分。
#include stdio.h
void main()
{
int i,j,k,year,week;
int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
char month[12][10]={“January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”};
printf(“Input year you want to print:”);
scanf(“%d”,year);
if((year%4==0year%100!=0)||(year%400==0)) day[1]++;
week=(35+year+year/4-year/100+year/400)%7; //计算当年的1月1日是周几的公式
for(i=0;i12;i++)
{
printf(“
%s
”,month[i]);
printf(“Sun Mon Tue Wed Thu Fri Sat
”);
for(k=0;kweek;k++) printf(” “);
for(j=1;j=day[i];j++)
{
printf(“%3d “,j);
if(++week=7)
{
printf(“
”);
week=week%7;
}
}
printf(“
”);
}
}
c语言编程:打印年历
#include stdio.h
void main()
{
int i,j,k,year,week;
int day[]=;
char month[12][10]=;
printf(“Input year you want to print:”);
scanf(“%d”,year);
if((year%4==0year%100!=0)||(year%400==0)) day[1]++; //判断是否闰年
week=(35+year+year/4-year/100+year/400)%7; //计算当年的1月1日是周几的公式
for(i=0;i12;i++)
{
printf(“
%s
”,month[i]); //输出月份的英文
printf(“Sun Mon Tue Wed Thu Fri Sat
”); //输出表头
for(k=0;kweek;k++) printf(” “); //每月一号对齐它的星期数
for(j=1;j=day[i];j++)
{
printf(“%3d “,j);
if(++week=7)
{
printf(“
”);
week=week%7;
}
}
printf(“
”);
}
}
输入一个年份,打印该年的年历,用C语言编写,老师布置的作业。
//—————————————–
//前端时间看到的一断代码看到不错就留下来了,不知道作者是谁,看到勿怪
#includestdio.h
long int f(int year,int month)
{//f(年,月)=年-月,如月3;否则,f(年,月)=年
if (month 3)
return year-1;
else
return year;
}
long int g(int month)
{//g( 月)=月+13,如月3;否则,g(月)=月+1
if(month3)
return month + 13;
else
return month + 1;
}
long int n(int year,int month,int day)
{
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
return(int) ((n(year,month,day)%7-621049L%7+7)%7);
}
int date[12][6][7];
int day_tbl[][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int main()
{
int sw,leap,i,j,k,wd,day;
int year;
char title[]=”SUN MON TUE WED THU FRI SAT”;
printf(“Please input the yewr whose calendar you want to know:”);
scanf(“%d%*c”,year);
sw=w(year,1,1);
leap=year%4==0year%100||year%400==0;//判断闰年
for(i=0;i12;i++)
for (j=0;j6;j++)
for(k=0;k7;k++)
date[i][j][k]=0;//将日期表置0
for(i=0;i12;i++)//一年12个月
for(wd=0,day=1;day=day_tbl[leap][i];day++)
{//将i+1月的日期填入日期表
date[i][wd][sw]=day;
sw=++sw%7;//每星期7天,以0~6计数
if (sw==0)
wd++;//日期表每七天一行,星期天开始新的一行
}
printf(“
|====================The Calendar of Year %d====================|
|”,year);
for(i=0;i6;i++)
{//先测算地i+1月和第i+7月的最大星期数
for(wd=0,k=0;k7;k++)//日期表的第六行有日期,则wd!=0;
wd+=date[i][5][k]+date[i+6][5][k];
wd=wd?6:5;
printf(“%2d %s %2d %s |
|”,i+1,title,i+7,title);
for(j=0;jwd;j++)
{
printf(” “);
//左栏为i+1月,右栏为i+7月
for (k=0;k7;k++)
{
if(date[i][j][k])
printf(“%4d”,date[i][j][k]);
else
printf(” “);
}
printf(” “);
for(k=0;k7;k++)
{
if(date[i+6][j][k])
printf(“%4d”,date[i+6][j][k]);
else
printf(” “);
}
printf(” |
|”);
}
}
puts(“=================================================================|”);
puts(“Please input any key to quit…”);
getchar();
return(0);
}
C语言编写打印万年历(呼唤高手)
你先按我的思路走一边 给你点启发
首先你要搞万年历
首先随便确定一个你知道的星期几的日子
对其年进行分析
比如 2007年5月1日 周二
那么 我们应该准备两套思路 一套思路是根据年份 算出今天是周几
其次 下一个思路 就是判断这一年的天数 这样我们暂且解决了年份造成的天数的不同
其次 就是具体的了 比如你需要考虑闰年 和月份的天数差别
这样你现在再去写写看
其实 写万年历 有点象根据今天 来去推算 某年某日某天是周几一样 呵呵 其实算法都是一样的
你尝试下用C++去写 更容易些 定义类 不至于那么麻烦
用 C写 主要反映下算法 你自己耐心点
应该没有什么问题
c语言打印万年历用数组
#include stdio.h
int main()
{
int a, i, j, n, k, t, w, x, y, z;
static int d[13][78];
int m[14] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
char wst[] = ” Sun Mon Yue Wed Thu Fri Sat “;
printf(“输入年份: “);
scanf(“%d”, y);
if (y % 4 == 0 y % 100 != 0 || y % 400 == 0) /*闰年的二月为29天*/
m[2] = 29;
w = (y + (y – 1) / 4 – (y – 1) / 100 + (y – 1) / 400) % 7; /*计算y年元旦为星期w*/
for (i = 1; i = 12; i++)
{
a = 1;
for (j = 1; j = 6; j++)
{
for (k = 0; k = 6; k++)
{
while (kw) k = k + 1;
d[i][j * 10 + k] = a; /*计算i月的第j个星期的星期w的日期为a*/
a = a + 1;
w = k + 1;
if (w == 7) w = 0;
if (am[i]) break;
}
if (am[i]) break;
}
}
printf(“输入每行显示几个月份(1,2,3,4,5,6): “);
scanf(“%d”, x);
for (k = 1; k = 16 * x – 3; k++)
printf(” “);
printf(“=====%d=====
”, y); /*打印年号*/
for (n = 1; n = 12 / x; n++)
{
t = x*(n – 1) + 1;
printf(“
”);
for (z = 1; z = x; z++)
{
for (k = 1; k = 15; k++)
printf(” “);
printf(“%2d”, t + z – 1); /*打印月号*/
for (k = 1; k = 14; k++)
printf(” “);
}
printf(“
”);
for (z = 1; z = x; z++) /*按一横排x个月格式打印*/
printf(“%s”, wst); /*打印星期标题*/
for (j = 1; j = 6; j++)
{
printf(“
”);
for (i = t; i = t + x – 1; i++)
{
printf(” “);
for (k = 0; k = 6; k++)
if (d[i][j * 10 + k] == 0) /*空缺日期位置打印空格*/
printf(” “);
else
printf(“%4d”, d[i][j * 10 + k]);/*打印日期*/
}
}
}
return 0;
}
输入示例:
2016按回车
2(或者输入1或3)按回车
最后,我要感谢所有支持和关注嗨壳技术分享网(www.heikehao.com)的人们,是你们的支持和鼓励使我们更加坚定了创办这个平台的决心。我们将致力于为大家提供更好的内容和服务,为技术爱好者们搭建一个学习、分享和进步的家园。
原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/22089.html