考生须知:
●考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试题。
●考试时间为4小时。时间截止后,提交答案无效。
●在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。
●选手可浏览自己已经提交的答案。被浏览的答案允许拷贝。
●对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
●选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。
●选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。
结果填空题:要求选手根据题目描述直接填写结果。求解方式不限。不要求源代码。
把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
代码填空题:要求选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码或符号)直接通过网页提交即可,不要书写多余的内容。
使用ANSI C/ANSI C++ 标准,不要依赖操作系统或编译器提供的特殊函数。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库。
注意: main函数结束必须返回0
注意: 所有依赖的函数必须明确地在源文件中 #include 所有源码必须在同一文件中。调试通过后,拷贝提交。 提交时,注意选择所期望的编译器类型。 1.结果填空 (满分2分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。 必须通过浏览器提交答案。 2.结果填空 (满分5分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。 必须通过浏览器提交答案。 3.结果填空 (满分7分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。 必须通过浏览器提交答案。 4.代码填空 (满分6分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式。 只要求填写缺失的代码部分,千万不要画蛇添足,填写多余的已有代码或符号。 必须通过浏览器提交答案。 5.代码填空 (满分11分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式。 只要求填写缺失的代码部分,千万不要画蛇添足,填写多余的已有代码或符号。 必须通过浏览器提交答案。 6.结果填空 (满分12分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。 必须通过浏览器提交答案。 7.程序设计(满分10分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 仔细阅读程序的输入、输出要求,千万不要输出没有要求的、多余的内容,例如:“请您输入xx数据:”。 建议仔细阅读示例,不要想当然! 程序处理完一个用例的数据后,立即退出(return 0),千万不要循环等待下一个用例的输入。 程序必须使用标准输入、标准输出,以便于机器评卷时重定向。 对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 代码中允许使用STL类库。 注意: main函数结尾需要return 0 注意: 所有依赖的函数必须明确地在源文件中 #include 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 提交时,注意选择所期望的编译器类型。 8.程序设计(满分12分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 仔细阅读程序的输入、输出要求,千万不要输出没有要求的、多余的内容,例如:“请您输入xx数据:”。 建议仔细阅读示例,不要想当然! 程序处理完一个用例的数据后,立即退出(return 0),千万不要循环等待下一个用例的输入。 程序必须使用标准输入、标准输出,以便于机器评卷时重定向。 对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 代码中允许使用STL类库。 注意: main函数结尾需要return 0 注意: 所有依赖的函数必须明确地在源文件中 #include 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 提交时,注意选择所期望的编译器类型。 9.程序设计(满分15分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 仔细阅读程序的输入、输出要求,千万不要输出没有要求的、多余的内容,例如:“请您输入xx数据:”。 建议仔细阅读示例,不要想当然! 程序处理完一个用例的数据后,立即退出(return 0),千万不要循环等待下一个用例的输入。 程序必须使用标准输入、标准输出,以便于机器评卷时重定向。 对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 代码中允许使用STL类库。 注意: main函数结尾需要return 0 注意: 所有依赖的函数必须明确地在源文件中 #include 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 提交时,注意选择所期望的编译器类型。 10.程序设计(满分20分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,必须通过编程的方式解决问题。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 仔细阅读程序的输入、输出要求,千万不要输出没有要求的、多余的内容,例如:“请您输入xx数据:”。 建议仔细阅读示例,不要想当然! 程序处理完一个用例的数据后,立即退出(return 0),千万不要循环等待下一个用例的输入。 程序必须使用标准输入、标准输出,以便于机器评卷时重定向。 对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 代码中允许使用STL类库。 注意: main函数结尾需要return 0 注意: 所有依赖的函数必须明确地在源文件中 #include 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 提交时,注意选择所期望的编译器类型。 标题:猜年龄 小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”。小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。” 请你写出:小明的较小的妹妹的年龄。 注意: 只写一个人的年龄数字,请通过浏览器提交答案。不要书写任何多余的内容。 标题:切面条 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢? 答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。 标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求。 如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。 请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。 标题:史丰收速算 史丰收速算法的性贡献是:从高位算起,预测进位。不需要九九表,彻底了传统手算! 速算的核心基础是:1位数乘以多位数的乘法。 其中,乘以7是最复杂的,就以它为例。 因为,1/7 是个循环小数:0.142857...,如果多位数超过 142857...,就要进1 同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过 n/7,就要进n 下面的程序模拟了史丰收速算法中乘以7的运算过程。 乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。 乘以 7 的进位规律是: 满 142857... 进1, 满 285714... 进2, 满 428571... 进3, 满 571428... 进4, 满 714285... 进5, 满 857142... 进6 请分析程序流程,填写划线部分缺少的代码。 //计算个位 int ge_wei(int a) { if(a % 2 == 0) return (a * 2) % 10; else return (a * 2 + 5) % 10; } //计算进位 int jin_wei(char* p) { char* level[] = { "142857 "285714 "428571 "571428 "714285 "857142" }; char buf[7]; buf[6] = '\\0'; strncpy(buf,p,6); int i; for(i=5; i>=0; i--){ int r = strcmp(level[i], buf); if(r<0) return i+1; while(r==0){ p += 6; strncpy(buf,p,6); r = strcmp(level[i], buf); if(r<0) return i+1; ______________________________; //填空 } } return 0; } //多位数乘以7 void f(char* s) { int head = jin_wei(s); if(head > 0) printf("%d", head); char* p = s; while(*p){ int a = (*p-'0'); int x = (ge_wei(a) + jin_wei(p+1)) % 10; printf("%d",x); p++; } printf("\\n"); } int main() { f("428571428571"); f("34553834937543"); return 0; } 注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字) 标题:锦标赛 如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少?我们可以从体育锦标赛中受到启发。 如图【】所示,8个选手的锦标赛,先两两捉对比拼,淘汰一半。优胜者再两两比拼...直到决出第一名。 第一名输出后,只要对黄色标示的位置重新比赛即可。 下面的代码实现了这个算法(假设数据中没有相同值)。 代码中需要用一个数组来表示图中的树(注意,这是个满二叉树,不足需要补齐)。它不是存储数据本身,而是存储了数据的下标。 第一个数据输出后,它所在的位置被标识为-1 //重新决出k号位置,v为已输出值 void pk(int* a, int* b, int n, int k, int v) { int k1 = k*2 + 1; int k2 = k1 + 1; if(k1>=n || k2>=n){ b[k] = -1; return; } if(b[k1]==v) pk(a,b,n,k1,v); else pk(a,b,n,k2,v); //重新比较 if(b[k1]<0){ if(b[k2]>=0) b[k] = b[k2]; else b[k] = -1; return; } if(b[k2]<0){ if(b[k1]>=0) b[k] = b[k1]; else b[k] = -1; return; } if(______________________) //填空 b[k] = b[k1]; else b[k] = b[k2]; } //对a中数据,输出最大,次大元素位置和值 void f(int* a, int len) { int n = 1; while(n int i; for(i=0; i else b[n-1+i] = -1; } //从最后一个向前处理 for(i=2*n-1-1; i>0; i-=2){ if(b[i]<0){ if(b[i-1]>=0) b[(i-1)/2] = b[i-1]; else b[(i-1)/2] = -1; } else{ if(a[b[i]]>a[b[i-1]]) b[(i-1)/2] = b[i]; else b[(i-1)/2] = b[i-1]; } } //输出树根 printf("%d : %d\\n", b[0], a[b[0]]); //值等于根元素的需要重新pk pk(a,b,2*n-1,0,b[0]); //再次输出树根 printf("%d : %d\\n", b[0], a[b[0]]); free(b); } int main() { int a[] = {54,55,18,16,122,17,30,9,58}; f(a,9); return 0; } 请仔细分析流程,填写缺失的代码。 通过浏览器提交答案,只填写缺失的代码,不要填写已有代码或其它说明语句等。 标题:扑克序列 , 一共4对扑克牌。请你把它们排成一行。 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。 请填写出所有符合要求的排列中,字典序最小的那个。 例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。 请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。下载本文