LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

LOFTER-网易轻博

程序设计

895浏览    243参与
蓝天白云
万书汇

C++ Primer 中文版(第6版) PDF mobi 电子书 下载

C++ Primer 中文版(第6版)

[图片][图片]

作者: [美] Stanley B. Lippman / [美] Josée Lajoie / [美] Barbara E. Moo
出版社: 电子工业出版社
出品方: 博文视点
原作名: C++ Primer, 5th Edition
译者: 王刚 / 杨巨峰
出版年: 2013-9-1
页数: 838
定价: CNY 128.00
装帧: 平装
ISBN: 9787121155352

PDF 下载

mobi 下载

C++ Primer 中文版(第6版)


作者: [美] Stanley B. Lippman / [美] Josée Lajoie / [美] Barbara E. Moo
出版社: 电子工业出版社
出品方: 博文视点
原作名: C++ Primer, 5th Edition
译者: 王刚 / 杨巨峰
出版年: 2013-9-1
页数: 838
定价: CNY 128.00
装帧: 平装
ISBN: 9787121155352

PDF 下载

mobi 下载

万书汇

Java编程思想 (第4版) PDF mobi 电子书 下载

Java编程思想 (第4版)

[图片][图片]

作者:  [美] Bruce Eckel
出版社: 机械工业出版社
原作名: Thinking in Java
译者: 陈昊鹏
出版年: 2007-6
页数: 880
定价: 108.00元
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111213826

PDF 下载

mobi 下载

Java编程思想 (第4版)


作者:  [美] Bruce Eckel
出版社: 机械工业出版社
原作名: Thinking in Java
译者: 陈昊鹏
出版年: 2007-6
页数: 880
定价: 108.00元
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111213826

PDF 下载

mobi 下载

万书汇

C程序设计语言 第2版·新版 PDF mobi 电子书 下载

C程序设计语言

[图片][图片]

作者: (美)Brian W. Kernighan / (美)Dennis M. Ritchie
出版社: 机械工业出版社
副标题: 第 2 版·新版
原作名: The C Programming Language
译者: 徐宝文 / 李志译 / 尤晋元审校
出版年: 2004-1
页数: 258
定价: 30.00元
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111128069

PDF 下载

mobi 下载

C程序设计语言


作者: (美)Brian W. Kernighan / (美)Dennis M. Ritchie
出版社: 机械工业出版社
副标题: 第 2 版·新版
原作名: The C Programming Language
译者: 徐宝文 / 李志译 / 尤晋元审校
出版年: 2004-1
页数: 258
定价: 30.00元
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111128069

PDF 下载

mobi 下载

万书汇

计算机程序的构造和解释(原书第2版) PDF mobi 电子书 下载

计算机程序的构造和解释(原书第2版)

[图片][图片]

作者: Harold Abelson / Gerald Jay Sussman / Julie Sussman
出版社: 机械工业出版社
副标题: 原书第2版
原作名: Structure and Interpretation of Computer Programs
译者: 裘宗燕
出版年: 2004-2
页数: 473
定价: 45.00元
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111135104

PDF 下载

mobi 下载

计算机程序的构造和解释(原书第2版)


作者: Harold Abelson / Gerald Jay Sussman / Julie Sussman
出版社: 机械工业出版社
副标题: 原书第2版
原作名: Structure and Interpretation of Computer Programs
译者: 裘宗燕
出版年: 2004-2
页数: 473
定价: 45.00元
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111135104

PDF 下载

mobi 下载

柠檬花开

程序设计项目评价标准

(一)思想性、科学性、规范性 

1.主题明确,内容健康向上

2.科学严谨,无常识性错误

3.文字内容通顺;无错别字和繁体字,作品应采用普通话(特殊需要除外)

4.非原创素材(含音乐)及内容应注明来源和出处,尊重版权,符合法律要求


(二)创新性 

1.主题选择新颖,表达方式恰当

2.软件构思独特,功能创意巧妙

3.内容注重原创,操作切实可用

4.具有想象力及个性表现力


(三)艺术性 

1.命名恰当,含义表述准确,与功能符合度高

2.界面美观,设计风格和主题一致,交互操作简便顺畅

3.功能布局合理,用户体验好


(四)技术性 ...

(一)思想性、科学性、规范性 

1.主题明确,内容健康向上

2.科学严谨,无常识性错误

3.文字内容通顺;无错别字和繁体字,作品应采用普通话(特殊需要除外)

4.非原创素材(含音乐)及内容应注明来源和出处,尊重版权,符合法律要求


(二)创新性 

1.主题选择新颖,表达方式恰当

2.软件构思独特,功能创意巧妙

3.内容注重原创,操作切实可用

4.具有想象力及个性表现力


(三)艺术性 

1.命名恰当,含义表述准确,与功能符合度高

2.界面美观,设计风格和主题一致,交互操作简便顺畅

3.功能布局合理,用户体验好


(四)技术性 

1.技术路线合理,软件架构完整,体系设计清晰

2.程序算法准确,代码逻辑严谨

3.功能完整,运行稳定可靠

4.部署安装简便,升级维护灵活

5.成熟度高,完整解决问题,有实际意义

6.兼容性好,适配主流环境

7.运用先进技术,具有一定的探索性


hdw2000
hdw2000
小古比鱼
中华
小古比鱼
小古比鱼
柠檬花开

世界顶级的程序员们告诉你:这些书都是你应该读的



在很早之前就想整理一份来自经验丰富的顶级程序员推荐阅读的书籍清单,全栈工程师Dmitry Shvetsov整理了Bob叔以及Jeff Atwood and DHH等世界知名程序员曾经在博客中推荐过的书单,下面我们就一起来看看深受大神们青睐的书籍都是哪些?


Toptal公司副总裁Bozhidar Batsov在他的演讲中提到:作为一名程序员,需要掌握15本书:


《Inside the Machine》美亚评分 4.6


《代码大全》豆瓣评分 9.3


《具体数学》豆瓣评分 9.6


《计算机程序的构造和解释》豆瓣评分9.5


《程序设计方法(中文版)》 豆瓣评分 8....



在很早之前就想整理一份来自经验丰富的顶级程序员推荐阅读的书籍清单,全栈工程师Dmitry Shvetsov整理了Bob叔以及Jeff Atwood and DHH等世界知名程序员曾经在博客中推荐过的书单,下面我们就一起来看看深受大神们青睐的书籍都是哪些?


Toptal公司副总裁Bozhidar Batsov在他的演讲中提到:作为一名程序员,需要掌握15本书:


《Inside the Machine》美亚评分 4.6


《代码大全》豆瓣评分 9.3


《具体数学》豆瓣评分 9.6


《计算机程序的构造和解释》豆瓣评分9.5


《程序设计方法(中文版)》 豆瓣评分 8.7


Bozhidar认为,即使你有20年的编程经验,你也可以从上面的书中学到很多。


《算法设计手册》和《算法》可以让你对算法有更好的理解


想成为一名优秀的程序员一定要知道编译器是如何运行的《编译原理》


每个程序员都应该懂点C语言《C程序设计语言》豆瓣评分 9.4


《 UNIX环境高级编程(第3版)》豆瓣评分 9.5


《UNIX网络编程卷2》豆瓣评分8.3


这些书对于优秀的开发人员来说都是必不可少的,而对于使用面向对象语言的程序员,Bozhidar建议:


《测试驱动的面向对象软件开发》豆瓣评分 7.6


《领域驱动设计》 豆瓣评分 8.1


《编程格调 》原版豆瓣评分9.4


众所周知Robert C. Martin,也就是Bob叔是一大名鼎鼎软件工程师、作家、讲师等,其《代码整洁之道》相信许多程序员都拜读过,那么,他会推荐什么书呢:


《设计模式》 豆瓣评分9.1


《计算机程序的构造和解释》 豆瓣评分 9.5


《计算机程序设计艺术》 豆瓣评分 9.5


《图灵的秘密》 豆瓣评分8.8


《重构》 豆瓣评分 9.2


《解析极限编程》豆瓣评分 8.2


《Redshirts》 豆瓣评分 8.4


《”Bobiverse“三部曲》


Jeff Atwood,Stack Overflow和Discourse的联合创始人,他也分享了一些推荐给开发者的阅读清单:


《代码大全(第2版)》 豆瓣评分 9.3


《人月神话》 豆瓣评分 9.0


《点石成金 : 访客至上的Web和移动可用性设计秘笈》 豆瓣评分 8.2


《快速软件开发》 豆瓣评分 8.5


《人件》 豆瓣评分 8.2


《设计心理学》 豆瓣评分 8.2


《About Face 4: 交互设计精髓》 豆瓣评分 8.6


《软件创新之路》 豆瓣评分 8.5


《编程珠玑》 豆瓣评分 9.1


《程序员修炼之道》 豆瓣评分 8.8


《Web可用性设计》 豆瓣评分 7.8


《正则表达式经典实例》 豆瓣评分 7.0


《The Visual Display of Quantitative Information》 豆瓣评分 9.1


《Visual Explanations》 豆瓣评分 8.6


《Envisioning Information》 豆瓣评分9 9.0


《Beautiful Evidence》 豆瓣评分 8.8


《软件研发之道》 豆瓣评分 8.2


David Heinemeier Hansson,又名DHH, Ruby on Rails的创建者,Basecamp的创始人兼CTO,作家和演说家,分享了对他来说最重要的5本书:


《Smalltalk Best Practice Patterns》


《重构》 豆瓣评分 9.2


《企业应用架构模式》 豆瓣评分 8.3


《领域驱动设计》 豆瓣评分 8.1


《你的灯亮着吗?》 豆瓣评分 8.1


《风格的要素》 豆瓣评分 8.2


《写作法宝》 豆瓣评分 8.5


这份书单里,有没有你最喜欢的书呢?如果没有,留言告诉我们对你影响最大的书籍有哪些?


作者:程序员书库


来源:


https://medium.com/@shvetsovdm/essential-books-that-every-programmer-should-read-a61565095781


柠檬花开

每个编程语言都是用来开发什么?

用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。理论上任何语言干任何事情几乎都可以, 但是主要干什么那就不一样了。

对于刚步入IT行业的小白,或许只知道某一语言相对应的薪资是多少,但却不知道主要是做什么的,更不会考虑到以后的职业发展方向问题。以下将对编程语言进行详细的讲解。


C和C++


C/C++理论上说可以做任何开发, 只要有合适的硬件驱动和API,特点是效率高,基本上...



用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。理论上任何语言干任何事情几乎都可以, 但是主要干什么那就不一样了。

对于刚步入IT行业的小白,或许只知道某一语言相对应的薪资是多少,但却不知道主要是做什么的,更不会考虑到以后的职业发展方向问题。以下将对编程语言进行详细的讲解。

 

C和C++

 
 

C/C++理论上说可以做任何开发, 只要有合适的硬件驱动和API,特点是效率高,基本上是编译语言里面效率最高的。除非你的系统中连C/C++编译器都不具备. 某些系统当中C++编译器是不具备的, 但是C一般都具备. 目前而言, C语言主要用来开发底层模块(比如驱动,解码器,算法实现), 服务应用(比如web服务器)和嵌入式应用(比如微波炉里的程序). C++也可以做这些, 不过由于C++的复杂性和标准问题, 人们还是更愿意使用C来做. C++更适合比较复杂但又特别需要高效率的设施,比如大型游戏,一些基础库, 大型桌面应用。

  

总结:

C: 系统底层, 驱动, 嵌入式开发.

C++: 游戏开发, 大规模, 高性能, 分布式要求的程序开发。



JAVA

 

java常常跟”企业”联系在一起, 因为具备一些很好的语言特性, 以及丰富的框架, 在企业应用中最被青睐, 你总可以听到关于J2EE, JSP, Hibernate之类的东西的讨论. 同时, java在手机领域也有一席之地, 在普遍智能化之前, 很多手机就是以支持java应用作为卖点的, 而智能手机爆发之后, java手机主场变成了android, 作为安卓的标准编程语言而存在。

 

总结: 

Java: 网页, 企业级开发, 普通应用软件, 游戏后台。

链接:

https://pan.baidu.com/s/1HcnLcJkleCMeAmdil6J7Yw

提取码:vqun 


JavaScript 

Javascript听起来跟java有关系, 其实并没有任何关系, 只是名字像而已.就好比雷峰塔和雷锋的关系一样,虽然只差一个字。 js最广泛的应用毫无疑问是在web前端. 简单的说, 网站给你传过来的是一堆用各种标签表示格式的文档, 而js负责操纵这些文档实现一些客户端动态效果. js的领地还不仅如此, 现在的Node.js还可以用于服务器端的开发。

总结:

JavaScript是浏览器的脚本语言,一般和Html,CSS这些一起学,主要做网站的前端开发,展现各种酷炫的画面。
链接:
https://pan.baidu.com/s/1ek3eurUrnn1n1rOEoze1Aw
提取码:iq6x

PHP

php这三个字你常常会在浏览器地址栏里看到, 所以不意外php是用来开发网站的. 也是web后端的王者语言.无数的网站后端都运行着php代码。 

总结: 

PHP:主要是网络前端,用于生成网页。也可以整个web服务器都用php,比如很多论坛引擎。

链接:

https://pan.baidu.com/s/1UbOrNHaTPJhTm6n06nI_JA   

提取码:grcy  

Python

Python由于具有丰富和强大的库,它又叫做作胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。Python是做服务器开发与物联网开发。信息安全,大数据处理,数据可视化机器学习,物联网开发,各大软件的api,桌面应用,都需要python。

总结: 

Python:动态解释型,开发效率高,开源,灵活,入门门槛低。

链接:

https://pan.baidu.com/s/1OQzxRhqUq-d6RJs2zcvqEQ 

提取码:1dr5 


资料来源:资料在线公众号

 

小古比鱼
小崔

[Windows程序设计(第2版)].王艳平.扫描版.pdf

[Windows程序设计(第2版)].王艳平.扫描版.pdf


下载地址:下载: [Windows程序设计(第2版)].王艳平.扫描版.pdf

[Windows程序设计(第2版)].王艳平.扫描版.pdf


下载地址:下载: [Windows程序设计(第2版)].王艳平.扫描版.pdf

小古比鱼

193、小古比鱼重回洛谷后的成就分享、洛谷网站简介、近期编程的心得体会与部分程序展示

原文发布日期:2016-12-17

【注】小古比鱼到目前为止所编写的大部分C程序和VB程序,均以图片的方式保存在小古比鱼的博客相册《C程序》《VB程序》中。小古比鱼的洛谷用户空间地址:http://www.luogu.org/space/show?uid=7041

       今天是小古比鱼在洛谷连续打卡的第99天。今年9月17日,即中秋节小长假的最后一天,小古比鱼重回洛谷网站(详见第172篇日志),到今天为止,小古比鱼重回洛谷已经整整三个月了。记得自从去年秋天通过了计算机二级有关C语言的考试之后,小古比鱼便很少去...

原文发布日期:2016-12-17

【注】小古比鱼到目前为止所编写的大部分C程序和VB程序,均以图片的方式保存在小古比鱼的博客相册《C程序》《VB程序》中。小古比鱼的洛谷用户空间地址:http://www.luogu.org/space/show?uid=7041

       今天是小古比鱼在洛谷连续打卡的第99天。今年9月17日,即中秋节小长假的最后一天,小古比鱼重回洛谷网站(详见第172篇日志),到今天为止,小古比鱼重回洛谷已经整整三个月了。记得自从去年秋天通过了计算机二级有关C语言的考试之后,小古比鱼便很少去做洛谷网站的编程题目了,还于去年10月18日后正式退出了洛谷。自那之后,虽然小古比鱼偶尔还会到洛谷打卡签到,但却再也没有提交过任何程序,平时也极少再去编程,直到今年9月17日当天,小古比鱼一时心血来潮,在洛谷网站提交了2个新程序,由此便开始了自己新一轮的编程之旅。

       这次重新回归编程领域,小古比鱼的重点放在了C语言的编程上,直接原因就是因为洛谷网站支持C语言。三个月的时间过去了,小古比鱼在洛谷网站也取得了很大的成就,请看:


【注】上图中“提交”上面的数字代表累计提交程序的次数,而“通过”上面的数字则代表累计通过的题目数

       大家可以看到,截止到今天为止,小古比鱼在洛谷累计提交程序202次,目前已通过了洛谷网站的整整50道题目;贡献值为43,活跃度为672,积分为1137(当前等级为“大犇”,并且即将升级为“神牛”);现已获得了橙色用户名(简称橙名,动态等级为“刷题健将”)。大家可能会想:小古比鱼在洛谷累计提交程序202次,但通过的题目数仅有50道,是不是意味着小古比鱼的通过率仅有不到25%呢?显然不是,首先,由于二者的单位不统一,因此计算比值实无多大意义;其次,对于洛谷的绝大多数题目,小古比鱼都有不止一次的提交记录,即使对于已经通过的题目,小古比鱼也很可能会对提交过的程序做进一步的修改,或是编写一个新的程序来实现题目中的要求,之后再度提交。因此,小古比鱼认为,提交次数的增多并不意味着通过率的降低。为了使大家更好地了解洛谷网站以及上述各项数据背后的含义,下面小古比鱼将对洛谷网站的基本情况及其各项机制向大家做一个简单的介绍。

       洛谷网站(http://www.luogu.org/)被誉为“富有亲和力的信息学在线学习网站”,创建于2013年6月15日,现已发展成为具有数万用户(用户的代号以字母U开头)和260余个团队(团队的代号以TEAM开头)的在线评测系统,深受广大编程爱好者的喜爱,同时也是尚处在学习阶段的朋友们的最佳选择。洛谷3.0版于2016年4月2日正式上线,增加了不少新功能,也完善了之前版本中的部分漏洞。小古比鱼在第172篇日志中曾提到过,洛谷常会举办一些比赛(比赛的编号以CON开头),有官方性质的比赛,也有团队和个人举行的比赛,不过现在看来,小古比鱼对此并不感兴趣,因而现阶段还是以做试炼场中的题目为主,偶尔也会随机选题来进行编程。

       下面我们来说说洛谷的题库和评测系统。就题库而言,洛谷有一个公共题库(题目的序号以字母P开头。大家在小古比鱼的博客相册《C程序》中,可以看到部分截图的描述里有类似“【P1001】”的字样,这表明该程序是小古比鱼解答洛谷网站中的题目时编写的程序,方括号里的内容即为题号),而每个用户还可创建个人题库(题目的序号以字母T开头。到目前为止,小古比鱼还从未上传过任何题目,同时也从未做过其他用户个人题库中的题目),把自己认为比较好的编程题目上传到洛谷与大家分享,同时还可以申请将其加入公共题库。洛谷的公共题库现包含有2400余道难度不等的编程题目!由此可见,到目前为止,小古比鱼获得通过的题目仅占公共题库题目总数的2%!前途任重而道远。除少数题目暂无评定外,公共题库中的绝大多数题目都有一套评测系统,可以对我们提交的程序进行评测,并将评测结果(序号以字母R开头)反馈给我们。那么,这个评测系统究竟是如何进行评测的呢?小古比鱼在刚刚注册洛谷的那一段时间内,也曾思考过这个问题,当时总认为一定是基于非常复杂的原理才设计出来的,其实不然,评测的方法非常之简单——洛谷的每道题目都由该题的提供者提供一系列的输入及其对应的输出结果,我们将其称为“测试点”,通俗地说也就是本题在几个不同的输入情况下相对应的正确答案,评测时,就是看我们所提交的程序在相应的输入下,其运行结果是否与这些正确答案相吻合,如果全部吻合,我们就可以得到100分,同时意味着通过了该题;若是仅有半数的运行结果与答案相吻合,那么得分便是50分。需要指出的是,对于任何一道题目,只有在所有的测试点全都通过,即拿到100分的情况下,该题才算通过(即Accepted),其余情况下均被视为不通过(即Unaccepted)。请看如下评测结果:

A


B


C


D


       在图A所示的题目中,提供者为我们提供了4个测试点,但评测结果显示,只有1个测试点通过了,即注有AC(即Accepted)的那个测试点,而其余的测试点均未通过,因而该题只能拿到25分。其中,注有WA(即Wrong Answer)的那个测试点表示答案错误,而注有TLE(即Time Limit Exceeded)的两个测试点则表示超出了运行时间限制(洛谷一般限制每个测试点的运行时间不得超过1秒)。同理,图B中的20个测试点有10个通过,故得分为50分;图C中的10个测试点全部通过,因而得分为100分,即通过了该题;图D中的5个测试点均注有RE(即Runtime Error),这表示程序在运行时发生了错误(如返回值非0等),因而得分为0。当然,如果我们所提交的程序在编译的过程中便出现了问题(此时会提示Compile Error),显然就更谈不上测试点是否能通过了,这时的得分也必定是0分,我们在第172篇日志中也曾粗浅地讨论过这个问题。这就是洛谷的评测系统,是不是很简单?

       大家或许会问:如果洛谷的题目太难,想不到合适的解题方法该怎么办?不必担心,洛谷的每一道题都有一个叫做“题解”的模块,里面包含有很多用户提供的各类题解,如果我们实在想不出好方法来解题,就可以参考这些题解。但是,小古比鱼认为,参考题解不仅会降低自己的思维能力,使我们对其产生依赖,同时也大大削减了做题本身所具有的趣味性。因而,小古比鱼总是在通过了某道题目之后,再去参考该题的题解,这样既可以了解其他用户的解题思路,吸取他人的优点,同时也能使自己的编程水平得以提升。除此之外,洛谷还允许用户下载题目中未通过的测试点的数据,以便于用户根据其测试点的数据进一步调试并完善自己的程序,从而顺利通过该题。当然,下载的次数是有限制的,这点我们在下文中再做介绍。

       与网易博客和爱拍网站类似,洛谷同样也有积分和等级的设置,而积分则与活跃度、贡献值以及通过的题目数这三者相关。具体而言,有如下公式:

积分=活跃度+(贡献值+通过题目数)×5

       从公式中不难得知,我们每通过一道题目,积分便会增加5分。那么,活跃度和贡献值又是怎么回事呢?事实上,日常的打卡或是对题目进行评价都会使活跃度得以提高,而贡献值则需要通过撰写题解或是上传新的题目到公共题库来获得,显然,贡献值的获取难度较大,因为无论是撰写题解还是上传题目,都需要在通过洛谷管理员审核的前提下,才能拿到相应的贡献值。到目前为止,小古比鱼的活跃度主要来源于打卡,而贡献值则全都是通过撰写题解获得的(因为小古比鱼到目前为止还没有上传过任何题目)。值得说明的是,洛谷只允许每个用户对任意一道题目贡献1条题解,倘若多次提交某道题目的题解,即使审核通过,也会覆盖(刷新)掉之前通过的那条题解,同时贡献值也不会再增加。这从另一方面也说明,在通过的50道题目中,小古比鱼已经撰写并通过了其中43道题目的题解!由于现在仍有3道题目的题解处在审核过程当中,因此,如果它们也全都通过的话,就意味着小古比鱼所撰写的题解的通过率达到了90%以上!

       下面是洛谷网站积分和等级的对应关系:

   积分              等级

0~10               蒟蒻

11~30           小小牛

31~60           小小犇

61~100           小牛

101~180         小犇

181~280         中牛

281~460         中犇

461~740         大牛

741~1200       大犇

1201~1980     神牛

>1980             神犇


       大家最感兴趣和最关心的,要数洛谷的动态等级了,它与用户名的颜色相关,却与我们刚刚所介绍的那个等级不同。动态等级是根据用户在近一段时间内的活跃程度(如打卡、提交程序或是撰写题解等),综合各项指标来进行评定的,因其随时会有变动而得名。不幸的是,洛谷对于动态等级的评定算法并不公开,同时也不允许用户在讨论中过多地谈及有关用户名颜色的问题。下面是洛谷动态等级与用户名颜色的对应关系:

     动态等级              用户名颜色

0:见习用户                  灰名

1:普通用户                  蓝名

2:算法爱好者               绿名

3:刷题健将                  橙名

4:虐题狂魔                  红名


       那么,动态等级又有什么用呢?事实上,当用户的动态等级较高时,其所享有的权利也会随之增多,我们上面所提到的打卡以及评测点的下载便是与此直接相关的——用户在不同的动态等级下,打卡所获得的积分也不同,而24小时内可以下载的评测点数据的次数也不同。举例说明:如果某用户为蓝名,那么他打卡一次只能获得1活跃度,24小时内也只能下载1次测试点的数据;如果另一个用户是红名,那么他打卡一次就可以获得4活跃度,24小时内也可以下载4次测试点的数据。洛谷还指出:如果用户长时间不使用洛谷或者有违规行为,就可能会降级;但除非用户有严重的违规行为,否则用户只要达到蓝名,就不会再掉回到灰名

       如果没有记错的话,小古比鱼是在连续打卡第91天的时候获得了橙名。其实,只要小古比鱼能保持住“刷题健将”这一动态等级,并且坚持打卡,那么每天便可获得3活跃度,即3分的积分;如果每周通过2道题目,并且为这2道题目撰写的题解也均能通过审核的话,那么小古比鱼每周便可拿到3×7+5×2+5×2=41分的积分!照这种速度,小古比鱼在半个月之后便可跃升为“神牛”等级,而到达洛谷的最高等级“神犇”,也只需要五个月左右的时间!当然,这些都是以小古比鱼不离开洛谷,并且坚持每天打卡、每周刷题和撰写题解作为前提的。

       下面小古比鱼再为大家介绍一下洛谷的试炼场。目前,洛谷试炼场总共有六个大关,其中除了第五大关“NOI神殿”现仍处于建设当中,尚未开放以外,其他的每个大关都有不少小关,每个小关就是一个关卡,其中又包括一定数量的题目。上文中我们提到,对于洛谷题库中的任何一道题目,只有当其所有的测试点全都通过时,该题才算通过;但是,对于洛谷试炼场中的绝大多数关卡,只要我们通过了其中的任意3道题目,便可以点击该关卡下方的“关卡完成了!”按钮(当然也可以不点这个按钮),从而完成该关卡。部分关卡有先决条件,需要我们先完成某些特定关卡后才可解锁。另外,如果我们没有能力完成某一关卡,还可选择跳过该关卡,但最多只能跳过3个关卡。下面是小古比鱼的相关动态:





       到目前为止,在试炼场的所有关卡中,小古比鱼已通过了整整10个关卡,并且还未跳过任何关卡。通过的这10个关卡分别属于第一大关、第二大关和第六大关。其中,在第一大关“新手村”中,小古比鱼只剩下了最后的关卡1-8还未完成,这是由于关卡1-8虽然只有3道题目,但其中的“Function”一题难度较大,小古比鱼目前还未找到合适的解题方法,因而这一关恐怕还需要一段时间才能完成。下面是小古比鱼完成各关卡的情况记录:


小古比鱼完成洛谷试炼场中各关卡的情况记录

【注】本记录截止到2016-12-17。 

  1、2015-05-23:完成关卡1-1,该关卡共3题,现已通过3题。

  2、2015-06-07:完成关卡1-2,该关卡共3题,现已通过3题。

  3、2015-06-28:完成关卡1-3,该关卡共6题,现已通过6题。

  4、2016-09-16:完成关卡1-4,该关卡共4题,现已通过4题。

  5、2016-09-16:完成关卡1-5,该关卡共6题,现已通过6题。

  6、2016-10-21:完成关卡1-6,该关卡共4题,现已通过3题。

  7、2016-11-11:完成关卡6-1,该关卡共4题,现已通过4题。

  8、2016-11-12:完成关卡2-1,该关卡共6题,现已通过5题。

  9、2016-11-26:完成关卡1-7,该关卡共4题,现已通过4题。

10、2016-12-14:完成关卡2-2,该关卡共5题,现已通过5题。

……


       关于洛谷网站,小古比鱼就给大家介绍到这里。下面小古比鱼要和大家分享一些编程的技巧。看过小古比鱼第172篇日志的朋友们一定都知道,小古比鱼编写的程序总是在某些方面显得与众不同,虽然其中的一些写法甚至违反了编程的常规,即我们平时所说的“耍小聪明”,但小古比鱼本人却特别偏爱在这些细节之处做文章。记得在这次重回洛谷的半个月前,小古比鱼曾编写了一个名为“幻幻球单次射击主体得分计算”的程序。现在想来,或许就是这个程序燃起了小古比鱼新一轮编程的热情!然而,由于当时长时间未编程的缘故,小古比鱼对于编程过程中各类技巧的使用,甚至连最基本的运算符和语句都有所淡忘,因而,小古比鱼只能循规蹈矩地进行编程,而“幻幻球单次射击主体得分计算”这个程序虽然看上去比较长,但却非常易于理解。如今,经过三个月的不断练习,小古比鱼不但将已然遗忘的知识重新拾起,还找回了从前编程的那份目无全牛的感觉,因此,现在小古比鱼所编的程序运用到的技巧非常之多,只是在可读性方面,反倒不如初回洛谷的那段时间所编出的程序要强!下图是小古比鱼的程序“幻幻球单次射击主体得分计算”。


       大家或许会问,小古比鱼现在编程时,到底遵循的是什么样的原则呢?其实,小古比鱼所遵循的原则也很简单,那就是:在基本满足C语言编程规范的前提下,最大限度地使程序看上去显得简短、精炼,并且要体现出独特之处。其主要有以下几点:

1、尽可能少地使用大括号;

2、尽可能少地使用if、else、break、continue语句;

3、尽可能少地使用变量;

4、尽量优化算法;

5、用好宏定义。

       以上几点说起来容易,但做起来却并不简单,需要对C语言熟练掌握后方能应用自如。小古比鱼逐一进行解释和举例:

1、尽可能少地使用大括号。

       严格来讲,这点违反了C语言的编程规范,但从某种意义上说,它又可以使小古比鱼的程序变得简短许多。常来阅读小古比鱼程序的朋友们不难发现,在小古比鱼所有的程序中,几乎都有这一点的体现。事实上,我们只要语句进行压缩使用复合语句,或是采用调整语句顺序的方式,使得for、while、if等语句模块中仅含有一条语句,这样便可省略掉本应有的一对大括号。如下程序“给定区间内的回文质数(2)”是一个最为典型的例子,该程序中,小古比鱼省略掉的大括号多达15对。想象一下,如果把这些括号全都加上的话,虽然符合了编程规范,但程序将会加长30行。


2、尽可能少地使用if、else、break、continue语句。

       小古比鱼认为,对于程序中较为简单的if语句和else语句,可以通过使用条件运算符“? :”,获是采用直接将关系表达式嵌入到赋值语句中的方式来代替。举一个最简单的例子,对于如下的条件语句块:

if(a>0)

{

    b=b+1;

}

       小古比鱼会将其改为:

if(a>0)

    b++;

       进而改为:

b=a>0?b+1:b;

       最后改为:

b+=a>0;

       就是这么简单!至于break语句和continue语句,若是在循环语句块中,则完全可以通过修改循环条件的方式来避免;若是在switch语句块中,小古比鱼往往在最后一条case语句或是default语句之后再添加break语句。如下的几个程序“斐波那契分数列的求和”“纸牌的平均分配”“小鱼是否有危险”和“字符串的展开”中,小古比鱼多次通过上述方法减少了if、else、break、continue语句的使用:





3、尽可能少地使用变量。

       要想做到这一点,小古比鱼的方法有两个:其一是不声明不必要的变量,其二是重复利用不再使用的变量。例如,在如下程序“求两数之和”和“哥德巴赫猜想的验证(升级版)”中,小古比鱼通过在函数中嵌入表达式的方法,减少了不必要的变量的声明;而在上文中的程序“纸牌的平均分配”,以及下面的程序“多多采花生”和“字母柱状统计图”中,小古比鱼分别对变量i、变量I、J和变量c进行了重复利用。还有上下文中的不少程序,小古比鱼采用“while(n--)”这样的写法,避免了多余的循环变量的声明。







 

4、尽量优化算法。

       这一点的意义想必大家都有所体会。对于同种功能,实现的方法可能有很多种,虽然它们殊途同归,但其间的差异往往不可同日而语。请看如下三个鲜明的对比:上文中的程序“给定区间内的回文质数(2)”和下面的程序“给定区间内的回文质数”,虽然前者的代码较长,但其运行的时间比后者要短得多;程序“火车上的人数”与“火车上的人数(2)”,后者的代码比前者要简洁许多,运行的时间也有所减少;程序“由1—9组成的3个三位数”“由1—9组成的3个三位数(2)”和“由1—9组成的3个三位数(升级版)”,三个程序的功能类似(前两个程序的功能完全相同),但算法完全不同,实现的功能以“由1—9组成的3个三位数(升级版)”最为高级,但代码却最为简单。不过说老实话,这个程序中的算法小古比鱼是借鉴了题解的。







5、用好宏定义。

       这点小古比鱼不作过多解释,只给大家展示一个最为典型的例子——在如下程序“烤鸡配料的配比”中,小古比鱼通过宏定义的使用使程序变得非常简洁。倘若不使用宏定义,并且在所有的for语句中添上大括号,那么程序可能将会加长近60行!


       关于这些技巧,小古比鱼在这三个月以来想了很多,诸如直接在主函数的return语句中使用printf()函数输出结果啦,如何采取各种方法避免使用类似“for(a=0;a<n;a++)”这样传统的写法啦,等等。虽然这些看似奇怪的技巧和做法在大家看来或许难以理解,但小古比鱼却将其作为编程的一大乐趣,平时也往往会在编程过程中不自觉地加以运用。至于这样做究竟是利大于弊,还是弊大于利,那就由大家来评判吧!下面小古比鱼给大家展示两个近期所编的程序“13日是星期几(2)”和“最大公约数与最小公倍数(2)”,这也是小古比鱼认为自己对于上述技巧运用最多的两个程序:



       不难体会,上面的第一个程序还勉强算作合格,但第二个程序未免太过精简,已然不满足小古比鱼所说的“基本满足C语言编程规范”的前提!因此,类似这样的程序小古比鱼在今后也不会编得太多,但对于上面的第一个程序,小古比鱼认为还是很有价值的,而且似乎还能进一步精简……不管怎样,虽然程序本身的代码变得精炼了,但小古比鱼在写程序的注释方面却丝毫没有偷工减料;恰恰相反,现在小古比鱼所编的几乎每一个程序都有很详细的注释,尤其是对于洛谷网站的题目,小古比鱼还要力求在注释中完全反映出题目本身的背景和要求,以便让那些没有看过题目的读者也能够很清楚地了解到程序所实现的功能。大家可能已经发现,当在程序代码的后面写注释无法把题目描述清楚的时候,小古比鱼会在程序结束后空一行,写一条以“说明”为开头的注释,进一步描述遗漏的题目背景和要求;更有的时候,小古比鱼还会写一条以“解析”为开头的注释,说明该程序的解题思路,这些在上下文所展示的程序中都有所体现。可这么一来,详尽的注释未免与过于精简的代码发生了冲突,颇有喧宾夺主的感觉!当然,当二者发生冲突时,其中的一方必须做出让步,即要么注释写得不要太详尽,要么代码写得不要太精简!就是这样!以下三个程序“断链取珠”“教室里的通道”和“补贴与税收”中的注释都非常详细,其中程序“补贴与税收”编写于6天前,是小古比鱼今年重回洛谷后编写的最为复杂的一个程序——该程序前前后后共花费了小古比鱼十几个小时的时间,现虽然已通过评测,但其本身存在的漏洞仍不可否认。



       接下来,小古比鱼向大家介绍几位好友,首先不得不提的是博友ZomGraves,小古比鱼曾在第172篇日志向大家详细介绍过她的情况。近一段时间以来,她常来会看小古比鱼所编写的程序,并且不时提出一些建议,同时也给予了小古比鱼不少帮助,其中包括给小古比鱼提供了《华为C语言编程规范总则》的地址供小古比鱼参考。几天前,在看过小古比鱼的程序“高16位与低16位的交换”后,她建议小古比鱼用汇编语言来编写一下这个程序,以实现相同的功能,同时还告诉小古比鱼在C语言的环境下使用汇编语言的方法——只要利用“__asm”关键字即可!事实上,小古比鱼本学期正在学习一门课,叫“微机原理与接口技术”,这门课主要讲的就是汇编语言,而课本上也确实有那么一个小节的内容,讲述的就是如何在C环境下调用汇编模块,但由于这节内容并不属于大纲要求的范围,所以小古比鱼也从来没有注意过这部分。经好友ZomGraves提醒之后,小古比鱼认真研读了这节的内容,并尝试着在C语言中嵌入“__asm”关键字,来实现汇编语言的编程,果然和预期的结果一致!下面便是小古比鱼的程序“高16位与低16位的交换”以及用作试验的程序“汇编语言”。大家可以看到,在“汇编语言”这个程序中,小古比鱼分别用C语言和汇编语言实现了相同的功能——计算(A-1+B×2-D÷2)×(C+1)的值。在该程序中,小古比鱼特地将两种语言的实现方法写得几乎完全对应,还附上了详细的注释,为的是让大家能够更好地理解汇编语言。



       有了这个巧妙的方法,小古比鱼就可以用汇编语言来编写“高16位与低16位的交换”这个程序了!下面便是小古比鱼用汇编语言编写的程序“高16位与低16位的交换(2)”,只要嵌入一条汇编语句即可。但遗憾的是,该程序无法在洛谷网站通过,会显示编译错误,大概是由于洛谷暂不支持汇编模块的嵌入吧……


       小古比鱼在此还要向大家提一位好友——蓝天白云。在看过小古比鱼去年所写的那篇编程日志之后,他对此产生了很大的兴趣,并且也学起了编程,只不过他学习的是Pascal语言。他于去年9月19日注册了洛谷网站的账号,并正式成为了洛谷网站代号为U9780的一名用户。他在注册洛谷后两个月的时间里(确切地说,他是在2015年10月26日正式学习了编程之后),先后通过了洛谷的21道题目。当时,他还写了一篇日志初学Pascal语言经历介绍来介绍自己的编程经历。但可惜的是,自从去年11月18日之后,他便退出了洛谷,至今仍未回归,或许也是由于学业繁忙的原因吧。


       与好友蓝天白云退出洛谷相比,小古比鱼的好友Rufus,也即洛谷网站的管理员absi2011则是好久都没有来登录网易博客了。记得去年夏天小古比鱼刚刚入驻洛谷的那段时间,和好友ZomGraves一样,他也经常来看小古比鱼所编的C程序,尤其是洛谷网站的程序,由于他是洛谷网站的管理员,自然对这些题目非常熟悉,因而,他给小古比鱼提出的建议往往都是切中肯綮的。可是好景不长,由于洛谷网站添加好友的功能还未完善,而发送私信的系统也存在一些问题,因而,这一年多的时间里,小古比鱼都没能和他取得联系。不过,直到几天前小古比鱼才惊喜地发现,他并没有退出洛谷,而且就在一个月前,那里还出现过他的提交记录!因此,小古比鱼也希望可以尽快和他取得联系。相信,有了他的帮助,小古比鱼定会在洛谷走得更远!


       除了在洛谷答题,出于对C语言编程的浓厚兴趣,近期小古比鱼还加入了几个社会各界与C语言交流和学习相关的QQ群,与志同道合之士一起探讨C语言的奥秘。应小古比鱼的邀请,他们中的一些也注册了网易博客,maskpeople便是其中的一位,他是小古比鱼在“中北C语言交流群”(群号:346387858)中结识的好友。还有一些朋友在学习C语言的过程中碰到了困难,小古比鱼也会在群里细致地为他们答疑解惑。还有的时候,他们遇到了难题,不知怎样解答,小古比鱼还会为他们编写相应的程序,解决他们的困难,比如下面的程序“年龄与生肖”“复数的乘积”和“复数的乘积(2)”,便是小古比鱼帮助另一位朋友编写的程序,只不过,由于他还没有注册网易博客,所以他的昵称小古比鱼就不提了。在此,小古比鱼希望愿意与小古比鱼一起学习和讨论C语言编程的朋友们都能来注册网易博客,和小古比鱼一同挖掘C语言中的精髓所在!




       与C语言相比,对于VB,小古比鱼在这一段时间,乃至这一年多的时间里练习得就很少了,对于其中的一些技巧的使用,自然就更不像C语言那样游刃有余。不过,就在今年国庆节期间,小古比鱼还真编写过一个名为“数控钻床的加工”的VB程序,这个程序最初并不是小古比鱼想要编的,而是小古比鱼的父亲委托小古比鱼编的,因为这是他工作上的需要。事实上,小古比鱼之前从未编写过类似的程序,但这一次,小古比鱼不仅帮助父亲编好了这个程序,同时还实实在在地赚到了1000元钱!可见,编程这种技术活在现实生活中,确实还是有其用武之地的!下面便是小古比鱼所编的这个程序:


       除了上面提到的C语言、VB以及汇编语言之外,其实小古比鱼在这学期还学习了另外的两个编程软件,一个是大家可能非常熟悉的MATLAB,另一个是大家可能不太熟悉的MCGS组态软件。前者主要用于仿真和数学建模,而后者则更多地应用于工程控制。对于这两款软件,小古比鱼并没有仔细研究过,因此,在这篇日志中小古比鱼也仅用几张图片一带而过,大家只要对此稍有印象即可。下面的四张图片都是小古比鱼在学校做实验的时候截下来的,前两张是MATLAB,后两张是MCGS组态软件。原图可参见小古比鱼的博客相册《默认相册》





       小古比鱼的编程经历就给大家介绍到这里。在接下来的日子里,小古比鱼还会继续在洛谷网站做题,并遵守洛谷答题上限原则(详见第172篇日志),认真对待其中的每一道题目,尽可能想出两种甚至更多的方法来实现同一道题目中的要求,尤其是对于看似非常简单的题目,更要认真把每一条语句都编好,同时也要体现出小古比鱼特有的编程风格。说到简单题,小古比鱼计划将自己下一步的重点放在洛谷公共题库中较为简单的题目上,即多做一些简单的题目,在做题的过程中继续积累经验,不断总结技巧,这样循序渐进,难题也终归会变成简单题!同时,小古比鱼也建议有兴趣的朋友可以考虑来注册洛谷,和小古比鱼一起挑战试炼场中的习题。等到小古比鱼在洛谷的用户等级达到最高级“神犇”,并且通过的题目达到100道题的时候,或许也就是小古比鱼发布下一篇关于编程的日志的时候,届时,小古比鱼的编程水平一定又会比现在有大幅度的提高。在日志的最后,小古比鱼为大家推荐自己到目前为止发布过的唯一的一期与编程有关的爱拍视频——水仙花数的枚举,拍摄于去年暑假。等到明年寒暑假,小古比鱼可能还会给大家发布与编程有关的视频,敬请大家期待吧!

小古比鱼

172、入驻洛谷网站——小古比鱼的编程经历介绍与部分程序展示

原文发布日期:2015-06-22

       大家好!今天是端午节小长假的最后一天,小古比鱼借此机会给大家介绍一下自己的编程经历。说到编程,不知道大家有没有一种眼前一亮的感觉,事实上,编程也即程序设计,再说通俗些,程序可以理解为电脑中能完成一定功能的文件,而编程就是我们自己制作、开发这些文件的过程。当然,每个程序需要完成一定的功能,不然我们自然也没必要去开发这些程序。

       说到小古比鱼的编程经历,那要从去年(即2014年)10月份大一刚刚...

原文发布日期:2015-06-22

       大家好!今天是端午节小长假的最后一天,小古比鱼借此机会给大家介绍一下自己的编程经历。说到编程,不知道大家有没有一种眼前一亮的感觉,事实上,编程也即程序设计,再说通俗些,程序可以理解为电脑中能完成一定功能的文件,而编程就是我们自己制作、开发这些文件的过程。当然,每个程序需要完成一定的功能,不然我们自然也没必要去开发这些程序。

       说到小古比鱼的编程经历,那要从去年(即2014年)10月份大一刚刚开学的时候谈起,那时候,小古比鱼的课程表当中有一门课,名叫“C程序设计”,在还没上这个课之前,小古比鱼虽然也听说过“C程序”这个名词,但终究没有什么深入的了解和体会。后来,随着课程的推进,为了复习课上所学的内容,小古比鱼在自己的电脑上安装了相关程序“Microsoft Visual C++ 6.0”,小古比鱼的编程之旅由此开始。起初,小古比鱼只是单纯地将课本上的程序代码输入电脑,后来,在对C程序有了一定的了解之后,小古比鱼便尝试根据课本习题或实验中的要求自己编写C程序。在此过程中,小古比鱼对C程序的态度由一开始的了解逐渐转为喜爱,后来甚至到了迷恋的程度!于是,小古比鱼创建了博客相册《C程序》,每次在编完一个C程序后,小古比鱼都会将此程序的全部代码和运行结果截图,并上传到此相册中,而在相片描述中,小古比鱼会写明该程序的编写日期。记得那段时间,大概也就是在去年12月份,小古比鱼每到周末回家之后,都会编写自己的C程序,虽然编写的程序大多并没有什么用处,有些单单是小古比鱼为了复习所学的某些特定知识而随意编写的程序,但小古比鱼仍旧对编程有着极大的兴趣,即使在学校中,小古比鱼也会不时用手机打开自己的博客相册,仔细欣赏着自己编写的一个个程序。

       不过,也许是出于希望让自己的程序显得更有特色吧,小古比鱼编程时有一个习惯——不按常理出牌,换句话说,就是小古比鱼总希望在自己的程序中编写一些与众不同的东西,这些东西往往违反了编程的常规习惯及基本要求,让人啼笑皆非,例如:给变量取很长的或押韵的名字啦,主函数以返回非0值结束(一般情况下,主函数应返回0,以此“告诉”系统程序正常结束)啦,等等;还有一些程序甚至完全是为了“虐心”而编写的!这就更有趣了。当然,这些程序同样可以正常工作,其功能并不受影响,至少,在小古比鱼的电脑环境中是如此。这一点大家会在下面小古比鱼的程序中有所体会。那么,下面就让大家看几个小古比鱼自己编写的比较有代表性的C程序吧!大家如果想看更清晰的图片,或是更多的程序,请到小古比鱼的博客相册中去查看。

       下面的这个程序,名为“这是个C程序”,这是小古比鱼编写的第一个C程序,编写于2014年10月19日。虽然简单,但它标志着小古比鱼已然走入了“编程”这一高深的领域。

       下面的几个程序都是小古比鱼为了复习所学知识而编写的,并无特殊功能。对小古比鱼在上文中提到过的编写风格,在下面的几个程序中都有所体现。如:下面第一个程序中“奇怪”的宏定义和变量名(以下划线作为变量名),扎眼的超长语句和块注释中的内容;第二个程序中以“hippopotomonstrosesquippedaliophobia2”(不考虑末尾的2,改英文单词的意思是“长单词恐惧症”)作为变量名,匪夷所思;第三个程序以含有-ag后缀的英文单词作为变量名,而第四个程序则以含有-ug后缀的英文单词作为变量名等等,还有一些特别之处小古比鱼不一一向大家说明了。





       下面的两个程序,则不免令阅读程序者大为不快了!第一个程序包含了C程序中的很多关键字,且变量名难以分清;第二个程序更为复杂,大量使用了C程序中不提倡使用的goto语句。这两个程序由于在编写时要研究各变量每一步的值的变化,所以是小古比鱼花了不少时间才编好的,读来也令人头晕脑胀,需绞尽脑汁才能读懂程序。而小古比鱼只所以要编写这样的程序,其实也是为了复习相关知识,只不过这种方法比较独特而已。


       “C程序设计”这门课,小古比鱼只学一个学期,因而,上学期期末时,学校组织了这门课的毕业考试,也即期末考试。这时,出现了一件看似有趣而实则遗憾的事情——小古比鱼最终的考试成绩为99分!这个成绩按理说也相当不错了,只是,丢失的那1分究竟是因为什么原因呢?由于我们大学里面的期末考试不发卷子,所以小古比鱼自然永远也无法得知真相了。不过,据小古比鱼刚刚考完“C程序设计”时的回忆,丢失的那1分应该仅仅是因为小古比鱼在考试卷中将“++u”错写为了“--u”而造成的!这种错误在我们平时的考试中看似可惜,实则也很正常,然而,这次出错的背后却是另有隐情——小古比鱼只所以错写成了“--u”,其实是由于小古比鱼对自己以前所编写的某个程序中的一句“--u”印象过于深刻所致!这真是有些荒唐!不过,更荒唐的是,在考试卷中,这个地方写成“u++”也完全可以;另外,这个变量名“u”也完全是小古比鱼自己定义的,而且没什么意义,也就是说,小古比鱼完全可以在考试时将变量名定义成其他名字,这样这一错误应该就会避免了……好吧,这些就权当小古比鱼在给自己找借口好了。下面的程序就是所谓的让小古比鱼在考试中鬼使神差地将“++u”错写为了“--u”的“罪魁祸首”!


       大家可能会想,小古比鱼有没有编写过真正有用的程序呢?有的,例如,下面的程序就是小古比鱼自己编写的一个很有用的程序,可以实现产生任意随机数的功能,程序中的“嘟嘟”声和显示数字后快速消除的效果都是小古比鱼所得意的地方。


       今年寒假期间,小古比鱼因为贪玩,所以没怎么编程。不过,在寒假快结束之时,小古比鱼在如鹏网上下载了“C语言也能干大事”系列教学视频,记得好像一共有七集,小古比鱼只看了前两集,以后有机会争取把其余的五集都看完。与小古比鱼在上学期中所学的内容不同,该视频系列介绍了C语言中制作系统信息窗口和制作用户界面的一些知识。以下的两个程序,都是小古比鱼在看了“C语言也能干大事”的视频后编写的,程序内容都很有意思。




       在这个学期中,小古比鱼虽然没有了“C程序设计”这门课,但本学期的“计算机软件基础”一门课却也涉及一些C语言的内容,其主要是集中在算法和数据结构这一部分,小古比鱼在此就不多说了。以下是小古比鱼在学习了“计算机软件基础”这门课后编写的两个最为复杂的程序,分别用作进制转换和排序。大家大致浏览一下即可。



       除了“计算机软件基础”,这学期小古比鱼还有一门课程,名为“面向对象的程序设计”,其实也就是VB程序的设计。这是一门不同于C程序的另一种程序语言,其更注重于用户界面的设计。事实上,小古比鱼编写VB程序的历史可以追溯到2012年!这或许令大家不可思议,但事实就是这样!细心的朋友可能在小古比鱼的博客相册《VB程序》中找到过这个程序。那时小古比鱼还在上高一,在2012年5月10日那天下午,学校上电脑课,老师向我们讲授了有关编程的知识,此后便由我们自由编程。其实,那时小古比鱼根本不懂编的是什么叫做“VB”的程序,也不知道老师为什么要教我们这些内容(因为当时的计算机期末考试根本不涉及编程这方面的知识),因而也就是稀里糊涂地编了那么一个程序。不过在今天看来,这个程序最重要的是它的纪念意义!下面便是小古比鱼当时所编的那个程序,名为“Form1”。

       如果不考虑3年前编过的这个VB程序,那么小古比鱼本学期所编的第一个VB程序是在今年3月22日,也即刚开学不久,那天为了复习所学过的变量知识,小古比鱼编了一个比较搞怪的VB程序,以新仙剑奇侠传的游戏图标作为该程序的图标,见下。

 


       小古比鱼个人感觉,与C程序相比,VB程序要简单一些,不过应用领域也不如C程序广泛,在此小古比鱼就不跟大家详细介绍了,不过小古比鱼所编写的VB程序也都是很经典的,其程序窗口大多都颇为赏心悦目,大家有兴趣的话可以到博客相册中去查看小古比鱼所编写的部分VB程序。在这里,小古比鱼再给大家展示两个自己编写的比较有代表性的VB程序:



       说到这里,小古比鱼要向大家介绍一位好友了,这位好友名为ZomGraves,是个名副其实的编程爱好者。她也拥有自己的网易博客,其日志绝大多数是与编程有关的。然而,小古比鱼认识她还不是在小古比鱼学了编程之后,而是早在大约2012年底的时候,一次学校上机课,小古比鱼闲来无事,就查找有关植物大战僵尸的资料,偶然间进入到了她的博客,发现她也爱玩植物大战僵尸,并且是植物大战僵尸游戏开发者Laura的粉丝(Laura和她的丈夫George共同参与了植物大战僵尸的制作),当时她在博客中说自己忙着寻找有关Laura的资料,不过小古比鱼并不在意这些,只是记得当时在她的一篇博客日志当中了解到了一首歌曲,歌名是“Everything's Alright”,还可以,后来下载了下来。除此之外,令小古比鱼印象深刻的还有这位朋友玩植物大战僵尸的玩法:她极偏爱用西瓜投手,在她玩植物大战僵尸游戏的绝大多数截图中,都能看到西瓜投手和冰西瓜的身影。


       不过,在学编程之前,小古比鱼和ZomGraves虽然是博友,却并没有过太多的联系。直到去年小古比鱼学了编程,并且创建了相册《C程序》后,在去年11月初,她来访小古比鱼的博客相册,得知小古比鱼也学习了编程,自那之后,小古比鱼和她的联系就比之前密切了许多,她成为了小古比鱼博客的常客,经常来浏览小古比鱼的程序,不论是C程序,还是VB程序。有时,她会写一些评论,说说自己的感受和建议,或是和小古比鱼交流一下彼此在校的学习内容;她还与小古比鱼添加了QQ好友,给小古比鱼传过一些有用的文件,直到现在,她也总是会在小古比鱼将程序截图上传到相册后的第一时间来阅读小古比鱼的程序,小古比鱼在此对她一直以来给予的支持和帮助表示感谢。在这半年多的时间内,小古比鱼得知她是学软件工程专业的,掌握很多门编程语言,除了C语言和VB以外,诸如Java、Delphi等等她也都或多或少有所了解,她说自己学得不怎么样,那自是比较谦虚了!比起她在编程方面的造诣,小古比鱼自是不及。另外,她还在乐谱和解决电脑故障等方面有一定的研究,小古比鱼非常佩服她。

       下面进入我们的主题——洛谷网站。说到注册这个网站,那还要从今年4月4日小古比鱼所编的一个C程序说起。那天,小古比鱼随便翻阅上学期学过的C程序教材,偶然间翻到了有关“结构体”知识的讲解部分,于是,为了实践一下,小古比鱼以怪怪水族箱游戏中的7种鱼类为素材,编写了一个名为“怪怪水族箱鱼类结构体”的程序,将其上传到相册后又将地址发布到了百度怪怪水族箱贴吧和怪怪水族馆贴吧里。凑巧的是,这个帖子刚好被小古比鱼的好友Rufus螃蟹看到了,他是怪怪水族箱的爱好者,这小古比鱼早就知道,想必大家也有所耳闻,然而,和ZomGraves一样,他竟然还是一个编程爱好者!这一点又与小古比鱼结识ZomGraves的经历不同,因为小古比鱼早就听说ZomGraves会编程,但在此之前却从不知道Rufus螃蟹也会编程!他在看了小古比鱼的那个程序之后,给小古比鱼提了一些建议,自那以后,我们彼此都知道了对方会编程。下面便是小古比鱼当时所编的程序“怪怪水族箱鱼类结构体”。




       好友Rufus螃蟹虽然不会VB,但毫不夸张地说,他编写C程序的技术可以用“出凡入胜”四个字来形容,小古比鱼之所以这么说,也不无道理——在看过小古比鱼的那个程序之后,他了解到小古比鱼也酷爱编程,于是,没过多久,他便向小古比鱼推荐了一个有关编程的网站,这便是小古比鱼在这里要向大家介绍的洛谷网站,其主页为http://www.luogu.org/。这个网站成立于2013年,其历史并不久远。它主要为编程爱好者,尤其是学生们提供一个“最有亲和力”的学习平台,其不仅包含数千道编程题目,还提供了社区团队、比赛等内容供用户参与其中;此外,洛谷网站还允许用户上传自己的题目,或是写题解来帮助别人,还有类似于百度贴吧等网站的打卡(即签到)、上传头像、个性设置、发表微博等功能,丰富多彩,使本来较为枯燥的编程变得轻松而愉悦!而小古比鱼的好友Rufus螃蟹,正是此网站的管理员!试想一下,既然他能当上一个网站的管理员,其身手一定不凡。他在洛谷网站的代号为U914,用户名为absi2011

       出于那段时间小古比鱼忙于学业,所以一直没有去注册洛谷网站。直到5月10日晚,小古比鱼终于注册了洛谷网站,成为了此网站代号为U7041的一位用户,用户名为“小古比鱼”,以下是小古比鱼的洛谷主页:

http://www.luogu.org/space/show?uid=7041

       这个网站的主体部分,应该要数试炼场中的那些闯关题目。洛谷网站制作得有趣,它将这些题目做成类似于我们平时玩游戏时一个又一个的关卡,其中第一大关名为“新手村”,其包含8个小关,后面的部分关卡有先决条件,需要先完成前面的某些关卡后才可解锁;每一小关是一个知识类型,其中又有3~6道数量不等的编程题目,还有所谓的“BOSS战”;当你无法完成其中的部分题目时,也可以选择跳关,但最多只能跳过3次。这样,我们挑战这些任务时,似乎感觉到是在打游戏一般!洛谷网站提供了3种编程语言,分别是:C、C++和Pascal,用户可任选其一进行编程。小古比鱼目前学的是第一种,不过前两种语言有其相通之处,而Pascal语言小古比鱼现在还是一窍不通。该网站有专门的评测机,可以检测你的程序是否符合题目中的各项要求,若程序完全正确,则为满分100分,同时显示Accepted,代表用户已通过此题,若是不符合部分要求或是编译错误,则不能得到满分,会显示Unaccepted或Compile err,此时用户可以修改自己的代码后再次提交,直到通过该题。为了体现出是解答洛谷网站中的题目时编写的程序,小古比鱼在这些程序截图的相片描述后都添加了方括号,方括号中的内容为该题的题号,如【P1001】、【P1425】等;此外,小古比鱼为了让大家能够在看这些程序的同时得知题目要求,于是将这些程序中的绝大多数都添加了注释,增强其可读性。大家可以在小古比鱼博客相册《C程序》内的图片中体会到以上几点。下面的程序是小古比鱼在洛谷网站提交的第一个程序“求两数之和”,提交于注册该网站的当天,程序非常简单。


       然而,这个程序却并没有通过,原因是该网站要求在编程时必须将主函数定义为int型,并返回0,这样才能通过。说到这里,小古比鱼要说说这个网站存在的一些漏洞,先说说最主要的,也就是编程方面,小古比鱼发现:有不少程序小古比鱼编好后,在自己的电脑环境中可以产生正确的结果,而在该网站提交之后却不能通过,究其原因,有一少部分是由于小古比鱼所编的程序还没能完全满足题目的要求,这当然是小古比鱼个人的失误,但还有一大部分则是由于编译环境所致的“可移植性”问题,通俗地讲,就是这些程序在小古比鱼电脑里的编译环境下可以正常运行,且结果完全正确,但在洛谷网站评测机的编译环境下就不能产生正确的结果,甚至出现编译错误,无法正常工作,上面那个程序就是一个很好的例证。针对这一问题,小古比鱼是这样看待的,首先我们要检讨自身,也就是说,小古比鱼还是应该编写可移植性较强的程序,尽可能提高这些程序的适应性,这样程序在绝大多数编译环境下才能正常运行。一位著名的外国教授曾说过这样一句话:我们所处的是一个编程环境不断改变的世界,大多数软件的生命期要长于它运行其上的软件。因此,努力提高软件的可移植性,实际上是延长了软件的生命期。这句话,小古比鱼将其奉为圭臬。不过,这一问题也反映了洛谷网站的评测机也有一定的缺陷,小古比鱼希望日后洛谷网站能够逐渐改进它的评测系统,使其能够适应更多的C程序编写风格。

       除了评测问题,洛谷网站还存在一些不大不小的问题,例如:无法记住用户的登录信息,部分用户无法正常上传头像,无法添加好友(按钮无效),试炼场还有待进一步完善等等。在此,小古比鱼主要提一下“无法正常上传头像”的问题。当时,小古比鱼注册洛谷网站后,点击上传头像处的“选择文件”,选好文件提交后,头像却一直无法显示出来,甚至连好友Rufus螃蟹,在洛谷网站也同样没有自己的头像。然而,小古比鱼却看到洛谷网站的部分用户确确实实是有头像的,于是,小古比鱼向这些有头像的用户发去短消息,向他们咨询。就这样,小古比鱼先后在代号为U5744和U2674,用户名为瞿葩redbag的两位朋友的帮助下,成功上传了自己的小古比鱼头像,小古比鱼在此向这两位朋友表示感谢。当然,小古比鱼也还是期盼着洛谷网站能够早日解决这些有待改进的问题,日臻完善。

       自打小古比鱼注册洛谷网站以来的这40多天时间里,好友Rufus螃蟹一直在关注小古比鱼的答题动态,他时常来看小古比鱼解答这些题目时所编写的程序,并且留下建议,每一条建议都让小古比鱼受益匪浅。当小古比鱼遇到程序无法通过的情况时,他也会给出自己的意见,帮助小古比鱼通过这些题目,在此,小古比鱼也对他表示衷心的感谢。截止到现在,小古比鱼已经通过了洛谷网站的12道题目,其中部分题目小古比鱼给出了2个以上的不同的程序来实现,共提交42次,积分135分,现为“小犇”等级。以下是小古比鱼的主页及最近的一些提交记录:



       大家可以到小古比鱼的博客相册《洛谷》中查看原图。若是想看小古比鱼提交题目的所有记录,请点击小古比鱼的提交记录。对于试炼场,目前小古比鱼挑战新手村,这里面的题目大都比较容易,不过也有稍难一些的题。小古比鱼现已完成其中的前两大关1-1和1-2,1-3也即将完成:


       除了完成试炼场中的题目,小古比鱼也会按照题号寻找洛谷网站的一些较难的题目,例如,前些日子,小古比鱼做题号为P1002的题目“过河卒”,该程序被归为“普及”类,难度较新手村中的题目要大,小古比鱼想了很久,编出的如下程序也只得了60分,未能通过,原因大概是此程序耗时过长,算法有待优化。以后有空时小古比鱼再想办法,争取通过此题。

       由此看来,洛谷网站中大有难题,不过这些题目可以让小古比鱼的编程水平在不知不觉中有所提高。另外,小古比鱼还给自己制定了一个洛谷答题上限原则,其内容是:除参与洛谷网站比赛中的题目或有特殊情况,小古比鱼在该网站答题所通过的题目在同一天当中不能超过1个,也即最多一天一题。小古比鱼制定这个原则的目的主要是想让自己认真对待每一道题目,如果可以的话,每一道题目最好编出2个以上的不同的程序来实现功能,虽然这些程序间自有优劣之分,但对于拓展编程思维应该还是很有帮助的。再说了,后面的题目一定会越来越难,到时候,小古比鱼一周能通过一道题也许就算是好的了!另外,小古比鱼到目前为止还未参加过洛谷网站的比赛,以后有机会小古比鱼也会尝试一下,应该也很有意思。

       说了这么多,我们的日志也就要结束了。通过八个多月的编程体验,小古比鱼真切地感受到:编程绝非易事,平均来讲,小古比鱼便写一个程序前前后后要花费1个小时左右的时间;有的时候,编写一个近乎完美的VB程序要花上3个多小时的时间,其制作用户界面所花的时间并不短于编写代码所用的时间;还有的时候,编写一个没有任何漏洞而且颇有价值的C程序,连同编写程序之前的构思时间,其总时间甚至接近10个小时。小古比鱼想说的是,这并不是危言耸听,毕竟,编程就是一个循序渐进的过程,它要求编程者拥有缜密的思维和足够的耐心,否则,便不可能编出合格而又实用的程序来。这些感受,想必编程爱好者们也一定深有体会。当然,小古比鱼现在仍处于编程的初级阶段,随着小古比鱼编程技术的不断提高和所编程序复杂程度的逐渐提升,编程所花的时间和精力也会越来越多,甚至无法想象。小古比鱼任重而道远,现已做好了充分的心理准备,去迎接那些艰巨而又复杂的编程任务。下个学期,学校有可能还会教我们学习其他编程语言,小古比鱼所能做的,就是尽自己最大的努力,把这些编程语言学好、学精!

       最后,小古比鱼祝大家端午节快乐!

 

aopopen

西工大17秋《C语言程序设计》平时作业【标准答案】

可以代做所有奥鹏平台的作业,小论文、毕业论文、离线作业、考核作业、在线作业、在线测试有需要的请联系:

QQ:1044924700

微信:aopopengzs


西工大17秋《C语言程序设计》平时作业-0001

试卷总分:100    得分:0

一、 单选题 (共 35 道试题,共 70 分)

1.结构化算法是( )。

A.由顺序结构、选择结构和循环结构等三种基本结构顺序组成的算法

B.由顺序结构、选择结构和树结构等三种基本结构顺序组成的算法

C.由顺序结构和选择结构二种基本结构顺序组成的算法


2.以下...

可以代做所有奥鹏平台的作业,小论文、毕业论文、离线作业、考核作业、在线作业、在线测试有需要的请联系:

QQ:1044924700

微信:aopopengzs



西工大17秋《C语言程序设计》平时作业-0001

试卷总分:100    得分:0

一、 单选题 (共 35 道试题,共 70 分)

1.结构化算法是( )。

A.由顺序结构、选择结构和循环结构等三种基本结构顺序组成的算法

B.由顺序结构、选择结构和树结构等三种基本结构顺序组成的算法

C.由顺序结构和选择结构二种基本结构顺序组成的算法



2.以下不正确的定义语句是( )。

A.double x[5]={2.0,4.0,6.0,8.0,10.0};

B.int y[5]={0,1,3,5,7,9} ;

C.char c1[]={’1’,’2’,’3’,’4’,’5’} ;

D.char c2[]={’\x10’,’\xa’,’\x8’};



3.C语言对嵌套if语句的规定是:else总是与( )。

A.其之前最近的if配对

B.第一个if配对

C.缩进位置相同的if配对

D.最前面的if配对



4.以下叙述不正确的是( )。

A.预处理命令行都必须以#开始

B.在程序中凡是以#开始的语句行都是预处理命令行

C.C程序在执行过程中对预处理命令行进行处理

D.预处理命令行可以出现在C程序中任意一行上



5.以下不是死循环的语句是( )。

A.for (y=9,x=1;x>++y;x=i++) i=x

B.for ( ; ; x+=i)

C.while (1) { x++ ; }

D.for (i=10 ; ; i--) sum+=i



6.以下运算符优先级最低的是( )。

A.&&

B.&

C.||

D.|



7.

 


1


A.A

B.B

C.C

D.D



8.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是( )。

A.地址传递

B.值传递

C.有实参传给形参,再由形参传给实参

D.由用户指定传递方式



9.属于合法的C语言长整型常量是( )。

A.5876

B.0L

C.2.0E10

D.(long)58762



10.C语言程序编译时,程序中的注释部分( )。

A.参加编译,并会出现在目标程序中

B.参加编译,但不会出现在目标程序中

C.不参加编译,但会出现在目标程序中

D.不参加编译,也不会出现在目标程序中



11.执行下列程序片段时输出结果是(   )。1


A.65535

B.-1

C.-32767

D.1



12.组成C语言程序的是( )。

A.过程

B.函数

C.子程序

D.主程序和子程序



13.不合法的常量是:( )。

A.’\2’

B.""

C.’’

D.\483



14.函数调用语句:fseek(fp,-20L,2)的含义是( )。

A.将文件位置指针移到距离文件头20个字节处

B.将文件位置指针从当前位置向后移动20个字节

C.将文件位置指针从文件末尾向后退20个字节

D.将文件位置指针移到当前位置20个字节处



15.若要用fopen函数打开一个新的二进制文件,该文件既要能读也能写,则使用文件方式应是( )。

A."a+b"

B."wb+"

C.r+b

D."ab"



16.若x=2,y=3,则x & y的值是( )。

A.0

B.2

C.3

D.5



17.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( )。

A.连接、编译

B.编译、连接

C.连接、运行

D.运行



18.在文件使用方式中,字符串"rb"表示( )。

A.打开一个已存在的二进制文件,只能读取数据

B.打开一个文本文件,只能写入数据

C.打开一个已存在的文本文件,只能读取数据

D.打开一个二进制文件,只能写入数据



19.


1




A.6.0

B.7.0

C.8.0

D.9.0



20.若执行fopen函数时发生错误,则函数的返回值是( )。

A.地址值

B.0

C.1

D.EOF



21.若有定义:int a[10],则对数组a元素的正确引用是( )。

A.a[10]

B.a[3]

C.a(5)

D.a[-10]



22.11

A.A

B.B

C.C

D.D



23.已知int x = 0xaffbc; 判断x的结果是( )。

A.赋值非法

B.不确定

C.affb

D.ffbc



24.若有定义:int (*p)[4]; 则标识符p( )。

A.是一个指向整型变量的指针

B.是一个指针数组名

C.是一个指针,它指向一个含有四个整型元素的一维数组

D.定义不合法



25.以下有关宏替换的叙述不正确的是( )。

A.宏替换不占用运行时间

B.宏名无类型

C.宏替换只是字符替换

D.宏名必须用大写字母表示



26.当C语言的源程序在一行写不下时,可以( )。

A.用逗号续行

B.用分号续行

C.用\续行

D.用空格续行



27.若有定义:int a[3][4],则正确引用数组a元素的是( )。

A.a[2][4]

B.a[3][3]

C.a[0][0]

D.a[3][4]



28.若int k=7,x=12;则能使值为3的表达式是( )。

A.x%=(k%=5)

B.x%=(k-k%5)

C.x%=k-k%5

D.(x%=k)-(k%=5)



29.以下函数定义首部形式正确的是( )。

A.double fun(int x,int y)

B.double fun(int x;int y)

C.double fun(int x.int y);

D.double fun(int x,y)



30.( )是C语言提供的合法的数据类型说明关键字。

A.Float

B.signed

C.integer

D.Char



31.在宏定义#define PI 3.14159中,用宏名PI代替一个( )。

A.单精度数

B.双精度数

C.常量

D.字符串



32.函数rewind的作用是( )。

A.使位置指针重新返回文件的开头

B.将位置指针指向文件中所要求的特定位置

C.使位置指针指向文件的末尾

D.使位置指针自动移至下一个字符位置



33.算法是( )。

A.为解决一个问题而采取的方法和步骤

B.为设置一个问题而采取的方法和步骤

C.为解决一个问题而开会讨论



34.一个C程序总是从( )函数开始运行的。

A.main

B.include

C.int

D.for



35.设有程序段:char s[]="china"; char *p ; p=s ; 则下面叙述正确的是( )。

A.s和p完全相同

B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等

D.*p与s[0]相等



二、 多选题 (共 5 道试题,共 30 分)

1.计算机算法可以用( )等方法表示。

A.自然语言

B.流程图

C.伪代码

D.方块图



2.C程序注释是由( )所界定的文字信息组成的。

A./*

B.#

C.*/

D.&



3.计算机算法可分为( )两大类别。

A.数值运算算法

B.非数值运算算法

C.结构运算

D.形式运算



4.计算机算法的特性包括( ) 。

A.有穷性

B.确定性

C.有零个或多个输入

D.有一个或多个输出

E.有效性



5.函数体一般包括( )两部分。

A.声明

B.执行

C.形式

D.操作


来源:aopopen

aopopen

东大18春学期《JAVA语言程序设计Ⅰ》在线作业123

可以代做所有奥鹏平台的作业,小论文、毕业论文、离线作业、考核作业、在线作业、在线测试有需要的请联系:

QQ:1044924700

微信:aopopengzs


18春学期《JAVA语言程序设计Ⅰ》在线作业1-0001


一、 单选题 (共 20 道试题,共 60 分)

1.如果你试图编译下面的代码会发生什么事? Class MyString extends String{ }

A.代码编译成功

B.代码不能编译,因为没有定义一个main()方法

C.代码不能编译,因为String是abstract类型的

D.代码不能编译,因为String...

可以代做所有奥鹏平台的作业,小论文、毕业论文、离线作业、考核作业、在线作业、在线测试有需要的请联系:

QQ:1044924700

微信:aopopengzs



18春学期《JAVA语言程序设计Ⅰ》在线作业1-0001


一、 单选题 (共 20 道试题,共 60 分)

1.如果你试图编译下面的代码会发生什么事? Class MyString extends String{ }

A.代码编译成功

B.代码不能编译,因为没有定义一个main()方法

C.代码不能编译,因为String是abstract类型的

D.代码不能编译,因为String是final类型的



2.下列程序的功能是在监控台上每隔一秒钟显示一个字符串“Hello”,能够填写在程序中下划线位置,使程序完整并能正确运行的语句是 public class Test implements Runnable{ public static void main(String args[]){ Test t=new Test(); Thread tt=new Thread(t); tt.start(); } public void run(){ for(;;){ try{

A.sleep(1000) InterruptedException

B.sleep(1000) RuntimeException

C.Thread.sleep(1000) RuntimeException

D.Thread.sleep(1000) InterruptedException



3.已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的?

A.args[0] = "MyTest a b c"

B.args[0] = "MyTest"

C.args[0] = "a"

D.args[1]= 'b'



4.在oneMethod()方法运行正常的情况下,程序段将输出什么? public void test() { try { oneMethod(); System.out.println("condition 1"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("condition 2"); } catch(Exception e) { System.out.println("condition 3");

A.condition 1

B.condition 2

C.condition 3

D.condition 1 finally



5.顺序执行下列程序语句后,则b的值是 String a="Hello"; String b=a.substring(0,2);

A.Hello

B.hello

C.Hel

D.null



6.下列类头定义中,错误的是( )。

A.class x { .... }

B.public x extends y { .... }

C.public class x extends y { .... }

D.class x extends y implements y1 { .... }



7.下面的哪些程序段可以正确地获得从命令行传递的参数的个数?

A.int count = args.length;

B.int count = args.length-1;

C.int count=0; while(args[count]!=null) count++;

D.int count=0;while (!(args[count].equals(“”))) count++;



8.已知如下代码: boolean m = true; if ( m = false ) System.out.println("False"); else System.out.println("True"); 执行结果是什么?

A.False

B.True

C.编译时出错

D.运行时出错



9.给定下面的类:   public class Example{   String str=new String(“good”);   char ch[]={'a','b','c'};   public static void main(String args[]){   Example ex=new Example();   ex.change(ex.str,ex.ch);   System.out.println(ex.str+”and”+ex.ch);   }   public void

A.good and abc

B.good and gbc

C.test ok and abc

D.test ok and gbc



10.已知表达式int m[] = {0, 1, 2, 3, 4, 5, 6 }; 下面哪个表达式的值与数组下标量总数相等?

A.m.length()

B.m.length

C.m.length()+1

D.m.length+1



11.若a的值为3时,下列程序段被执行后,c的值是多少?( ) c = 1; if ( a>0 ) if ( a>3 ) c = 2; else c = 3; else c = 4;

A.1

B.2

C.3

D.4



12.Person, Student 和Teacher 都是类名。这些类有以下继承关系。 Person | -------------------- | | Student Teacher 并且在Java源代码中有如下表达式: Person p = new Student(); 如下哪个语句是正确的?

A.这条语句是合法的

B.这条语句是不合法的

C.编译时出错

D.编译正确但运行时出错



13.给出下列的代码,哪行在编译时可能会有错误? ① public void modify(){ ② int i, j, k; ③ i = 100; ④ while ( i > 0 ){ ⑤ j = i * 2; ⑥ System.out.println (" The value of j is " + j ); ⑦ k = k + 1; ⑧ } ⑨ }

A.4

B.6

C.7

D.8



14.设有下面的一个类定义: class AA { static void Show( ){ System.out.println("我喜欢Java!"); } } class BB { void Show( ){ System.out.println("我喜欢C++!"); } } 若已经使用AA类创建对象a和BB类创建对象b,则下面哪一个方法调用是正确的:( )

A.a.Show( ) b.Show( )

B.AA.Show( ) BB.Show( )

C.AA.Show( ) b.Show( )

D.a.Show( ) BB.Show( )



15.下面程序的输出结果是什么? class Foo{ static void change(String s){ s=s.replace('j','l'); } public static void main(String args[]){ String s="java"; change(s); System.out.println(s); } }

A.lava

B.java

C.编译错误

D.运行时出现异常



16.下面的代码段中,执行之后i 和j 的值是什么? int i = 1; int j; j = i++;

A.1, 1

B.1, 2

C.2, 1

D.2, 2



17.下列语句序列执行后,k的值是( )。 int j=8, k=15; for( int i=2; i!=j; i++ ) { j-=2; k++; }

A.15

B.16

C.17

D.18



18.给出下面的接口: interface A{ int method1(int i); int method2(int j); } 下面那个类实现了这个接口,并且不是抽象的?

A.class B implements A{ int method1(){} int method2(){} }

B.class B { int method1(int i){} int method2(int j){} }

C.class B implements A{ int method1(int i){} int method2(int j){} }

D.class B extends A{ int method1(int i){} int method2(int j){} }



19.下列代码的执行结果是 public class Test { public int aMethod() { static int i=0; i++; System.out.println(i); } public static void main(String args[]) { Test test = new Test();

A.编译错误

B.0

C.1

D.运行成功,但不输出



20.若有循环: int x=5,y=20; do{ y-=x; x++; }while(++x<--y);则循环体将被执行( )。

A.0次

B.1次

C.2次

D.3次



二、 多选题 (共 10 道试题,共 40 分)

1.你怎样从下面main()的调用中访问单词“kiss”? java lyrics a kiss is but a kiss

A.args[0]

B.args[1]

C.args[2]

D.args[3]

E.args[4]

F.args[5]



2.String s=”Example String”; 下面哪些语句是正确的?

A.s>>>=3;

B.int i=s.length();

C.s[3]=”x”;

D.String short_s=s.trim();

E.String t=”root”+s;



3.已知如下代码: public class Test { public static void main(String arg[]) { int i = 5; do { System.out.println(i); } while (--i>5) System.out.println("finished"); } } 执行后的输出结果包括什么?

A.5

B.4

C.6

D.finished

E.什么都不输出



4.请选出创建数组的正确语句。

A.float f[][] = new float[6][6];

B.float []f[] = new float[6][6];

C.float f[][] = new float[][6];

D.float [][]f = new float[6][6];



5.下面代码执行后的输出是什么? outer: for(int i=0;i<3; i++) inner: for(int j=0;j<2;j++) { if(j==1) continue outer; System.out.println(j+ “ and “+i); }

A.0 and 0

B.0 and 1

C.0 and 2

D.1 and 0

E.1 and 1

F.1 and 2

G.2 and 0

H.2 and 1

9.2 and 2



6.已知如下定义: String s = "story"; 下面哪些表达式是合法的?

A.s += "books";

B.char c = s[1];

C.int len = s.length;

D.String t = s.toLowerCase();



7.给出下面的代码段: public class Base{ int w, x, y ,z; public Base(int a,int b) { x=a; y=b; } public Base(int a, int b, int c, int d) { //赋值 x=a, y=b w=d; z=c; } } 在代码说明//赋值 x=a, y=b处写入如下哪几行代码是正确的?

A.Base(a,b)

B.x=a,y=b;

C.x=a;y=b;

D.this(a,b);



8.如果有以下代码,哪几个数字能产生输出 "Test2" 的结果? Switch(x){ case 1: System.out.println("Test1"); case 2: case 3: System.out.println("Test2"); break;} System.out.println("Test3"); }

A.0

B.1

C.2

D.3



9.已知如下代码: switch (m) { case 0: System.out.println("Condition 0"); case 1: System.out.println("Condition 1"); case 2: System.out.println("Condition 2"); case 3: System.out.println("Condition 3");break; default: System.out.println("Other Condition"); } 当m 的

A.0

B.1

C.2

D.3

E.4

F.以上都不是



10.已知如下类定义: class Base { public Base (){ //... } public Base ( int m ){ //... } protected void fun( int n ){ //... } } public class Child extends Base{ // member methods } 如下哪句可以正确地加入子类中?

A.private void fun( int n ){ //...}

B.void fun ( int n ){ //... }

C.protected void fun ( int n ) { //... }

D.public void fun ( int n ) { //... }


18春学期《JAVA语言程序设计Ⅰ》在线作业2-0001

试卷总分:100    得分:0

一、 单选题 (共 20 道试题,共 60 分)

1.设有下面两个类的定义: class Person { long id; // 身份证号 String name; // 姓名 } class Student extends Person { int score; // 入学总分 int getScore(){ re

A.包含关系

B.继承关系

C.关联关系

D.无关系,上述类定义有语法错误



2.下面的语句的作用是:( )。 Vector MyVector = new Vector(100,50);

A.创建一个数组类对象MyVector,有100个元素的空间,每个元素的初值为50。

B.创建一个向量类对象MyVector,有100个元素的空间,每个元素的初值为50。

C.创建一个数组类对象MyVector,有100个元素的空间,若空间使用完时,以50个元素空间单位递增。

D.创建一个向量类对象MyVector,有100个元素的空间,若空间使用完时,以50个元素空间单位递增。



3.阅读下列代码后 public class Person{ int arr[]=new int[10]; public static void main(String args[]){ System.out.println(arr[1]); } } 正确的说法是

A.编译时将产生错误

B.编译时正确,运行时将产生错误

C.输出零

D.输出空



4.下列程序段执行后t5的结果是( )。int t1 = 9, t2 = 11, t3=8;int t4,t5;t4 = t1 > t2 ? t1 : t2+ t1;t5 = t4 > t3 ? t4 : t3;

A.8

B.20

C.11

D.9



5.下列语句序列执行后,a的值是( )。 int a=13; a%=a/5;

A.3

B.13

C.1

D.169



6.以下由do-while语句构成的循环执行的次数是( )。 int k = 0; do { ++k; }while ( k < 1 );

A.一次也不执行

B.执行1次

C.无限次

D.有语法错,不能执行



7.下面程序的输出结果是什么? class Foo{ static void change(String s){ s=s.replace('j','l'); } public static void main(String args[]){ String s="java"; change(s); System.out.println(s); } }

A.lava

B.java

C.编译错误

D.运行时出现异常



8.以下代码的输出结果是什么? class Foo{ public static void main(String args[]){ int x=4,j=0; switch(x){ case 1:j++; case 2:j++; case 3:j++; case 4:j++; case 5:j++; break; default:j++; } System.out.println(j); } }

A.1

B.2

C.3

D.编译错误



9.下面程序的输出结果是什么? class Happy { public static void main(String args[]) { int i =1; int j = 10; do { if ( i++ < j--) continue; } while ( i <5 ); System.out.println ( i+" "+j ); } }

A.5 5

B.5 4

C.6 4

D.5 6



10.下面哪一个类可以访问foo包中的所有变量? package foo; class a{int c} class b{private int d} class c{public int e}

A.class a

B.class b

C.class c

D.都不能



11.顺序执行下列程序语句后,则b的值是 String a="Hello"; String b=a.substring(0,2);

A.Hello

B.hello

C.Hel

D.null



12.请选择以下代码的正确的重载构造器。 class Happy { Happy() { } }

A.public void Happy(){}

B.public Happy(int c){}

C.protected Happy(){}

D.void Happy(){}



13.给出下面的接口: interface A{ int method1(int i); int method2(int j); } 下面那个类实现了这个接口,并且不是抽象的?

A.class B implements A{ int method1(){} int method2(){} }

B.class B { int method1(int i){} int method2(int j){} }

C.class B implements A{ int method1(int i){} int method2(int j){} }

D.class B extends A{ int method1(int i){} int method2(int j){} }



14.下面程序的输出结果是什么? class C1{ static int j=0; public void method(int a){ j++; } } class Test extends C1{ public int method(){ return j++; } public void result(){ method(j); System.out.println(j+method()); } public static void main(String args[]){ new Te

A.0

B.1

C.2

D.3



15.下面的哪些程序段可以正确地获得从命令行传递的参数的个数?

A.int count = args.length;

B.int count = args.length-1;

C.int count=0; while(args[count]!=null) count++;

D.int count=0;while (!(args[count].equals(“”))) count++;



16.下面的代码段中,执行之后i 和j 的值是什么? int i = 1; int j; j = i++;

A.1, 1

B.1, 2

C.2, 1

D.2, 2



17.下面程序的输出结果是什么? public static void main(String args[]) { int a=10; int b=20; if(a=b) System.out.println("Not Equal"); else System.out.println("Equal"); }

A.Equal

B.Not Equal

C.编译错误

D.运行时将抛出异常



18.如果你有下面的类定义 abstract class Shape{ abstract void draw(); } 请问,在试图编译下面的类定义时会发生什么情况? class Square extends Shape{ }

A.都可以成功编译

B.Shpe可以编译,而Square不能

C.Square可以编译,而Shape不能

D.Shape和Square都不能编译



19.下列代码中,将引起一个编译错误的行是 1)public class Test{ 2) int m,n; 3) public Test() {} 4) public Test(int a) {m=a;} 5) public static void main(String args[]){ 6) Test t1,t2; 7) int j,k; 8) j=0;k=0; 9) t1=new Test(); 10) t2=new Test(j,k); 11) } 12

A.第3行

B.第5行

C.第6行

D.第10行



20.在oneMethod()方法运行正常的情况下,程序段将输出什么? public void test() { try { oneMethod(); System.out.println("condition 1"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("condition 2"); } catch(Exception e) { System.out.println("condition 3");

A.condition 1

B.condition 2

C.condition 3

D.condition 1 finally



二、 多选题 (共 10 道试题,共 40 分)

1.已知如下定义: String s = "story"; 下面哪些表达式是合法的?

A.s += "books";

B.char c = s[1];

C.int len = s.length;

D.String t = s.toLowerCase();



2.针对下面的程序,那些表达式的值是true?   Class Aclass{   private long val;   public Aclass(long v){val=v;}   public static void main(String args[]){   Aclass x=new Aclass(10L);   Aclass y=new Aclass(10L);   Aclass z=y;   long a=10L;   int b=10;   }   }

A.a==b;

B.a==x;

C.y==z;

D.x==y;

E.a==10.0;



3.已知如下类定义: class Base { public Base (){ //... } public Base ( int m ){ //... } protected void fun( int n ){ //... } } public class Child extends Base{ // member methods } 如下哪句可以正确地加入子类中?

A.private void fun( int n ){ //...}

B.void fun ( int n ){ //... }

C.protected void fun ( int n ) { //... }

D.public void fun ( int n ) { //... }



4.下面的哪些程序片断可能导致错误。

A.String s="Gonewiththewind"; String t="good"; String k=s+t;

B.String s="Gonewiththewind"; String t; t=s[3]+"one";

C.String s="Gonewiththewind"; String standard=s.toUpperCase();

D.String s="homedirectory"; String t=s-"directory".



5.已知如下代码: switch (m) { case 0: System.out.println("Condition 0"); case 1: System.out.println("Condition 1"); case 2: System.out.println("Condition 2"); case 3: System.out.println("Condition 3");break; default: System.out.println("Other Condition"); } 当m 的

A.0

B.1

C.2

D.3

E.4

F.以上都不是



6.假定文件名是“Fred.java”,下面哪个是正确的类声明。

A.public class Fred{   public int x = 0;   public Fred (int x){   this.x=x;   }   }

B.public class fred{   public int x = 0;   public Fred (int x){   this.x=x;   }   }

C.public class Fred extends MyBaseClass{   public int x = 0; }



7.你怎样从下面main()的调用中访问单词“kiss”? java lyrics a kiss is but a kiss

A.args[0]

B.args[1]

C.args[2]

D.args[3]

E.args[4]

F.args[5]



8.String s=”Example String”; 下面哪些语句是正确的?

A.s>>>=3;

B.int i=s.length();

C.s[3]=”x”;

D.String short_s=s.trim();

E.String t=”root”+s;



9.选择所有有效的构造函数。 class Happy { } }

A.public void Happy(){}

B.public Happy(int c){}

C.protected Happy(){}

D.public int Happy(){}

E.void Happy(){}



10.已知如下代码: public class Test { public static void main(String arg[]) { int i = 5; do { System.out.println(i); } while (--i>5) System.out.println("finished"); } } 执行后的输出结果包括什么?

A.5

B.4

C.6

D.finished

E.什么都不输出



18春学期《JAVA语言程序设计Ⅰ》在线作业3-0001

试卷总分:100    得分:0

一、 单选题 (共 20 道试题,共 60 分)

1.下列代码的执行结果是 public class Test { public int aMethod() { static int i=0; i++; System.out.println(i); } public static void main(String args[]) { Test test = new Test();

A.编译错误

B.0

C.1

D.运行成功,但不输出



2.下面哪一个类可以访问foo包中的所有变量? package foo; class a{int c} class b{private int d} class c{public int e}

A.class a

B.class b

C.class c

D.都不能



3.下列哪个选项的java源文件代码片段是不正确的?

A.package testpackage; public class Test{ }

B.import java.io.*; package testpackage; public class Test{ }

C.import java.io.*; class Person{ } public class Test{ }

D.import java.io.*; import java.awt.*; public class Test{ }



4.下列类头定义中,错误的是( )。

A.class x { .... }

B.public x extends y { .... }

C.public class x extends y { .... }

D.class x extends y implements y1 { .... }



5.设有下面的一个类定义: class AA { static void Show( ){ System.out.println("我喜欢Java!"); } } class BB { void Show( ){ System.out.println("我喜欢C++!"); } } 若已经使用AA类创建对象a和BB类创建对象b,则下面哪一个方法调用是正确的:( )

A.a.Show( ) b.Show( )

B.AA.Show( ) BB.Show( )

C.AA.Show( ) b.Show( )

D.a.Show( ) BB.Show( )



6.已知表达式int m[] = {0, 1, 2, 3, 4, 5, 6 }; 下面哪个表达式的值与数组下标量总数相等?

A.m.length()

B.m.length

C.m.length()+1

D.m.length+1



7.若有循环: int x=5,y=20; do{ y-=x; x++; }while(++x<--y);则循环体将被执行( )。

A.0次

B.1次

C.2次

D.3次



8.下面的语句的作用是:( )。 Vector MyVector = new Vector(100,50);

A.创建一个数组类对象MyVector,有100个元素的空间,每个元素的初值为50。

B.创建一个向量类对象MyVector,有100个元素的空间,每个元素的初值为50。

C.创建一个数组类对象MyVector,有100个元素的空间,若空间使用完时,以50个元素空间单位递增。

D.创建一个向量类对象MyVector,有100个元素的空间,若空间使用完时,以50个元素空间单位递增。



9.下面程序的输出结果是什么? String s= "ABCD"; s.concat("E"); s.replace('C','F'); System.out.println(s);

A.编译错误,字符串是不可改变的

B.ABFDE

C.ABCDE

D.ABCD



10.给出下列代码,如何使成员变量m 被方法fun()直接访问? class Test { private int m; public static void fun() { ... } }

A.将private int m 改为protected int m

B.将private int m 改为 public int m

C.将private int m 改为 static int m

D.将private int m 改为 int m



11.如果你试图编译下面的代码会发生什么事? Class MyString extends String{ }

A.代码编译成功

B.代码不能编译,因为没有定义一个main()方法

C.代码不能编译,因为String是abstract类型的

D.代码不能编译,因为String是final类型的



12.下列程序段执行后t5的结果是( )。int t1 = 9, t2 = 11, t3=8;int t4,t5;t4 = t1 > t2 ? t1 : t2+ t1;t5 = t4 > t3 ? t4 : t3;

A.8

B.20

C.11

D.9



13.有下面的类:   public class Example{   static int x[]=new int[15];   public static void main(String args[]){   System.out.println(x[5]);   }   } 下面的那些说法是正确的。

A.编译时出错

B.运行时出错

C.输出0

D.输出null



14.给定下面的类:   public class Example{   String str=new String(“good”);   char ch[]={'a','b','c'};   public static void main(String args[]){   Example ex=new Example();   ex.change(ex.str,ex.ch);   System.out.println(ex.str+”and”+ex.ch);   }   public void

A.good and abc

B.good and gbc

C.test ok and abc

D.test ok and gbc



15.下面程序的输出结果是什么? class Foo{ static void change(String s){ s=s.replace('j','l'); } public static void main(String args[]){ String s="java"; change(s); System.out.println(s); } }

A.lava

B.java

C.编译错误

D.运行时出现异常



16.下面的代码段中,执行之后i 和j 的值是什么? int i = 1; int j; j = i++;

A.1, 1

B.1, 2

C.2, 1

D.2, 2



17.65. 已知有下列类的说明,则下列哪个语句是正确的? public class Test { private float f = 1.0f; int m = 12; static int n=1; public static void main(String arg[]) { Test t = new Test(); } }

A.t.f;

B.this.n;

C.Test.m;

D.Test.f;



18.给出下列代码,则数组初始化中哪项是不正确的? byte[] array1,array2[]; byte array3[][]; byte [][] array4;

A.array2 = array1

B.array2=array3

C.array2=array4

D.array3=array4



19.下面的哪些程序段可以正确地获得从命令行传递的参数的个数?

A.int count = args.length;

B.int count = args.length-1;

C.int count=0; while(args[count]!=null) count++;

D.int count=0;while (!(args[count].equals(“”))) count++;



20.以下由do-while语句构成的循环执行的次数是( )。 int k = 0; do { ++k; }while ( k < 1 );

A.一次也不执行

B.执行1次

C.无限次

D.有语法错,不能执行



二、 多选题 (共 10 道试题,共 40 分)

1.已知如下定义: String s = "story"; 下面哪些表达式是合法的?

A.s += "books";

B.char c = s[1];

C.int len = s.length;

D.String t = s.toLowerCase();



2.已知如下代码: switch (m) { case 0: System.out.println("Condition 0"); case 1: System.out.println("Condition 1"); case 2: System.out.println("Condition 2"); case 3: System.out.println("Condition 3");break; default: System.out.println("Other Condition"); } 当m 的

A.0

B.1

C.2

D.3

E.4

F.以上都不是



3.请选出创建数组的正确语句。

A.float f[][] = new float[6][6];

B.float []f[] = new float[6][6];

C.float f[][] = new float[][6];

D.float [][]f = new float[6][6];



4.String s=”Example String”; 下面哪些语句是正确的?

A.s>>>=3;

B.int i=s.length();

C.s[3]=”x”;

D.String short_s=s.trim();

E.String t=”root”+s;



5.假定文件名是“Fred.java”,下面哪个是正确的类声明。

A.public class Fred{   public int x = 0;   public Fred (int x){   this.x=x;   }   }

B.public class fred{   public int x = 0;   public Fred (int x){   this.x=x;   }   }

C.public class Fred extends MyBaseClass{   public int x = 0; }



6.在如下源代码文件Test.java中, 哪个是正确的类定义?

A.public class test { public int x = 0; public test(int x) { this.x = x; } }

B.public class Test{ public int x=0; public Test(int x) { this.x = x; } }

C.public class Test extends T1, T2 { public int x = 0; public Test (int x) { this.x = x; } }

D.public class



7.如果有以下代码,哪几个数字能产生输出 "Test2" 的结果? Switch(x){ case 1: System.out.println("Test1"); case 2: case 3: System.out.println("Test2"); break;} System.out.println("Test3"); }

A.0

B.1

C.2

D.3



8.下面的哪些程序片断可能导致错误。

A.String s="Gonewiththewind"; String t="good"; String k=s+t;

B.String s="Gonewiththewind"; String t; t=s[3]+"one";

C.String s="Gonewiththewind"; String standard=s.toUpperCase();

D.String s="homedirectory"; String t=s-"directory".



9.已知如下类说明: public class Test { private float f = 1.0f; int m = 12; static int n=1; public static void main(String arg[]) { Test t = new Test(); // 程序代码… } } 如下哪个使用是正确的?

A.t.f

B.this.n

C.Test.m

D.Test.n



10.已知如下代码: public class Test { public static void main(String arg[]) { int i = 5; do { System.out.println(i); } while (--i>5) System.out.println("finished"); } } 执行后的输出结果包括什么?

A.5

B.4

C.6

D.finished

E.什么都不输出


来源:aopopen

LOFTER

让兴趣,更有趣

简单随性的记录
丰富多彩的内容
让生活更加充实

下载移动端
关注最新消息