C# 可选择不同月份的简单日历

C# 可选择不同月份的简单日历,c#,calendar,console-application,C#,Calendar,Console Application,提示如下:编写一个程序 打印一个月的日历。输入 由指定第一个参数的整数组成 每月的第几天(1=星期日)和 指定需要多少天的整数 一个月后 下面是它应该是什么样子的示例输出: First day of the month 3 Number of days in the month 31 Sunday Monday Tuesday Wednesday Thursday Friday Saturday 1 2

提示如下:编写一个程序 打印一个月的日历。输入 由指定第一个参数的整数组成 每月的第几天(1=星期日)和 指定需要多少天的整数 一个月后

下面是它应该是什么样子的示例输出:

    First day of the month 3 
    Number of days in the month 31

    Sunday Monday Tuesday Wednesday Thursday Friday Saturday
                     1        2        3       4       5 
      6      7       8        9        10      11      12
      13     14      15       16       17      18      19
      20     21      22       23       24      25      26
      27     28      29       30       31
我一直在做这件事,这是我到目前为止所做的

namespace Program_202t
{
   class Program
   {

     static void Main(string[] args)
     {
        Console.Title = "Program 202t";

        Console.Write("Enter the first day of the month: ");
        int year = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter the number of days in a month: ");
        int month = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("\nSunday  Monday   Tuesday  Wedsnesday  Thursday  Friday  Saturday");
        if (year == 1)
        {
            Console.SetCursorPosition(0, 4);
            for (int i = 1; i <= 10; i++)
            {
                Console.Write(i + "         ");


                if (((i) % 7) > 0)
                {
                }

                else
                {
                    Console.Write("\n");
                }
            }
            Console.Write("\b");
            for (int b = 11; b <= month; b++)
            {
                if (((b) % 7) > 0)
                {
                    Console.Write(b + "        ");
                }
                else
                {
                    Console.Write(b + "\n");
                }

            }

        }
        if (year == 2)
        {
            //Console.SetCursorPosition(10, 4);
            for (int i = 1; i <= month; i++)
            {
                if (i == 1)
                {
                    Console.Write("         " + i + "         ");
                }
                else if (i > 1 && i < 11 && i != 6)
                {
                    Console.Write(i + "         ");
                }
                Console.Write("\b");
                if (i == 6)
                {
                    Console.Write(i + "\n");
                }
                if (i > 11 && i != 14)
                {
                    Console.Write(i + "       ");
                }
                if (i == 14)
                {
                    Console.Write(i + "\n");
                }


                /*if (((i) % 6) > 0)
                {
                }

                else
                {
                    Console.Write("\n");
                }
            }
            Console.Write("\b");
            //FIX!!!
            for (int b = 11; b <= month; b++)
            {
                if (((b) % 13) > 0 && b >13)
                {
                    Console.Write(b + "        ");

                }
                if (((b) % 20) > 0 && b <= 13)
                {
                    Console.Write(b + "        ");
                }
                else
                {
                    Console.Write("\n");
                }

            }*/

            }
            if (year == 3)
            {
                Console.SetCursorPosition(20, 4);
                for (int i = 1; i <= 10; i++)
                {
                    Console.Write(i + "         ");


                    if (((i) % 5) > 0)
                    {
                    }

                    else
                    {
                        Console.Write("\n");
                    }
                }
                Console.Write("\b");
                for (int b = 11; b <= month; b++)
                {
                    if (((b) % 7) > 0)
                    {
                        Console.Write(b + "        ");
                    }
                    else
                    {
                        Console.Write("\n");
                    }

                }

            }
            if (year == 4)
            {
                for (int i = 1; i <= 10; i++)
                {
                    Console.Write(i + "         ");


                    if (((i) % 7) > 0)
                    {
                    }

                    else
                    {
                        Console.Write("\n");
                    }
                }
                Console.Write("\b");
                for (int b = 11; b <= month; b++)
                {
                    if (((b) % 7) > 0)
                    {
                        Console.Write(b + "        ");
                    }
                    else
                    {
                        Console.Write(b + "\n");
                    }

                }

            }
            if (year == 5)
            {
                for (int i = 1; i <= 10; i++)
                {
                    Console.Write(i + "         ");


                    if (((i) % 7) > 0)
                    {
                    }

                    else
                    {
                        Console.Write("\n");
                    }
                }
                Console.Write("\b");
                for (int b = 11; b <= month; b++)
                {
                    if (((b) % 7) > 0)
                    {
                        Console.Write(b + "        ");
                    }
                    else
                    {
                        Console.Write(b + "\n");
                    }

                }

            }
            if (year == 6)
            {
                for (int i = 1; i <= 10; i++)
                {
                    Console.Write(i + "         ");


                    if (((i) % 7) > 0)
                    {
                    }

                    else
                    {
                        Console.Write("\n");
                    }
                }
                Console.Write("\b");
                for (int b = 11; b <= month; b++)
                {
                    if (((b) % 7) > 0)
                    {
                        Console.Write(b + "        ");
                    }
                    else
                    {
                        Console.Write(b + "\n");
                    }

                }

            }
            if (year == 7)
            {
                for (int i = 1; i <= 10; i++)
                {
                    Console.Write(i + "         ");


                    if (((i) % 7) > 0)
                    {
                    }

                    else
                    {
                        Console.Write("\n");
                    }
                }
                Console.Write("\b");
                for (int b = 11; b <= month; b++)
                {
                    if (((b) % 7) > 0)
                    {
                        Console.Write(b + "        ");
                    }
                    else
                    {
                        Console.Write(b + "\n");
                    }

                }

            }
            Console.ReadLine();
        }


    }

}
名称空间程序\u 202t
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.Title=“程序202t”;
Console.Write(“输入月份的第一天:”);
int year=Convert.ToInt32(Console.ReadLine());
Console.Write(“输入一个月的天数:”);
int month=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(\n星期一星期二星期三星期四星期五星期六”);
如果(年份==1)
{
控制台。设置光标位置(0,4);
对于(int i=1;i 0)
{
}
其他的
{
控制台。写入(“\n”);
}
}
控制台。写入(“\b”);
对于(intb=11;b0)
{
控制台。写入(b+“”);
}
其他的
{
控制台。写入(b+“\n”);
}
}
}
如果(年份==2)
{
//控制台。设置光标位置(10,4);
对于(int i=1;i 1&&i<11&&i!=6)
{
控制台。写入(i+“”);
}
控制台。写入(“\b”);
如果(i==6)
{
控制台。写入(i+“\n”);
}
如果(i>11&&i!=14)
{
控制台。写入(i+“”);
}
如果(i==14)
{
控制台。写入(i+“\n”);
}
/*如果(((i)%6)>0)
{
}
其他的
{
控制台。写入(“\n”);
}
}
控制台。写入(“\b”);
//修正!!!
对于(intb=11;b0&&b>13)
{
控制台。写入(b+“”);
}

如果((b)%20)>0&&b好的,我快速地运行了代码,我看到了您的问题所在,所以我会给您一些关于如何查找的提示

首先,您的代码围绕所需的输出格式存在逻辑问题。有更简单的方法可以输出正确的格式。如果查看“然后查看格式”,您可能会找到更简单的方法

接下来,您会遇到块结尾未对齐的问题,因此某些代码永远无法执行。我建议您在第一条
if
语句中中断代码,并逐步了解代码在运行时的执行情况

最后,我建议稍微澄清一下变量名。如果第一个输入代表一周中的那一天,那么也许可以使用一个代表它的变量名(例如
dayOfWeek
,但
month
不适合我)。此外,月份的天数可以使用更好的变量名

如果您需要更多的指导,请提出问题。我很乐意提供帮助。

这样行吗

 class Program
{
    static void Main(string[] args)
    {
        Console.Title = "Program 202t";

        Console.Write("Enter the first day of the month: ");
        int startingDay = Convert.ToInt32(Console.ReadLine());
        Console.Write("Enter the number of days in a month: ");
        int daysInMonth = Convert.ToInt32(Console.ReadLine());

        List<string> daysOfTheWeek = new List<string>() {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
        foreach (string day in daysOfTheWeek)
        {
            Console.Write($"{day,10}");
        }
        List<string> days = new List<string>();
        for (int i = 0; i < startingDay; i++)
        {
            days.Add($"{"",10}");
        }
        for (int i = 1; i < daysInMonth+1; i++)
        {
            days.Add($"{i,10}");
        }
        for (int i = 0; i < days.Count; i++)
        {
            if (i%7!=0) {Console.Write(days[i]);}
            else {Console.WriteLine(days[i]);}                
        }

    }
类程序
{
静态void Main(字符串[]参数)
{
Console.Title=“程序202t”;
Console.Write(“输入月份的第一天:”);
int startingDay=Convert.ToInt32(Console.ReadLine());
Console.Write(“输入一个月的天数:”);
int daysInMonth=Convert.ToInt32(Console.ReadLine());
List daysOfTheWeek=新列表(){“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”};
foreach(以daysOfTheWeek为单位的字符串日)
{
Console.Write($“{day,10}”);
}
列表天数=新列表();
对于(int i=0;i
什么样的问题?需要处理的代码太多了。你能把它缩小到你认为引起问题的地方吗?IF和FOR语句有问题;我只是把整件事都包括进来供参考OK,谢谢你的建议。你能再解释一下1和2吗,因为我不明白它们的意思?还有,你能采取行动吗请帮助我并将代码更改为合理的代码?谢谢!运行您的实际代码,我可以让它打印出
year=2
month=30
,但您的格式逻辑中存在导致输出不对齐的问题。这可能会让您在作业中损失分数。查看您的逻辑并把它写在纸上,看看结果会是什么,直到你对它有了更多的了解。一旦你了解了它,代码调整就会变得容易一些。第二,看看你的
if
块,看看它们的开始和结束。我可以帮你编写代码,但作为一名大学教师,我觉得现在指导是最好的。是的,这是一个好方法太好了!谢谢你。