黑马程序员技术交流社区
标题:
输出 405天中有1年1月1周3天,基础测试的题目!!
[打印本页]
作者:
罗代势
时间:
2012-10-27 21:12
标题:
输出 405天中有1年1月1周3天,基础测试的题目!!
/*让用户输入一个天数,计算这些天中有几年几月几周几天并输出?
如计算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();
}
想看看大家的其他算法,因为我的算法太复杂了!!!
作者:
欧玉斌
时间:
2012-10-27 21:51
这是我的算法,主要用到了三目运算符。
Console.WriteLine("请输入一个天数");
int num = int.Parse(Console.ReadLine());//获取用户输入的值
//如果输入的值大于0,则进行相关计算,否则提示错误
if (num>=0)
{
int year = num /365;//计算年数
int month = (year>0)?(num % 365) / 30:num/30;//计算月数
int week = (month >0) ? (num%365%30) / 7 : num / 7;//计算周数
int day = (week > 0) ? num % 365 % 30%7 : num;//计算天数
Console.WriteLine("{0}天中有{1}年{2}月{3}周{4}天", num, year, month, week, day);
}
else
{
Console.WriteLine("请输入正确的天数");
}
Console.ReadKey();
复制代码
作者:
王龙
时间:
2012-10-27 22:40
学习了嘿嘿
作者:
罗代势
时间:
2012-10-27 23:36
你的看似没有那么复杂!!呵呵,也学习了
作者:
王二小。
时间:
2012-10-29 20:38
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 21:18
王二小。 发表于 2012-10-29 20:38
class Program
{
static void Main(string[] args)
我测试了,除了没有考虑到负数的情况,其他都非常合理,不用三目运算符就实现了相同效果,值得学习
作者:
罗焰兵
时间:
2012-11-17 20:10
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 10:53
看你们都那么厉害 不知道我行不行了
作者:
冯超
时间:
2013-2-20 18:52
``````````````````````````````````````````````````````
作者:
黄文军
时间:
2013-8-11 08:11
import java.util.Scanner;
public class Tst1 {
/*
* 让用户输入一个天数,计算这些天中有几年几月几周几天并输出? 如计算405天,就输出 405天中有1年1月1周3天。
* (注意:不用考虑闰年,一年按365天计算,每月按30天算)
*/
public static void main(String[] args) {
// 让用户输入天数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入天数");
int days = scanner.nextInt();
if (days >= 0) {
// 定义int型记录分别记录年\月\周\天
int year, month, week, day;
year = days / 365;//取年份
month = (days % 365) / 30;//取月份
week = ((days % 365) % 30) / 7;//取周
day = ((days % 365) % 30) % 7;//取天数
System.out.println(days + "天中有" + year + "年" + month + "月" + week
+ "周" + day + "天");//输出
} else {
System.out.println("请输入正确的数");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2