使用C的日历 - 无法使其工作

时间:2017-04-29 20:12:24

标签: c

如果我的第二个输入是星期日,则日历只能正常工作。我如何使它实际上空间到正确的一天?有没有办法让代码更简单,更好,更少混淆,并使日历的格式看起来更好?

#include<stdio.h>

int main()
{
    int i,number,startday;

    //getting user input
    printf("Enter Total Number of Day in the Month:",number);
    scanf("%d", &number);
    printf("Enter Starting Day of The Month (0-6 Sunday-Saturday):",startday);
    scanf("%d", &startday);

    //formatting
    printf("   Sun  Mon  Tue  Wed  Thu  Fri  Sat \n");
    printf("_______________________________________ \n");

    //loop
    for(i=1;i<=number;i++)
      {
        printf("%5d", i);
        if(i == 7 || i == 14 || i == 21 || i == 28)
        {
          printf("\n");
          printf("\n");
        }
      }
    //formatting
    printf("\n_______________________________________");
    return 0;
}

1 个答案:

答案 0 :(得分:3)

首先阅读并了解printf()scanf()的真实格式 image from a journal

你写道:

printf("Enter Total Number of Day in the Month:",number);

应该是:

printf("Enter Total Number of Day in the Month: ");

并且您的来源几乎没有变化:

#include <stdio.h>

int main(void)
{
    int i, number, startday;

    //getting user input
    printf("Enter Total Number of Day in the Month: ");
    scanf("%d", &number);
    printf("Enter Starting Day of The Month (0-6 Sunday-Saturday): ");
    scanf("%d", &startday);

    //formatting
    printf("  Sun  Mon  Tue  Wed  Thu  Fri  Sat\n");
    printf("______________________________________\n");

    ///fill calendar with proper space "  "
    i=0;
    while (i<startday){
        printf("%5c", ' ');
        i++;
    }

    for(i=1;i<=number;i++){
        printf("%5d", i);

        if((startday+i)%7==0){
            printf("\n\n");
        }
    }

    //formatting
    printf("\n_______________________________________\n");

    return 0;
}

此代码有效,但我建议您检查用户输入 在整数数据类型和真实范围内具有适当的格式 使用简单if (day < 28 || day > 31)if (startday < 0 || startday > 6),并检查每个scanf()是否成功,如果不成功,可能会退出(带有消息)。