- 论坛徽章:
- 49
|
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-1862821-1-1.html
大赛结果及获奖名单公布!
http://bbs.chinaunix.net/thread-1860588-1-1.html
PHP编程大赛的评选结果出来了,请参看。
大赛评选结果已出,敬请关注!:PHP编程大赛隆重启动,PHP开发大挑战
http://bbs3.chinaunix.net/thread-1788191-1-1.html
---------------------------------------------------------
为了庆祝ChinaUnix社区创立9周年,ChinaUnix社区各技术版面将隆重发起各项技术实践活动!
感谢各位为本次活动提供试题和建议的版主和会员:)
大赛背景:
C/C++、Perl、Shell、PHP等ChinaUnix传统程序设计板块一直是CU的技术讨论区的中坚力量。为了庆祝ChinaUnix社区成立九周年,特联合部分出版社举办本次大赛,诚邀各路Coder好手!
第一期PHP程序设计大赛已经完成,相关内容和获奖名单见以下链接:http://bbs.chinaunix.net/thread-1788191-1-1.html
这是第二期,C/C++程序设计大赛,欢迎大家积极参与!
大赛日程:
参赛时间:2010.11.20~2011.01.10
评选时间:2011.01.11~2011.01.18
结果公布:2011.01.19
参赛要求:
参与活动必须为chinaunix论坛注册会员,点击这里注册:http://sso.chinaunix.net/Register
奖项设置及评选办法:
一等奖:3名,赠送ChinaUnix高质量电脑包,获奖者为最先正确完成4道试题的用户,或者某些设计思想获得评委一致赞同的用户。
二等奖:10名,赠送ChinaUnix 9周年限量版ChinaUni秋季长袖T恤,获奖者为最先正确完成两道试题的十名用户。
三等奖:15名,赠送ChinaUnix 9周年 限量版精美纪念真空保温杯,获奖者至少独立完成一道试题,获奖名单由评委按照代码质量和完成试题数目决定。
![]()
代码提交:
(1)参赛作品须在规定的初赛代码提交截止日期之前将规定的内容及材料以邮件形式发送到大赛邮箱rmzhou@staff.chinaunix.net。如果代码有变动可以多次发送邮件,以最后邮件提交时间为准。
邮件标题格式为:ChinaUnix论坛C/C++程序设计大赛参赛代码(论坛ID),内容按照各题的需要提交。
(2)你也可以将代码张贴到本活动贴中和大家讨论,但是不作为本次比赛的参赛证据。
注:
参赛选手提交代码必须通过邮件提交,代码版权归CU所有(最后所有的参赛者代码将公布在CU论坛供大家学习和参考)
严禁抄袭,一经发现,取消评选资格;
代码类似,以最后提交时间为准,取最早发布或者修改时间者为优秀
活动细则:
因为本次大赛的题目可能要求不一,每题的要求请看清!
(1)代码规范:使用标准C语言,采用编程标准可以使项目更加顺利地完成。
(2)性能:应用程序运行正常,可以执行用户或客户所需的所有任务,并不意味着程序在任何方面都是完美的,更高的运行性能才能我们所追求的。
(3)简洁:写代码是一种艺术。除了正确的缩进、大小写、命名规则之外,请时刻牢记爱因斯坦的名言--简单就是美。
(4)每位会员可以发表多个代码,以最高评价为准,不可重复获奖;
(5)提交代码参赛的同时,需附相关系统环境及编译环境说明(推荐Linux kernel 2.6.30及以上版本,gcc 4.32及以上)
大赛评委:
cugb_cat:ChinaUnix论坛C/C++版版主,工作主要涉及分布式系统、数据库系统等研发和运营工作。
duanjigang:目前就职于北京一家网络安全公司,5年linux下C/C++开发经验,工作主要涉及网络通讯,终端安全方面。业余做一些开源和LAMP架构方面的开发。
dreamice:资深网络安全产品架构师,在内核开发和网络安全方面有雄厚技术功底,另外也涉猎嵌入式产品开发等方面,目前就职于国内一家知名网络安全公司,任产品经理及开发经理。
Godbach:ChinaUnix 论坛内核源码版版主,从事内核及网络安全的相关开发工作。欢迎大家来内核源码版交流内核相关的各种技术问题。
大赛试题:
试题一:
试题二:
开发一个报文处理程序,捕获指定网口接收的数据包,统计每个会话(五元组,sip,dip,sport,dport,protocol)的流量:字节数,报文数。测试目标,以处理性能和统计精确度为准。
试题三:
对输入进行从小到大排序,然后输出,输入第一行为case数量,第二行起每行是由空格隔开的一组数字,第一个数字是本case中需要排序的数字的数量,后面是要被排序的数字。
输入例子:
2
5 2 9 3 48 1
9 1 0 8 4 5 19 48 2232 112
输出:
1 2 3 9 48
0 1 4 5 8 19 48 112 2232
提示:注意可利用多核特性
试题四:
实现关系表的增删改查功能:
功能需求:关系表,即数据库中数据的表示方式,使用二维行列表示,请实现创建表(create)、删除表(drop)、插入行(insert)、删除行(delete)、修改某些行中的某些字段(update)、查询(select);
限制:表的最大列数不超过255列,最大行数的数量级为百万级,列类型均为int型,表中索引最大数量为16个,
输入:从标准输入输入,第一行为命令字,包括create/drop/insert/delete/update/select六种,当命令字是create时,第二行表示表中包含的列数,这些列由0 -- n-1标识,第三行是一组由空格隔开的数字,表示以这些数字标识的列上有索引,数字的数量不会超过16个或者表的列数;当命令字是drop时,表示将表删除;当命令字是insert时,第二行是一个数字,表示从下一行起要插入到表中的行数,第三行起,每行是一组由空格隔开的数字,数字的数量为表的列数;命令字是delete时,第二行是一个数字,表示后续需要delete的case的数量,每个case一行,第三行起,每行为一些由删除条件组成的case,格式为:no或者列序号1 > num1 and ( 列序号2 < num2 or 列序号3 >= num3 ) and 列序号4 <= num4 and 列序号5 = num5 and 列序号6 != num6,no表示没有条件,即,匹配所有行,条件的组合包含and和or运算,比较运算符包括> < >= <= = !=,由()括起的部分优先级高于未被括起的部分,()不会嵌套,字元之间均有空格隔开;当命令字为update时,第二行为case数量,每个case包括两行,第一行表示要修改的列以及要修改成的值,第二行为过滤条件(与delete的条件格式相同),每个case的第一行的格式为:列序号1 = num1 , 列序号2 = 列序号2 + num2 , 列序号3 = 列序号4 + num3,进行运算只有+和-,逗号分割各个要修改的列;命令字为select时,第二行是后续case数量,第三行起,每行的格式与delete命令字的条件格式相同。
输出:输出到标准输出,只有select命令字有输出,每个select的输入case的输出格式为,第一行为该case后续输出的行数,第二行起,每行是一组由空格隔开的数字,数字的数量与表的列数量相同,输出的各行是按照从第一个字段到最后一个字段升序排列的;
输入例子:
create
5
1 3 4
insert
3
1 2 3 4 5
10 11 12 13 14
100 101 102 103 104
update
1
0 = 4 , 2 = 2 + 100 , 3 = 4 + 1000
1 > 10 and 1 < 100 and ( 2 > 5 or 2 < 1 )
select
2
no
no
delete
1
no
drop
上述输入的输出:
3
1 2 3 4 5
4 11 112 1014 14
100 101 102 103 104
3
1 2 3 4 5
4 11 112 1014 14
100 101 102 103 104
提示:进行update操作时请注意Halloween Problem
提示:本题的运行及编译环境:
Linux,2.6.30内核,4核CPU,CPU主频2.0G,8G内存,x86_64,gcc4.1,pthread,请注明编译参数
在输出正确的情况下,考察指标:1、速度快;2、占用内存少;3、valgrind给出的结果显示无错误和内存泄漏 |
|