日历程序编写的问题
编写1901到2100年的日历,输入年数输出这一年的日历,请高手指点看哪错了#include<stdio.h>
int main()
{
void print_star();
int range(int x,int y);
int b[200][12][42],k,j,q,m,n,i; //b[0][0][0]是1901年1月1号
struct cricle //建立循环链表,链表内容为0 1 2 3 4 5 6,使链表与每一天同步
{
int a;
struct cricle *next;
};
struct cricle a[7],*p,*head;
head=&a[2]; //1901年1月1号是星期二
p=head;
for(i=1;i<7;i++)
{
a[i-1].next=&a[i];
a[i].a=i;
}
a[6].next=&a[0];
a[0].a=0;
for(k=0;k<200;k++)
{
for(j=0;j<12;j++)
{
m=p->a;
n=range(k,j); //range()函数返回每个月的天数
for(i=m,q=1;q<=n;i++,q++)
{
b[k][j][i]=q;
p=p->next;
}
for(i=m-1;i>=0;i--)
{
b[k][j][i]=0;
}
}
}
printf("请输入1901-2100年中要查询的年数:(如2010)\n");
scanf("%d",&k);
printf(" *%d年*\n",k);
print_star();
k-=1901;
for(j=0;j<12;j++)
{
print_star();
printf(" %d月\n",j+1);
print_star();
printf("日 一 二 三 四 五 六\n");
n=range(k,j);
for(i=0;b[k][j][i]<=n;i++)
{
if(!(i%7))
printf("\n");
if(b[k][j][i]==0)
printf(" ");
else
printf("%5d",b[k][j][i]);
}
printf("\n");
}
return 0;
}
int range(int x,int y)
{
int m,n;
m=(x+1)%4;
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
n=31;
else if(y==4||y==6||y==9||y==11)
n=30;
else
if(!m)
n=29;
else
n=28;
return n;
}
void print_star()
{
printf("***************************************\n");
}