关于C语言switch

关于C语言switch这个奇葩的东东。

很多C语言习题中都会有输入考试成绩,判断等级(90-100优,80-89良……0-59不及格)的题目。

首先,刚开始学到分支结构会用if … else if … else if …… else这样的结构,例如:

        if (0 = g) 
            GP[n] = 0; 
        else if (60 = g) 
            GP[n] = 1; 
        else if (70 = g) 
            GP[n] = 2; 
        else if (80 = g) 
            GP[n] = 3; 
        else GP[n] = 4;

然后呢,又学到switch,则会变成,先除以10,利用趋零截尾的性质,然后把0-5直接合并了……例如:

          ch = (int)(g / 10); 
            if (ch < 6) 
            { 
                ch = 5; 
            } 
            switch(ch) 
            { 
                case 5 : GP[n] = 0;break; 
                case 6 : GP[n] = 1;break; 
                case 7 : GP[n] = 2;break; 
                case 8 : GP[n] = 3;break; 
                case 9 : GP[n] = 4;break; 
                case 10 : GP[n] = 4;break; 
            }

但是呢,其实呢,这个if再把0-5合并 是可以去掉的,利用switch的特性,结果是这样子:

    switch(grade/10)
    {
        case 0 :
        case 1 :
        case 2 :
        case 3 :
        case 4 :
        case 5 : rank = 'E';
                 break;
        case 6 : rank = 'D';
                 break;
        case 7 : rank = 'C';
                 break;
        case 8 : rank = 'B';
                 break;
        case 9 :
        case 10: rank = 'A';
                 break;
        default: puts("Invalid grade");
                 exit (1);
    }

记得在expert C programing中,作者就很BS当初C语言把switch中,每个分支都要加上break;跳出才不致于执行完所有语句。根据作者统计,97%的使用了switch判断分支的代码都是要用上break;的,也是就是说“完全的选择”,而只有剩下的少得可怜的switch会出现不带break;的情况,所以当时sun的编译器会对switch case不带上break;作waning。但是这里或许正是switch不带break;时的用途所在吧。

其实个人看来,使用switch时加上break;已是非常自然的,不加上break;反而觉得有点怪怪的。正如文中所述,前面两种想法是3月的时候做ACM OJ的模拟题时想到的,而第三种方法还是这两天逛论坛时无意才想起来……

不过,话说回来,这个例子是特例,其实在绝大多数时候,我严重地支持expert C programing的作者的。

至于第三种方法效率是否有所提高,我也不得而知。第一种我个人是比较反对的,原因是多重if else判断让人眼花。通常遇到多重分支判断都会使用switch。其实在本文中,第二第三种应该是不相上下的。

重庆大学新老校区校园网路由器相关问题解说

本人是09级大三的同学,根据自己两年在虎溪和两个月在老校区(B区)的经验,我将我的心得体会整理如下,希望对虎溪学弟学妹对想寝室一人共用一个端口等网络问题和对老校区寝室只有一个端口又想用无线路由并用ipv6的同学有些用(对其他学校可能也会有用),本人知识不多若有不妥不便或者错误谢谢大家批评纠正。(其中涉及的软件同学们可以从网上下载或者给我留下邮箱,我发给你们)

虎溪新校区

上网账号共享

(一个寝室用一个账号 包月的同学比较合适)

方法一:用一台装有无线网卡找到主机连接上去,主机和蹭网机的网络识别都选取 公用网络,开始一般不行,要等段时间,电脑需要识别时间,大概5分钟左右就可以了,此方法我们多次试验 绝对可用,男同学们打dota也可以这样建立局域网。PS:老校区此方法不可行!

方法二:关于用无线路由器,由于学校是绑定了电脑网卡的所以用路由器的ppoe拨号功能是没有用的,无线路由拿来就是只用于打游戏连接局域网是比较稳定而已,希望哪位大虾知道可以用的方法和大家分享分享。

关于虎溪共享等共享平台

因为学校是教务网,所以很多高校建立了很多的教育网资源共享共享交流平台,虎溪校区用的一般是虎溪共享和百舍嘟嘟,何为共享,就是把自己的硬盘上的东西目录上传到平台上,供其他同学搜索自己有用的信息,然后经过平台直接连接到你的电脑上从你电脑网速较慢。

老校区(主要是B区)

网络注册

注册时间是大二结束搬校区过来最好立刻注册,因为暑假可以用,开学来了必须要等到正式开学了才可以注册而且到时候系统肯定记得不成样了。注册方法是直接插网线登陆内网user.cqu.edu.cn新用户注册按步骤来就好了,然后下载新版的Dr.com登陆客户端,到转账机交网费就可以用了。每年的8月份是不收取网络费用的,你所办流量是免费得。

关于一个端口的解决方法

老校区特别是B去,每个宿舍内只有一个网络上网端口,要解决四个人一个端口的困难,当然就得选用路由器或者交换机了(建议大家买六孔的路由,五孔的交换机),新的有线路由器一般50元,二手30,新的无线路由150M的单天线88元,旧的50,新交换机45,旧的30左右。(古董级别的有线路由可能不支持ipv6)

有线路由器:和虎溪一样,是不能用路由器的拨号功能的,只能将路由器当做交换机使用,方法是(路由器无需设置),将端口网线接入路由器LAN口的任意一个,然后其他端口接到电脑上即可。这种方法对ipv6没有影响。这时和交换机是一样的了。

无线路由器:也不可以拨号,优点是可以减少很多看起来很麻烦的网线,缺点是端口冲突和ipv6的无线不支持等等,比较繁琐。

情况一、主线插WAN端口,经无线广播后,寝室同学电脑连接到路由器上,路由器除了无线加密外不要做其他事情,然后用Dr.com可以登录外网,寝室同学都可以用(也许有些无线路由不可以,将路由器重置就行了,一般是可以的),但是这样的缺点是无论怎么样都用不了ipv6了,一般路由器是不支持ipv6无线的,对于想用ipv6的同学就有些苦恼了

情况二、主线插在LAN端口,一般无线路由就只有四个LAN端口,主线占了一个就只有三个了,寝室就有个同学用不了,这就需要再买一个交换机,一想还不如一开始就买一个五口的交换机了,不过已经买了也没办法了,我这两天一直在探寻另一种方法,网上很多的都说把路由器MAC克隆,观点DHCP,但是照做之后依然不行,崩溃的我一气之下就把LAN口接一根到电脑上,然后登录使用,可以用,后来无意间掉了网线,用无线登录居然可以了,之前除了选用 公用网络 外没做其他设置,在试试ipv6一样可以,但是速度似乎只有一两M每秒,不太过硬,后来又用其他同学的实验都可以用了,我的无线路由是MERCURY   MW300R 300M 双天线的,在另一个TP-LINK无线路由器上使用也可以,所以说win7系统的一般是可以把已经当做交换机使用的无线路由正常使用得,ipv6也可以用。如果这样不可以的说明是路由器硬件不支持,就只有当做交换机用了或者用情况一的方法。

无线路由的设置:一般新路由连接之后会提示设置向导,很简单。但是要更改设置就得进入路由器设置页面了,连接到无线路由后在浏览器地址栏输入路由器ip 192.168.1.1或者192.168.0.1 登录账号是admin密码也是admin,进入设置页面,里边有相应的设置选项,大家可以摸索这玩玩儿,在无线设置里把SSID即广播的名称改了,加密,保存,重启就可以了,如果忘了密码可以长按路由器上的RESET重置路由器。

关于IPv6

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议“。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。IPv6的好处就是从IPv6网站上下载东西速度超快,一般有10M/S,资源齐全优异,高清MV 和最新的高清影视电视剧电影,各种软件系统资源;因为学校的计费系统隶属于IPv4,所以它不会计算IPv6的流量变换,大家可以放心使用,一个IPv6网站就相当于一个大型的虎溪共享平台,出名的有东北大学的 六维空间()和52v6.com,不过这些网站都需要有邀请码才能注册,并且账号的维护和管理比较麻烦,希望大家多多努力,关于邀请吗,可以找里边元老级的人物们索要或者等公开注册时间。

关于没账号是否真的就不能上网

在没有注册和流量用完又想上QQ人人、MSN和百度的同学们,是不是想找到一个可以蹭网的方法呢?我这里给大家提供一个方法,也就是用IPv6网来上IPv4的网,这需要一个软件veno,这是北京一家公司做的,所以用这个上网的话会显示异地 北京登录,属正常情况。软件安装重启电脑后,打开软件,新用户注册–>进入网页–>填入相关信息–>打开邮箱激活账号(此过程是在你登陆学校账号时才可以进行的)–>在veno里输入相关数据–>连接方式选IPv6–>连接 即可成功免费上网了~~,但是此种上网比较慢,只供聊天和简单的网页搜索用。

上网虽好,大家还是要少上啊,多做点有意义的事情吧!少打游戏多跑步,强身健体好上路!欢迎大家批评指正!文/白痴之家

转载请保留本文出处链接地址:http://mtoou.info/cqdx-xiaoyuanluyouqi/