| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 727 人关注过本帖
标题:C#基础题求助!急!
只看楼主 加入收藏
liufeifree
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-11-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
C#基础题求助!急!
一共有2题,急用,都是用C#控制台来写,谢谢大家了。
1、10年之前,海边住着一个渔人,为了保护生态环境,此人决定3天打鱼2天晒网。于是问题来了:1998年1月1日开始打鱼,那么到今天(2009年3月13日)他是在打鱼,还是在晒网?编程解决这个问题。
2、 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在  第10次落地时,共经过多少米?第10次反弹多高?
搜索更多相关主题的帖子: 生态 
2012-11-14 09:56
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
收藏
得分:4 
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
using System;

namespace FishAndBallConsole
{
    class Program
    {
        static void Main()
        {
            Console.Title = "Fish and Ball by ";

            //fish
            var fish = true;
            var currentDateTime = DateTime.Parse("1998-1-1").Subtract(TimeSpan.FromDays(1));
            var targetDateTime = DateTime.Parse("2009-3-13");
            while (true)
            {
                if (fish)
                    currentDateTime += TimeSpan.FromDays(3);
                else
                    currentDateTime += TimeSpan.FromDays(2);
                if (currentDateTime >= targetDateTime) break;
                fish = !fish;
            }
            Console.Write(targetDateTime.ToShortDateString());
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(fish ? " DaYu" : " ShaiWang");
            Console.ForegroundColor = ConsoleColor.Gray;

            //ball
            const int times = 10;
            const double percentRebound = .5;
            const double height = 100d;
            var reboundPercent = percentRebound;
            for (var i = 0; i < times - 1; i++)
                reboundPercent *= percentRebound;
            Console.Write("Rebound height ");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine(height * reboundPercent);
            Console.Read();
        }
    }
}


[ 本帖最后由 mmxo 于 2012-11-14 14:49 编辑 ]

为提高中华编程水平而奋斗
2012-11-14 12:26
qarty
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2012-9-1
收藏
得分:4 
为什么用隐式var声明,我是在学c#
2012-11-14 20:26
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
收藏
得分:0 
这个不存在隐式的说法,编译器会知道准确类型的,勿忧!

为提高中华编程水平而奋斗
2012-11-14 20:30
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
收藏
得分:4 
2楼这方法虽然可以实现,但是完全无视效率!
不用那样老是循环去算
完全可以分析一下,5天一周期,只要计算出它们之间的天数差,对5求余后判断,如果前三天就打渔,否则是晒网
TimeSpan day = DateTime.Parse("2009-3-13") - DateTime.Parse("1998-1-1");
 int k = day.Days;
 k = k %5;
 Console.WriteLine(k<=2 ? " DaYu" : " ShaiWang");
这样算绝对要比2楼的快很多!
还有,我个人建议,只当你不确定数据类型的时候,才使用var!


[ 本帖最后由 smart0721 于 2012-11-17 01:09 编辑 ]
2012-11-17 00:36
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
收藏
得分:0 
还有第二题第N次反弹多高完全可以用H=原高度/(2的N次方)求出 Height=100/Math.pow(2,N);
第N(N>1)次落地时共经过多少米,可以用等比数列的求和来计算sn=10+10(1-(0.5)^(N-1))/(1-0.5)=30-10*(0.5)^(N-2)
第10次落地就是 lenth=30-10*Math.pow(0.5,8);




[ 本帖最后由 smart0721 于 2012-11-17 01:06 编辑 ]
2012-11-17 01:02
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
收藏
得分:0 
好,算法学习了,不过var不是用在类型不确定时,相反恰恰要用在类型确定的时候,不确定是用object。

为提高中华编程水平而奋斗
2012-11-17 08:17
草原狼1
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2012-11-17
收藏
得分:4 
using System;
using System.Collections.Generic;
using System.Text;

namespace deijia
{
    class Program
    {
        static void Main(string[] args)
        {
           double H=100;
            int i = 0;
            while (i <10)
            {
               
                H = H / 2;
            i = i + 1;
            
                Console.WriteLine(i+"第次反弹后的高度是:" + H);
            }
            Console.ReadLine();
2012-11-18 19:09
剑傲
Rank: 2
等 级:论坛游民
帖 子:19
专家分:65
注 册:2008-10-17
收藏
得分:4 
5楼的方法很好!学习了!
2012-11-18 20:53
快速回复:C#基础题求助!急!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021103 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved