① 全国嵌入式系统c语言编程大赛是什么比赛
“顶嵌杯”全国嵌入式系统C语言编程大赛
对于嵌入式系统的研发来说最为基础的技术无疑是软件编程。C语言是嵌入式系统软件编程采用的最多的计算机语言之一。为了普及和推广C语言,培养和选拔C语言编程人才,中国软件行业协会嵌入式系统分会和中国嵌入式系统产业联盟联合主办首届“顶嵌杯”全国嵌入式系统C语言编程大赛。大赛由北京顶嵌开源科技有限公司承办,联合国内专业媒体,共同提倡学习和使用嵌入式系统软件编程的技术基础——C语言。大赛通过参赛者自愿报名、申请相关题目、按时提交答题、专家和阅卷系统结合阅卷、向社会公布大赛结果方式来进行。大赛得到了业内人士和专家的关注和大力支持。
本次大赛业内专家:倪光南(中科院院士)、何立民(《单片机与嵌入式系统应用》杂志社主编)、郭淳学(嵌入式系统分会秘书长)、李亚锋(顶嵌董事长)、何小庆(麦克泰董事长)、陈莉君(内核、驱动着名作者、着名教授)、林金龙(北京大学软件与微电子学院教授)、白剑波(Sun公司大中华区开源推广中心主任)、陈绪(英特尔中国Linux和开源战略经理)、陈曦(微软高级工程师)、欧文盛(顶嵌技术总监)、刘勇(研祥集团华北区嵌入式系统C语言程序首席设计师)等统一命题、评审,经评审选出的优胜者将获得丰厚奖品与相应荣誉证书。大赛本着“透明、公正、求真”的理念,对于获奖的作品和名单完全公开,欢迎大家监督与关注。详细介绍>>
感谢此次大赛中合作媒体的支持,他们是:央视网、北京电视台、网易教育、中国IT实验室、《单片机与嵌入式系统应用》杂志社、新华社、参考消息、CSDN、嵌入式在线、51CTO、电子工程师世界、与非网、赛才网、今日电子、嵌入式世界、新风IT教育、我可比、IT168。详细介绍>>
② 比较好的大学生C语言竞赛编程题 或者比较有档次的竞赛有哪些(本科、研究生可以参加的)
1:C语言竞赛编程题很多,你可以去北大的ACM网上测评系统JudgeOnline上做题,它能检查你的代码是否正确。
网址:http://acm.pku.e.cn/JudgeOnline/
可以注册一个账号,它会保存你每次提交正确的代码,上面的题比较多,范围广,各种难度试题都有。当然还有其他大学的一些JudgeOnline,如上海交大的。
2:有档次的竞赛首推ACM/ICPC(国际大学生程序设计竞赛),当然也有全国大学生程序设计大赛。每年有的网站和机构也会举办编程竞赛,如这几年网络举办的网络之星程序设计大赛也很有影响力。在给出的样题第一例有对ACM的详细介绍,样题是我们学校某届程序大赛初试题,比较简单。(此外ACM程序大赛也可以用C++编程,本科生、研一可参加)
3:一些简单的ACM样题(因为是国际性比赛,ACM试题都是E文的,下面部分是翻译过来的)
H-acm规则
Description
ACM/ICPC(国际大学生程序设计竞赛)是由ACM(Association for Computing Machinery,美国计算机协会)组织的年度性竞赛,始于1976年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事,是全世界公认的规模最大、规格最高的大学生程序设计竞赛,是参赛选手展示计算机才华的广阔舞台,是着名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。ACM/ICPC采用赛区选拔的方式产生参加世界决赛学校的资格,2001年,来自全球超过25个地区1141所大学的2362支队伍参加了第26届ACM/ICPC的赛区竞赛。在2002年3月,来自世界各地的约60支队伍,200多名选手参加了夏威夷总决赛的角逐。
在 ACM/ICPC 比赛中,均使用自动判题系统,这不仅减轻了ACM/ICPC比赛的举办方的负担,同时也使竞争更加的公正公平。 因为在比赛中,比赛成员就可以看到自己排名情况,这使的比赛更加的透明。
ACM/ICPC 比赛中排名是按如下方法排名的:
1: 解题数目最多的队伍排在前面。
2: 如果解题数目相等的队伍,总用时最少的排在前面。
注: 在比赛中,每道试题用时将从竞赛开始到试题解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不计时。 那么所有解答出来题目的用时和罚时加起来为:该队伍所花的总用时。
现在,需要你写一个程序来给比赛队伍进行排名(假设不超过200支队伍)。
Input
多行测试数据,每行包含各个队伍的比赛信息。
每个队伍格比赛信息表示格式为:
string n m 分别表示队名、解题数量、总用时(其中:队名为长度不超过30的字符串,解题数量为1…10之间的整数,罚时的范围不超过int的范围)
当输入end时,表示输入结束。
Output
按先后名次输出各个队伍的比赛信息。
每个比赛队伍占一行。
每行格式为:
string n m 分别代表 队名 解题数量 总用时。
Example Input
amstl 3 65
danoniao 2 50
lutedan 3 60
end
Example Output
lutedan 3 60
amstl 3 65
danoniao 2 50
G-我想我需要一只船屋
Description
佛瑞德最近正在考虑在路易斯安那洲买一片土地来盖一栋房子.在进行调查研究土地的过程中佛瑞德发现,路易斯安那洲的土地由于密西西比河的侵蚀会以每年50平方英里的速度缩减.佛瑞德计划后半生都在该地度过,所以他不希望在自己的有生之年房屋受到河水的侵蚀.现在他需要知道自己是否会受到河水的侵蚀.
在做了更多的调查之后,佛瑞德得知这里的土地沿河岸以半圆形方式侵蚀,这个半圆以(0,0)为圆心的,被X轴分成上下两部分,位于X轴下边的是河水,上面是河岸.在第一年开始的时候这个半圆范围为0,也就是说河岸未被河水侵蚀.(半圆如下图所示)
Input
第一行的一个正整数N指出下边有多少组数据需要计算.下边N行,每行包含两个实数X和Y,指出佛瑞德考虑的房子以(0,0)为原点的坐标系内的位置.以英里为单位.Y为非负数.
Output
计算在X,Y位置佛瑞德的房子在第几年会被河水侵蚀.与输入数据相对应每行以如下形式输出你的计算结果:“Property N: This property will begin eroding in year Z.”, 其中N为第N组数据,Z为你计算出的开始侵蚀的年数.在最后输出一句“END OF OUTPUT.”,表示计算结束.
Example Input
2
1.0 1.0
25.0 0.0
Example Output
Property 1: This property will begin eroding in year 1.
Property 2: This property will begin eroding in year 20.
END OF OUTPUT.
Hint
• 房屋的位置不会正好在半圆边界上,要不在内,要不在外。
• 你所提交的程序计算输出会由系统自动判断。你的结果要和输出要求精确匹配,字母大小写、标点符号和空格 。包括最后一行的语句也要精确匹配。
• 所有给定数据都以英里为单位。
F-N!的计算
Description
N!=N×(N-1)×(N-2)×(N-3)×....
Input
输入第一行为一正整数m,表示下边要计算几个 N!
下一行开始为m个正整数( 1 ≤ N ≤ 11 , m ≤ 9)
Output
输出这m个正整数的阶乘结果,每个一行.
Example Input
3
1
2
5
Example Output
1
2
120
I-Vertical Histogram
Description
Write a program to read four lines of upper case (i.e., all CAPITAL LETTERS) text input (no more than 72 characters per line) from the input file and print a vertical histogram that shows how many times each letter (but not blanks, digits, or punctuation) appears in the all-upper-case input. Format your output exactly as shown.
Input
* Lines 1..4: Four lines of upper case text, no more than 72 characters per line.
Output
* Lines 1..??: Several lines with asterisks and spaces followed by one line with the upper-case alphabet separated by spaces. Do not print unneeded blanks at the end of any line. Do not print any leading blank lines.
Example Input
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
Example Output
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
J-白棋胜?还是黑棋胜?
Description
Cinderalla最近迷上了玩五子棋.可是在和其它的小伙伴一起玩时她老是输,于是她想用计算机来帮她判断棋局是那方获胜.为了简便,我们先去掉一些规则.我们认为棋盘上只要有一方的棋有五个棋子相连就确定那一方获胜.你的任务是编写一个程序来判断我们给出的棋局是那一方获胜.
Input
输入数据只有一组.第一行有两个正整数m,n(5 ≤ m,n ≤ 10),分别代表棋盘的行数和列数.紧接着的2*n+1行是棋盘的描述,棋盘由"+","-","|"构成,其中"*"代表白棋,"#"代表黑棋. "+","-","|"的ASCII码分别为43、45、124
Output
输出数据只有一组,如果白棋获胜则输出White Win!,如果黑棋获胜则输出Black Win!
Example Input
5 10
+-+-+-+-+-+-+-+-+-+-+
| |*| | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+
| | |*|#| | | | | | |
+-+-+-+-+-+-+-+-+-+-+
| | |#|*|#|#| | | | |
+-+-+-+-+-+-+-+-+-+-+
| | | | |*|#| | | | |
+-+-+-+-+-+-+-+-+-+-+
| | | | | |*| | | | |
+-+-+-+-+-+-+-+-+-+-+
Example Output
White Win!
Hint
给出的棋局必有一方是获胜的.
③ C语言:歌星大奖赛中,有十个评委为参赛的选手打分,分数为1-100分,选手最后得分为去掉一个最高分
代码如下
#include <iostream>
using namespace std;
int main()
{int a[10],f[10],i,k,m,n,b,c,y,p,q,d,average,h,g;
cout<<"输入十位评委按顺序的打分:";
for(i=0;i<10;i++)
{cin>>a[i];
}
for(b=0;b<10;b++)
{while(a[b]>100||a[b]<0)
{cout<<"选手得分超出规定范围,请第"<<b+1<<"位评委重新打分!"<<endl;
cin>>a[b];
}
}
m=a[0];n=a[0];
for(k=0,c=0;k<9;k++)
{
if(m<=a[k+1]) m=a[k+1];
if(n>=a[k+1]) n=a[k+1];
c=c+a[k];
}
c=c+a[9];
y=c-m-n;
average=y/8;
for(p=0;p<10;p++)
{f[p]=a[p]-average;
if(f[p]<0) {f[p]=-f[p];}
}
q=f[0];d=f[0];
for(k=0,h=1;k<9;k++)
{
if(q<=f[k+1]) q=f[k+1] ,h=k+2;
if(d>=f[k+1]) d=f[k+1],g=k+2;
}
cout<<"选手的平均分是"<<average<<endl;
cout<<"最公平评委是第"<<g<<"位评委。"<<endl;
cout<<"最不公平评委是第"<<h<<"位评委。"<<endl;
return 0;
}
C语言代码技巧
1、使用合适的条件语句
除代码的可读性之外,程序的执行时间还主要依赖于做决定时所选择的条件结构类型。许多硬件工程师都熟悉简单的if语句的使用。然而,有时工程师可能没有意识到,如果第一个条件不正确,还可以使用else或else if语句。
2、用If/Else替代只用If
If/else if/else语句可能并不永远适用。如果需要检查若干个可能的条件,switch语句可能更合适。这样,处理器可以评估语句,然后从一个答案列表中选择下一步动作,而不用连续地评估一堆条件。
④ 求1988年国际C语言乱码大赛获奖程序分析,作者是Ian Phillipps
不要再问我,我是转贴滴。。。。。。
// 编译环境main入口,CRTO.C for main(__argc, __argv, _environ);
// 方法的编译原来,返回值的寄存器状态
// 变量的类型转换reinterpret_cast
// 使用一个新的main方法,将旧的用一个新方法'decode'表示
// 根据题设,本程序执行方式为无命令参数,即,argc==1
// 变量的声名规约,改变变量名以方便理解
// 进一步重构if语句
#include <stdio.h>
int decode(int arg1,int arg2,char* sCodec){
if(1<arg1){
if(arg1<3)
decode(-79,-13,sCodec+decode(-87,1-arg2,decode(-86,0,sCodec+1)+sCodec));
if(arg1<arg2)
decode(arg1+1,arg2,sCodec);
if(decode(-94,-27+arg1,sCodec)&&arg1==2){
// 内部递归,无后续分支,可展平为递推方式
if(arg2<13)
return decode(2,arg2+1,"%s %d %d\n");
else
return 9;
}else
return 16;
}else if(arg1<-72){
// 可根据arg1范围代入。本条件代入后略
return decode(arg2,arg1,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
}else if(arg1<-50){
// 内部递归,无后续分支,可展平为递推方式
if(arg2==*sCodec)
return putchar(sCodec[31]);
else
return decode(-65,arg2,sCodec+1);
}else if(arg1<0){
// 内部递归,无后续分支,可展平为递推方式
return decode((*sCodec=='/')+arg1,arg2,sCodec+1);
}else if(0<arg1){ // arg1 == 1,初始情况,根据arg1取值取舍
return decode(2,2,"%s");
}else{ // arg1 == 0
if(!(*sCodec=='/'))
// 内部递归,无后续分支,可展平为递推方式
return decode(0,decode(-61,*sCodec,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),sCodec+1);
else
return 1;
}
}
int main(int argc, char* argv[], char** _environ){
return decode(argc,(int)argv,(char*)_environ);
}
// 分析出递归顶层返回值。
// 注意所有return的含义,9/16/1/putchar(),Non Zero -> TRUE
// 分析arg1的内容,重构方法,有些坳,自己试着理解吧
#include <stdio.h>
int decode(int arg1,int arg2,char* sCodec){
if(1<arg1){
if(arg1<3){
decode(0,-86,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
decode(1-arg2,-87,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
decode(-13,-79,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
}
if(arg1<arg2)
decode(arg1+1,arg2,sCodec);
decode(-27+arg1,-94,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
if(arg1==2){
while(arg2<13){
arg2 ++;
sCodec = "%s %d %d\n";
// 上方条件代入
if(arg1<3){
decode(0,-86,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
decode(1-arg2,-87,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
decode(-13,-79,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
}
if(arg1<arg2)
decode(arg1+1,arg2,sCodec);
decode(-27+arg1,-94,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/");
}
}
}else if(arg1<-50){
// 判断条件可达,取舍
char* s = sCodec;
while(!(arg2==*s)){
s ++;
}
putchar(s[31]);
}else if(arg1<0){
for(;arg1<0;arg1+=(*sCodec=='/'))
sCodec ++;
decode(0,arg2,sCodec+1); // 条件合并
}else if(arg1 == 0){
while(!(*sCodec=='/')){
// 条件合并
decode(-61,*sCodec,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry");
sCodec ++;
}
}
return 1; // return TRUE only
}
int main(int argc, char* argv[], char** _environ){
decode(2,2,"%s");
return 9;
}