一道面试题
来源:互联网 发布:国家重点软件企业申报 编辑:程序博客网 时间:2024/06/06 20:58
前一段时间有过一个面试,第一轮是技术测试。第一道测试题如下:
写一段C#,把一个金额转化成英文,如123456.78转化成One hundred and twenty three thousand four hundred and fifty six dollars seventy eight sents.
当然,只要把大致写出来就可以了,并不要求100%正确,但思路要正确。
这只是第一道,后面还有三道算法题和两道SQL题, 共两个小时,比较紧张。
我的答案如下,这是我回家后写的,考试的时候只是写了一个大概:
===================================================================
private String getNumberEnglishStr ( float pfNumber ) { String lsNumber = pfNumber.ToString (); String lsResult = ""; int liDecimalPos = lsNumber.IndexOf ( "." ); String lsDecimal = ( liDecimalPos < 0 ? "" : lsNumber.Substring ( liDecimalPos + 1 ) ) ; String lsInteger = ( liDecimalPos < 0 ? lsNumber : lsNumber.Substring ( 0, liDecimalPos ) ); String lsLeftInteger = lsInteger; Int32 liGroup = 1; String lsCurrentNumber; int liCurrentNumber; StringBuilder lsbResult; while ( ! String.IsNullOrEmpty( lsLeftInteger ) ) { lsbResult = new StringBuilder (); if ( lsLeftInteger.Length > 3 ) { lsCurrentNumber = lsLeftInteger.Substring ( lsLeftInteger.Length - 3, 3 ); lsLeftInteger = lsLeftInteger.Substring ( 0, lsLeftInteger.Length - 3 ); } else { lsCurrentNumber = lsLeftInteger; lsLeftInteger = ""; } // reomve prefix 0 liCurrentNumber = int.Parse( lsCurrentNumber ); lsCurrentNumber = liCurrentNumber.ToString (); if ( liCurrentNumber != 0 ) { Char[] laryChar = lsCurrentNumber.Reverse().ToArray<Char > (); if ( laryChar.Length == 3 ) { lsbResult.Append ( " " ); lsbResult.Append( this.GetHundredNumber( int.Parse( laryChar[ 2 ].ToString () ))); if ( laryChar[ 0 ] != '0' || laryChar[ 1 ] != '0' ) { lsbResult.Append ( " and" ); } } if ( laryChar.Length >= 2 ) { lsbResult.Append ( " " ); lsbResult.Append ( this.GetSecondNumber ( int.Parse ( laryChar[ 1 ].ToString () ), int.Parse ( laryChar[0].ToString() ) ) ); } else { lsbResult.Append ( " " ); lsbResult.Append ( this.GetDigitalNumber ( int.Parse ( laryChar[ 0 ].ToString () ) ) ); } } if ( liGroup > 1 ) { lsbResult.Append ( " " ); lsbResult.Append ( Enum.GetName ( typeof ( ENumber ), liGroup ) ); } liGroup *= 1000; lsResult = lsbResult.ToString () + " " + lsResult ; } lsResult = lsResult.Trim (); if ( ! String.IsNullOrEmpty ( lsResult ) ) { if ( lsResult == "One" ) { lsResult += " dollar"; } else { lsResult += " dollars"; } } if (! String.IsNullOrEmpty( lsDecimal )) { lsResult += " " +GetSecondNumber (int.Parse( lsDecimal.Substring ( 0, 1 )),int.Parse( lsDecimal.Substring ( 1, 1 )) ) + " cents"; } return lsResult; } private String GetHundredNumber ( int piHundred ) { String lsResult = "" ; if ( piHundred != 0 ) { lsResult = Enum.GetName ( typeof ( ENumber ), piHundred ) + " " + Enum.GetName ( typeof ( ENumber ), 100 ); } return lsResult; } private String GetSecondNumber ( int piSecond, int piThird ) { String lsResult = ""; if ( piSecond != 1 && piSecond != 0 ) { lsResult = Enum.GetName ( typeof ( ENumber ), piSecond * 10 ); if ( piThird != 0 ) { lsResult = lsResult + " " + Enum.GetName ( typeof ( ENumber ), piThird ); } } else { lsResult = Enum.GetName ( typeof ( ENumber ), piSecond * 10 + piThird ); } return lsResult; } private String GetDigitalNumber ( int piThird ) { if ( piThird != 0 ) { return Enum.GetName ( typeof ( ENumber ), piThird ); } else { return ""; } } public enum ENumber { Zero = 0 , One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight =8, Nine = 9, Eleven =11, Tweleve = 12, Thirteen = 13, Forteen = 14, Fifteen = 15, Sixteen = 16, Seventeen = 17, Eighteen = 18, Nineteen = 19, Twenty = 20, Thirty = 30, Forty = 40, Fifty = 50, Sixty = 60, Seventy = 70, Eighty = 80, Ninety = 90, Hundred = 100, Thousand = 1000, Million = 1000000, Billion = 1000000000, Trillion = 1000000000 }
- 一道微软面试题
- 一道面试题
- 华为一道面试题
- 一道面试题
- 一道面试题
- 一道sql面试题
- 一道面试题
- 一道面试题
- 一道华为面试题
- 一道面试题
- 一道微软面试题
- 一道c++面试题
- 一道sql面试题
- 关于一道面试题
- 一道面试题
- 一道microsoft面试题
- 一道javascript面试题
- 一道面试题
- POJ 1350 Cabric Number Problem(模拟)
- dbunit使用小结
- asp.net服务端控件之 图形验证码
- first time
- 为什么要做程序员
- 一道面试题
- ploy==strategy+tatic
- 去除热搜网主页
- effective
- java 中的正则表达式
- Matt Cutts关于Google搜索算法问题的解释
- 2010百度站长俱乐部问题荟萃
- 我们应该怎么看Toolbar PageRank
- 2