Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带C的日历-无法使其工作_C - Fatal编程技术网

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

带C的日历-无法使其工作,c,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",

只有当我的第二个输入是星期天时,日历才能正常工作。我该如何做才能让它准确地定位到正确的日期?还有什么方法可以使代码更简单、更好、更少混乱,并使日历的格式看起来更好

#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;
}

首先阅读并学习和的真实格式 .

你写道:

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;
}
这段代码可以工作,但我建议您检查用户输入 在整数数据类型和真范围中使用正确格式
使用simple if day<28 | | day>31或if startday<0 | | | startday>6,并检查每个扫描是否成功,如果不成功,可能会带消息退出。

使用ifi%7==0而不是ifi==7 | i==……请启用并处理编译器警告。您为printf提供了一个参数,但没有两次提供格式说明符。但问题已被删除。你应该试着缩进每月的第一天,并在适当的地方写一行新行。@WeatherVane你这是什么意思,对不起,我的英语不是很好