使用C标记日历控制台应用程序

使用C标记日历控制台应用程序,c,console-application,C,Console Application,我正在使用ANSI C在控制台应用程序中以传统格式实现一个简单的年度日历。日历必须以3 x 4个月的格式显示。到目前为止,我设法将所有月份显示在彼此下方,如下面的代码所示。有什么帮助吗?我该如何处理卡舌部分?我试着将月份[]按列分为3,例如一月、四月、七月和十月将是第一列,然后逐列工作,但我不知道这是否是最好的做法……请提供帮助 #include<stdio.h> int main() { int d,y,no_lp,n,i=1,j,month[]={0,31,28,31,30,

我正在使用ANSI C在控制台应用程序中以传统格式实现一个简单的年度日历。日历必须以3 x 4个月的格式显示。到目前为止,我设法将所有月份显示在彼此下方,如下面的代码所示。有什么帮助吗?我该如何处理卡舌部分?我试着将月份[]按列分为3,例如一月、四月、七月和十月将是第一列,然后逐列工作,但我不知道这是否是最好的做法……请提供帮助

#include<stdio.h>

int main()
{
 int d,y,no_lp,n,i=1,j,month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

 printf("Enter year:");
 scanf("%d", &y);

 if (y%4==0)
 {month[2]=29;}

 no_lp= (27 + (42/5) + (y-1) + ((y-1)/4) - ((y-1)/100) + ((y-1)/400) + 1);
 d= no_lp%7;

 n=d;

 for(j=1;j<=12;j++)    
 {
  printf("\n\n       %s",monthname[j]);
  //printf ("\n\n%d",j);
  printf("\n Su Mo  Tu  We  Th  Fr  Sa\n");

  while(d--!=0)
    printf("    ");  //spaces for empty days

  while(i<=month[j])
  {
   if(i<10)
   {printf(" %d  ",i++);} //formating for dates with 2 digits

   else{printf("%d  ",i++);}//formatting for dates with 1 digit
   n++;

   if(n==7)        //if 7 is reached start new line
   {
    n=0;
    printf("\n");
   }
  }

  d=n;
  i=1;            //n will be the 1st day of next month
 }

 return(0);
}
#包括
int main()
{
int d,y,no_lp,n,i=1,j,月[]={0,31,28,31,30,31,31,30,31};
printf(“输入年份:”);
scanf(“%d”和“&y”);
如果(y%4==0)
{月[2]=29;}
无_lp=(27+(42/5)+(y-1)+(y-1)/4-(y-1)/100)+(y-1)/400)+1);
d=无\u lp%7;
n=d;
对于(j=1;j可以替换

   if(i<10)
   {printf(" %d  ",i++);} //formating for dates with 2 digits

   else{printf("%d  ",i++);}//formatting for dates with 1 digit
要打印3*4,请不要即时打印

存储这些值

char out[12][6][24];
          |  |  |
n months <-  |  -> string containing week in calendar (e.g 10 11 12 13 14 15 17)
             V
    Max weeks in a month

请查看UNIX
cal
命令的用法。您可以使用外部库吗?nCurses可能对您有用。我不能使用非ANSI C的外部库
char out[12][6][24];
          |  |  |
n months <-  |  -> string containing week in calendar (e.g 10 11 12 13 14 15 17)
             V
    Max weeks in a month
week 1 month 1 , week 1 month 2 ,  week 1 month 3
week 2 month 1 , week 2 month 2 ,  week 2 month 3
week 3 month 1 , week 3 month 2 ,  week 3 month 3
...
week 1 month 4 , week 1 month 5 ,  week 1 month 6
week 2 month 4 , week 2 month 5 ,  week 2 month 6
week 3 month 4 , week 3 month 5 ,  week 3 month 6
...

...