判断一个整数是否为“水仙花数”

任务描述

任务一:通过键盘输入某年某月某日,计算并输出这一天是这一年的第几天。例如,2001 年3月5 日是这一年的第64 天。

要求:使用分支结构语句实现

解答思路
1. 使用Console类接收用户输入的年月日,分别存储在变量`year`、`month`和`day`中以及计算总天数的 `days`。

2. 定义每个月份的天数,并根据闰年情况修改2月的天数。如果该年为闰年,则2月的天数为29天,否则为28天。

3. 使用switch case 分支结构计算从1月到当前月份之前所有月份的天数,并加上当前日期,得到当前日期在该年中的天数。

4. 最后,使用Console类输出计算结果。

以下是使用C#语言实现计算某一天是一年中的第几天的代码示例:

 static void Main(string[] args)
        {
            Console.Write("请输入年份:");
            int year = int.Parse(Console.ReadLine());
            Console.Write("请输入月份:");
            int month = int.Parse(Console.ReadLine());
            Console.Write("请输入日期:");
            int day = int.Parse(Console.ReadLine());
            int days = 0; // 表示这一年的天数
            switch (month)
            {
                case 12:
                    days += 30;
                    goto case 11;
                case 11:
                    days += 31;
                    goto case 10;
                case 10:
                    days += 30;
                    goto case 9;
                case 9:
                    days += 31;
                    goto case 8;
                case 8:
                    days += 31;
                    goto case 7;
                case 7:
                    days += 30;
                    goto case 6;
                case 6:
                    days += 31;
                    goto case 5;
                case 5:
                    days += 30;
                    goto case 4;
                case 4:
                    days += 31;
                    goto case 3;
                case 3:
                    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) // 闰年
                        days += 29;
                    else // 平年
                        days += 28;
                    goto case 2;
                case 2:
                    days += 31;
                    goto case 1;
                case 1:
                    days += day;
                    break;
                default:
                    Console.WriteLine("Invalid month.");
                    break;
            }
            Console.WriteLine($"{year}{month}{day}日是这一年的第{days} 天。", days);           
            Console.ReadLine();
        }
    }
任务二:编程实现判断一个整数是否为“水仙花数”。所谓“水仙花数”是指一个三位的整数,其各位数字立方和等于该数本身。例如:153 是一个“水仙花数”,因为 153=1+125+27。

要求:用带有一个输入参数的函数(或方法)实现,返回值类型为布尔类型。

解题思路
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

    1. 比如 int n = 153; 
    2. 先得到 n的百位,十位 ,个位的数字, 使用 if 判断他们的立方和是否相等
    3. n的百位 = n / 100
    4. n的十位 = n % 100 / 10
    5. n的个位 = n % 10
    6. 判断即可
    7.“水仙花数”是指一个三位的整数取值范围为n<1000 && n>100

代码如下


        static void Main(string[] args)
        {
            Console.WriteLine("请输入需要判断的整数:");
            string buf = Console.ReadLine();
            int num = int.Parse(buf);
            Console.WriteLine(isFlowerNum(num));
          
            Console.ReadLine();
        }

        public static bool isFlowerNum(int num)
        {
            if (num >= 1000 || num < 100)
            {
                return false;
            }
            int a = num % 10;  //取数字的个位
            int b = num / 10 % 10;  //取数字的十位
            int c = num / 100 % 10;  //取数字的百位

            if (a * a * a + b * b * b + c * c * c == num)
            {
                return true;
            }
            else
            {
                return false;
            }

        }
任务三:从键盘上输入一个年份值和一个月份值,输出该月的天数。(说明:一年有12 个月,大月的天数是31,小月的天数是30。2 月的天数比较特殊,遇到闰年是29 天,否则为28 天。例如,输入2011、3,则输出31 天。)

要求:使用分支结构语句实现。

解答思路
 1.通过键盘输入获取年份值和月份值,
 2.然后使用switch结构根据月份值判断该月的天数,并将结果存储在变量days中。
 3.当月份值为2时,需要根据是否为闰年来判断天数。
 4.最后,如果days不等于0,则输出该月的天数

代码如下

        static void Main(string[] args)
        {
            Console.Write("请输入年份:");
            int year = int.Parse(Console.ReadLine());
            Console.Write("请输入月份:");
            int month = int.Parse(Console.ReadLine());
            int days = 0;
            switch (month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    days = 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    days = 30;
                    break;
                case 2:
                    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
                    {
                        days = 29;
                    }
                    else
                    {
                        days = 28;
                    }
                    break;
                default:
                    Console.WriteLine("输入的月份无效!");
                    break;
            }
            if (days != 0)
            {
                Console.WriteLine($"{year}{month}月有{days}天。");
            }
            Console.ReadLine();
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code_徐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值