用c或c++编写 用户任意输入一个年份以及该年的1月1日是星期几。。。。。。
用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。麻烦高手帮我编一下啊。...
用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。麻烦高手帮我编一下啊。。。。。。
展开
1个回答
展开全部
#include<stdio.h>
void main()
{
int n,x,y,a[32],i,j,k;
n=x=y=i=-1;
while(n<0)
{
printf("请输入年份:");
scanf("%d",&n);
}
while(x>7||x<1)
{
printf("请输入星期(1-7数字):");
scanf("%d",&x);
}
while(y<0||y>12)
{
printf("请输入月份:");
scanf("%d",&y);
}
while(i<31)
a[++i] = i;
n%400==0?k=1:n%4==0&&n%100!=0?k=1:k=0;//是否为闰年
n=0;//初始化天数
switch(y-1)//某月末至1月1日有多少天
{
case 11:n+=334;i=0;break;
case 10:n+=304;i=1;break;
case 9:n+= 273;i=0;break;
case 8:n+= 243;i=0;break;
case 7:n+= 212;i=1;break;
case 6:n+= 181;i=0;break;
case 5:n+= 151;i=1;break;
case 4:n+= 120;i=0;break;
case 3:n+= 90;i=1;break;
case 2:n+= 59;i=0;break;
case 1:n+= 31;i=3;break;
case 0:i=0;break;
}
if(y>2)//2月以后
{
n=(n+k+x)%7;//求要输出的空格个数
}
else n=(n+x)%7;
if(y==2&&k==1)//闰月
i = 4;
for(y=0;n>0;n--)
{
printf(" ");
y++;
}
for(j=1;j<=31-i;j++)
{
if(y%7==0)
putchar('\n');
printf("%4d ",a[j]);
y++;
}
printf("\n");
}
void main()
{
int n,x,y,a[32],i,j,k;
n=x=y=i=-1;
while(n<0)
{
printf("请输入年份:");
scanf("%d",&n);
}
while(x>7||x<1)
{
printf("请输入星期(1-7数字):");
scanf("%d",&x);
}
while(y<0||y>12)
{
printf("请输入月份:");
scanf("%d",&y);
}
while(i<31)
a[++i] = i;
n%400==0?k=1:n%4==0&&n%100!=0?k=1:k=0;//是否为闰年
n=0;//初始化天数
switch(y-1)//某月末至1月1日有多少天
{
case 11:n+=334;i=0;break;
case 10:n+=304;i=1;break;
case 9:n+= 273;i=0;break;
case 8:n+= 243;i=0;break;
case 7:n+= 212;i=1;break;
case 6:n+= 181;i=0;break;
case 5:n+= 151;i=1;break;
case 4:n+= 120;i=0;break;
case 3:n+= 90;i=1;break;
case 2:n+= 59;i=0;break;
case 1:n+= 31;i=3;break;
case 0:i=0;break;
}
if(y>2)//2月以后
{
n=(n+k+x)%7;//求要输出的空格个数
}
else n=(n+x)%7;
if(y==2&&k==1)//闰月
i = 4;
for(y=0;n>0;n--)
{
printf(" ");
y++;
}
for(j=1;j<=31-i;j++)
{
if(y%7==0)
putchar('\n');
printf("%4d ",a[j]);
y++;
}
printf("\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询