小菜编程成长记(一 面试受挫——代码无错就是好?)第1/3页_C#教程

小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位。当投递了无数份简历后,终于收到了一个单位的面试通知,小菜欣喜若狂。
        到了人家单位,前台小姐给了他一份题目,上面写着,“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。”
        小菜一看,这个还不简单,三下五除二,10分钟不到,小菜写完了,感觉也没错误。交卷后,单位说一周内等通知吧。于是小菜只得耐心等待。可是半个月过去了,什么消息也没有,小菜很纳闷,我的代码实现了呀,为什么不给我机会呢。
        小菜找到工作三年的师哥大鸟,请教原因,大鸟问了题目和了解了小菜代码的细节以后,哈哈大笑,说道:“小菜呀小菜,你上当了,人家单位出题的意思,你完全都没明白,当然不会再联系你了”。
        小菜说:“我的代码有错吗?单位题目不就是要我实现一个计算器的代码吗,我这样写有什么问题。”

复制代码 代码如下:

class Program
{
    static void Main(string[] args)
    {
        Console.Write("请输入数字A:");
        string A = Console.ReadLine();
        Console.Write("请选择运算符号(+、-、*、/):");
        string B = Console.ReadLine();
        Console.Write("请输入数字B:");
        string C = Console.ReadLine();
        string D = "";

        if (B == "+")
            D = Convert.ToString(Convert.ToDouble(A) + Convert.ToDouble(C));
        if (B == "-")
            D = Convert.ToString(Convert.ToDouble(A) - Convert.ToDouble(C));
        if (B == "*")
            D = Convert.ToString(Convert.ToDouble(A) * Convert.ToDouble(C));
        if (O == "/")
            D = Convert.ToString(Convert.ToDouble(A) / Convert.ToDouble(C));

        Console.WriteLine("结果是:" + D);
    }     
}

小菜的代码有什么问题呢?
二 代码规范、重构

大鸟说:“且先不说出题人的意思,单就你现在的代码,就有很多不足的地方需要改进。比如变量命名,你的命名就是ABCD,变量不带有任何具体含义,这是非常不规范的;判断分支,你这样的写法,意味着每个条件都要做判断,等于计算机做了三次无用功;数据输入有效性判断等,如果用户输入的是字符符号而不是数字怎么办?如果除数时,客户输入了0怎么办?这些都是可以改进的地方。”

“哦,说得没错,这个我以前听老师说过,可是从来没有在意过,我马上改,改完再给你看看。”

复制代码 代码如下:

class Program
{
static void Main(string[] args)
{
try
{
Console.Write("请输入数字A:");
string strNumberA = Console.ReadLine();
Console.Write("请选择运算符号(+、-、*、/):");
string strOperate = Console.ReadLine();
Console.Write("请输入数字B:");
string strNumberB = Console.ReadLine();
string strResult = "";

switch (strOperate)
{
case "+":
strResult = Convert.ToString(Convert.ToDouble(strNumberA) + Convert.ToDouble(strNumberB));
break;
case "-":
strResult = Convert.ToString(Convert.ToDouble(strNumberA) - Convert.ToDouble(strNumberB));
break;
case "*":
strResult = Convert.ToString(Convert.ToDouble(strNumberA) * Convert.ToDouble(strNumberB));
break;
case "/":
if (strNumberB != "0")
strResult = Convert.ToString(Convert.ToDouble(strNumberA) / Convert.ToDouble(strNumberB));
else
strResult = "除数不能为0";
break;
}

Console.WriteLine("结果是:" + strResult);

Console.ReadLine();

}
catch (Exception ex)
{
Console.WriteLine("您的输入有错:" + ex.Message);
}
}
}

大鸟:“吼吼,不错,不错,改得很快吗?至在目前代码来说,实现计算器是没有问题了,但这样写出的代码是否合出题人的意思呢?”

小菜:“你的意思是面向对象?”

大鸟:“哈,小菜非小菜也!”

当前1/3页 123下一页阅读全文

时间: 2024-10-08 00:53:01

小菜编程成长记(一 面试受挫——代码无错就是好?)第1/3页_C#教程的相关文章

小菜编程成长记(六 工厂不好用了?)

本系列文章导航 四大发明之活字印刷面向对象思想的胜利 小菜编程成长记(一 面试受挫代码无错就是好?) 小菜编程成长记(二 代码规范.重构) 小菜编程成长记(三 复制VS复用) 小菜编程成长记(四 业务的封装) 小菜编程成长记(五 体会简单工厂模式的美妙) 小菜编程成长记(五 体会简单工厂模式的美妙) 小菜编程成长记(五 体会简单工厂模式的美妙) 小菜编程成长记(六 工厂不好用了?) 小菜编程成长记(七 用"策略模式"是一种好策略) 小菜编程成长记(八 反射程序员的快乐!) 小菜编程成长

C#无限栏目分级程序代码分享 好东西第1/3页_C#教程

数据库表的结构必须有以下字段:  screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>各个字段的说明:screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; th

c#一个定时重启的小程序实现代码第1/2页_C#教程

原理我像大家都很清楚,这里只说.NET(c#实现).服务器每次启动或者重启,都是没登陆的.那意味着启动项里不只能做,我就考虑到使用Windows服务.Windows服务在系统加载时候就会启动所有服务,把程序写进里面应该没错了. 需要重启,那就要一个时间来效验,写法都有很多.我这里采用ini来存放. Time 记录要重启的时间,验证时间. Day 用来累加天数. 复制代码 代码如下: [Reboot] Time=02:02:01 Day=3 使用System.Timers.Timer循环验证时间(

C#网络爬虫代码分享 C#简单的爬取工具_C#教程

公司编辑妹子需要爬取网页内容,叫我帮忙做了一简单的爬取工具 这是爬取网页内容,像是这对大家来说都是不难得,但是在这里有一些小改动,代码献上,大家参考 private string GetHttpWebRequest(string url) { HttpWebResponse result; string strHTML = string.Empty; try { Uri uri = new Uri(url); WebRequest webReq = WebRequest.Create(uri);

c语言-编程算法 - 最小的k个数 代码(C)

问题描述 编程算法 - 最小的k个数 代码(C) 请解释一下在c语言中怎样编写在输入的N个数中找到k个最小的数 解决方案 排序吧,再输出前k个数 解决方案二: 遍历,找出MAX,移除MAX,循环K遍 解决方案三: 我觉得你的问题是怎么将输入的数保存下来,你可以先定义一个vector. vector vec;int iNUm = 0;while(cin>>iNum)//需要结束的时候输入ctrl+z;{ vec.push_back(iNum);}//最后对整个vec进行排序,取得最小的值 解决方

网赚菜鸟霍常亮成长记:新手建站实战教程

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在上文<网赚菜鸟霍常亮成长记(四):舍本逐末 害人害己>中已经多次提及到了淘宝客的价值,有不少看过的朋友跟我沟通,觉得文章在实用技巧方面涉及的太少,换句话说,就是理论与实践脱节,在这里真诚的感谢各位朋友的在百忙之中抽出时间与我交流,所以本篇成长记中,励志的话咱就不说了,直入正题,开始实战操作.今天的主题是整体战略规划,这些都是我一点一点摸索出来的,希望能够对新手朋友有些帮助. 兵马未动粮草先行 做淘宝客,首先需要做好前期的规划,包括产品的选择,主

站长成长记十:外链的建设是持久战

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 好久没来分享经验了,最近在忙英文站的建设,因此耽误了时间.为什么要做英文站,这个不言而喻,对职业站长来说是一个必须逾越的关口.或许本系列的经验分享完毕后,将来来个英文站分享经验,这是后话. 先来汇报下网络兼职网这2周的动向,结合前面的情况,各位站长可以看看是否对您的站点成长有帮助的地方.有个不好的消息是,上周百度的更新,把原本每天的快照更新给

字符-window编程中添加滚动条有如下代码,请问是啥意思?

问题描述 window编程中添加滚动条有如下代码,请问是啥意思? 请问为啥是+1,而不是cxChar?其中cxChar是字符的宽度. 解决方案 而且垂直滚动和字符的宽度没有任何关系.只是向上一行. 解决方案二: 因为屏幕坐标是从上到下递增的,而不是笛卡尔坐标系那样从下网上. 换一句话说,屏幕上面比下面,垂直坐标要小. 解决方案三: 错了 是-1

新手求助-一道编程题,能给个代码学习下么?

问题描述 一道编程题,能给个代码学习下么? AVL树是指左右子树的高度差不超过1,现在有一颗n个节点的AVL树,问这样的树有多少种.比如n为10,答案为60种,时间效率要求尽量高. 解决方案 递归问题,有一颗n个节点的AVL树有多少种可以转化为问已经有了一个根节点,求n-1个节点的AVL树有多少种 如果只有一个节点,那么只有1种. 解决方案二: 我在你前一个问题中给出思路了,你看看能不能懂,自己先尝试写下代码,这样才能提高你的编码能力,我有空帮你写个代码. 这是道动态规划题, 挺好的我觉得.