002-c#流程控制语句练习题(2018/6/19)

1.打印一个金字塔


这里写图片描述

代码:

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //金字塔
            int num = 5;  //金字塔层数
            for (int i = 0; i < num; i++)
            {
                for (int j = 1; j < num * 2; j++)
                {
                    if ((j >= num && j - num <= i) || (j <= num && num - j <= i))
                    {
                        Console.Write("A");
                    }
                    else
                    {
                        Console.Write(0);
                    }
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

运行结果:
这里写图片描述


打印一个镂空的菱形


这里写图片描述
代码:

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //菱形
            int num = 7;  //菱形的层数
            for (int i = 0; i < num; i++)
            {
                int temp = i <= num / 2 ? i : num - 1 - i;  //不加这一句的话,菱形只有上半部分
                for (int j = 0; j < num; j++)
                {
                    if ((j >= num / 2 && j - num / 2 == temp) || (j <= num / 2 && num / 2 - j == temp))
                    {
                        Console.Write("A");
                    }
                    else
                    {
                        Console.Write(0);
                    }
                }
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}

运行结果:
这里写图片描述


万年历


这里写图片描述

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //万年历 366 365
            Console.WriteLine("请输入要查询的年份(1900年以后):");
            int year = Int32.Parse(Console.ReadLine());

            bool isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
            //月大:1,3,5,7,8,10,12是大月份
            int[] daysOfMonth = new int[12];
            //给每一个月的天数赋值
            for (int i = 0; i < 12; i++)
            {
                int month = i + 1;
                if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
                {
                    daysOfMonth[i] = 31;
                }
                else if (month == 2)
                {
                    daysOfMonth[i] = isLeapYear ? 29 : 28;
                }
                else
                {
                    daysOfMonth[i] = 30;
                }
            }

            //计算每年1月1日是星期几(根据1900年1月1日是星期一来计算)
            int headWeekDayOfYear = 1;
            for (int i = 1900; i <= year - 1; i++)
            {
                if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
                {
                    headWeekDayOfYear = (366 + headWeekDayOfYear) % 7;
                }
                else
                {
                    headWeekDayOfYear = (365 + headWeekDayOfYear) % 7;
                }
            }

            //打印日历
            int headWeekDayOfMonth = headWeekDayOfYear;
            for (int i = 0; i < 12; i++)
            {
                Console.WriteLine("{0}月份,1号星期{1}", (i + 1), headWeekDayOfMonth);
                Console.WriteLine("日" + '\t' + "一" + '\t' + "二" + '\t' + "三" + '\t' + "四" + '\t' + "五" + '\t' + "六");
                //每月开头可能会空几个日子
                for (int k = 0; k < headWeekDayOfMonth; k++)
                {
                    Console.Write("\t");
                }
                for (int j = 0; j < daysOfMonth[i]; j++)
                {
                    Console.Write((j + 1) + "\t");
                    headWeekDayOfMonth += 1;
                    if (headWeekDayOfMonth == 7)
                    {
                        Console.WriteLine();
                        headWeekDayOfMonth %= 7;
                    }
                }
                Console.WriteLine();
            }

            Console.ReadKey();
        }
    }
}

输出结果:
这里写图片描述


费波纳奇数


代码:

using System;

namespace cchoopDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //费波纳奇数 fn = fn-1 + fn-2
            Console.WriteLine("要查询第几个费波纳奇数?");
            int num = Int32.Parse(Console.ReadLine());
            int temp1 = 1;
            int temp2 = 1;
            int result = 1;
            for (int i = 2; i < num; i++)
            {
                result = temp1 + temp2;
                temp1 = temp2;
                temp2 = result;
            }

            Console.WriteLine("第{0}个费波纳奇数是:{1}", num, result);
            Console.ReadKey();
        }
    }
}

运行结果:
这里写图片描述


猜你喜欢

转载自blog.csdn.net/qq_34937637/article/details/80729433