A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

     /*让用户输入一个天数,计算这些天中有几年几月几周几天并输出?
          如计算405天,就输出 405天中有1年1月1周3天。
         (注意:不用考虑闰年,一年按365天计算,每月按30天算) */
        static void Main(string[] args)
        {
            Console.WriteLine("请输入要计算的总天数!"); //提示用户输入计算的天数
            string input = Console.ReadLine();           //接收输入的天数
            int Days;                                //声明一个将要转换为天数的变量
            if(!int.TryParse(input,out Days))    //转换为Int值的天数
            {
                Console.WriteLine("输入的值有误,不是整数,返回值是0");
            }
            int years, months, weeks, days;   //声明年、月、周、天的变量
            if (Days >= 365)           //输入的天数大于等于365天
            {
                years = Days / 365;
                if ((Days % 365) >= 30)   //余的天数大于等于30
                {
                    months = (Days % 365) / 30;  //计算有多少个月
                    if (((Days % 365) % 30) >= 7)  //余的天数>=7天时
                    {
                        weeks = ((Days % 365) % 30) / 7; //计算有多少周
                        days = ((Days % 365) % 30) % 7;  //余的天数
                    }
                    else
                    {
                        weeks = 0;
                        days = (Days % 365) % 30;
                    }
                }
                else
                {
                    months = 0;
                    if (((Days % 365) % 30) >= 7)
                    {
                        weeks = ((Days % 365) % 30) / 7;
                        days = ((Days % 365) % 30) % 7;
                    }
                    else
                    {
                        weeks = 0;
                        days = (Days % 365) % 30;
                    }
                }
            }
            else    //否则输入的天数小于365天
            {
                years = 0;
                if ((Days % 365) >= 30)   //余的天数大于等于30
                {
                    months = (Days % 365) / 30;
                    if (((Days % 365) % 30) >= 7)  //余的天数>=7天时
                    {
                        weeks = ((Days % 365) % 30) / 7;
                        days = ((Days % 365) % 30) % 7;
                    }
                    else
                    {
                        weeks = 0;
                        days = (Days % 365) % 30;
                    }
                }
                else
                {
                    months = 0;
                    if (((Days % 365) % 30) >= 7)
                    {
                        weeks = ((Days % 365) % 30) / 7;
                        days = ((Days % 365) % 30) % 7;
                    }
                    else
                    {
                        weeks = 0;
                        days = (Days % 365) % 30;
                    }
                }
            }
            Console.WriteLine("{0}年{1}月{2}周{3}天",years,months,weeks,days);
            Console.WriteLine();
            Console.ReadKey();
        }
想看看大家的其他算法,因为我的算法太复杂了!!!

9 个回复

倒序浏览
这是我的算法,主要用到了三目运算符。
  1. Console.WriteLine("请输入一个天数");
  2. int num = int.Parse(Console.ReadLine());//获取用户输入的值
  3. //如果输入的值大于0,则进行相关计算,否则提示错误
  4. if (num>=0)
  5. {
  6. int year = num /365;//计算年数
  7. int month = (year>0)?(num % 365) / 30:num/30;//计算月数
  8. int week = (month >0) ? (num%365%30) / 7 : num / 7;//计算周数
  9. int day = (week > 0) ? num % 365 % 30%7 : num;//计算天数
  10. Console.WriteLine("{0}天中有{1}年{2}月{3}周{4}天", num, year, month, week, day);
  11. }
  12. else
  13. {
  14. Console.WriteLine("请输入正确的天数");
  15. }

  16. Console.ReadKey();
复制代码
回复 使用道具 举报
学习了嘿嘿
回复 使用道具 举报
你的看似没有那么复杂!!呵呵,也学习了
回复 使用道具 举报
class Program
    {
        static void Main(string[] args)
        {
            //请用户输入一个天数,输出有多少年多少月多少天
            Console.WriteLine("请输入天数");
            int numbers, year, month, week, day;//声明了接收天数的变量,年,月,周,天数的变量
            try//判断用户输入的内容是否会发生异常,如果不发生则继续运行
            {
                numbers = int.Parse(Console.ReadLine());//定义一个字符串变量来接收用户输入的天数
                year = numbers / 365;//将用户输入的数除以365得到年数
                month = (numbers % 365) / 30;//将用户输入的数取余除以30得到月数
                week = ((numbers % 365) % 30) / 7;//将用户输入的数取余除以30除以7得到周数
                day = ((numbers % 365) % 30) % 7;//将用户输入的数取余除以30取余7得到天数
                Console.WriteLine("您输入的天数有{0}年零{1}月零{2}周零{3}天", year, month, week, day);//输出内容
            }
            catch//如果发生
            {
                Console.WriteLine("输入错误,请输入正确的整数,按任意键退出...");//提示用户输入错误
            }
            Console.ReadKey();
        }
    }
小弟水平有限,不知道入不入您的法眼...
回复 使用道具 举报
王二小。 发表于 2012-10-29 20:38
class Program
    {
        static void Main(string[] args)

我测试了,除了没有考虑到负数的情况,其他都非常合理,不用三目运算符就实现了相同效果,值得学习
回复 使用道具 举报

           int years, months,weeks, days;
            action: Console.WriteLine("请输入一个天数");
            int input = int.Parse(Console.ReadLine());
            if (input < 0)
            {
                Console.WriteLine("你输入天数无效!");
                goto action;//返回到面面继续输入有效的年份
            }
            else
            {
                years=input/365;//取年份
                months = (input % 365) / 30;//取年份数的余数/30得到月分
                weeks = ((input % 365) % 30) / 7;//取月份的余数/7得到周数
                days = ((input % 365) % 30) % 7;//取天数
                Console.WriteLine("你输入的{0}天中有{1}年{2}月{3}周{4}天!", input, years, months, weeks, days);
            }
            Console.ReadKey();
回复 使用道具 举报
看你们都那么厉害 不知道我行不行了
回复 使用道具 举报
冯超 高级黑马 2013-2-20 18:52:19
9#
``````````````````````````````````````````````````````
回复 使用道具 举报
  1. import java.util.Scanner;

  2. public class Tst1 {
  3.         /*
  4.          * 让用户输入一个天数,计算这些天中有几年几月几周几天并输出? 如计算405天,就输出 405天中有1年1月1周3天。
  5.          * (注意:不用考虑闰年,一年按365天计算,每月按30天算)
  6.          */
  7.         public static void main(String[] args) {

  8.                 // 让用户输入天数
  9.                 Scanner scanner = new Scanner(System.in);
  10.                 System.out.println("请输入天数");
  11.                 int days = scanner.nextInt();

  12.                 if (days >= 0) {

  13.                         // 定义int型记录分别记录年\月\周\天
  14.                         int year, month, week, day;

  15.                         year = days / 365;//取年份
  16.                         month = (days % 365) / 30;//取月份
  17.                         week = ((days % 365) % 30) / 7;//取周
  18.                         day = ((days % 365) % 30) % 7;//取天数

  19.                         System.out.println(days + "天中有" + year + "年" + month + "月" + week
  20.                                         + "周" + day + "天");//输出

  21.                 } else {
  22.                         System.out.println("请输入正确的数");
  23.                 }
  24.         }
  25. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马