用c或c++编写 用户任意输入一个年份以及该年的1月1日是星期几。。。。。。

 用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。麻烦高手帮我编一下啊。...  用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。麻烦高手帮我编一下啊。。。。。。 展开
 我来答
a19715
2011-07-08 · TA获得超过5056个赞
知道大有可为答主
回答量:2174
采纳率:60%
帮助的人:492万
展开全部
#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");
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式