重庆理工大学程序设计大赛选拔试题

合集下载

重庆理工大学算法与数据结构试卷三

重庆理工大学算法与数据结构试卷三

D. SB+225
6.有一个有序表为{2,3,8,10,30,40,45,62,75,77,88,95,99},当二分查
找值为 88 的结点时,需( )次比较后查找成功。
A. 2 B. 3 C. 4 D. 5
7.队列的特点是( )。
A. 先进先出
B. 先进后出
C. 同时进出
D. 以上都不对
8.一个有 m 个顶点的有向图最多有( )条边。
{int key;
struct pnode * lchild , * rchild;
}pnode;
void searchinsert(int x, pnode t ) /*t 为二叉排序树根结点的指针*/
{if ( (1) ) {p=( pnode *)malloc(sizeof(pnode)); p->key=x;p->lchild=null; p->rchild=null;t=p;
3.一个向量(一维数组)第一个元素的存储地址是 100,每个元素的长度为 2,则第 6
个元素的地址是( )。
A. 110
B. 108
C. 106
D. 112
4.判定一个循环队列 Q(最多元素为 m)为空的条件是( )。
A. Q->front==Q->rear
B. Q->front!=Q->rear
C. Q>front=(Q->rear+1) % m
D. Q->front!=(Q->rear+1) % m
5.数组 B 中,每个元素的长度为 3 个字节,行下标 i 从 1 到 8,列下标 j 从 1 到 10,
从首地址 SB 开始连续存放在存储器内,该数组按行存放时,元素 A[8][5]的起始地址为

大学程序设计大赛试题答案

大学程序设计大赛试题答案

大学程序设计大赛试题答案一、选择题1. 在C++中,下列哪个关键字用于定义常量?A. staticB. volatileC. constD. mutable答案:C2. 以下关于Python中的列表(list)说法正确的是:A. 列表是不可变的序列类型。

B. 列表不支持添加元素。

C. 列表可以包含不同类型的元素。

D. 列表的元素不能被删除。

答案:C3. 在Java中,关于异常处理的描述,以下哪项是正确的?A. try块中必须跟catch块。

B. catch块可以捕获所有类型的异常。

C. finally块可以用于执行清理操作,无论是否发生异常都会执行。

D. throw关键字用于声明一个可能抛出的异常类型。

答案:C4. 以下关于数据库事务的描述,哪项是错误的?A. 事务具有原子性。

B. 事务具有一致性。

C. 事务具有隔离性。

D. 事务不具备持久性。

答案:D5. 在HTML5中,用于创建交互式内容的标签是:A. <canvas>B. <svg>C. <iframe>D. <audio>答案:A二、填空题1. 在JavaScript中,可以使用________函数来获取字符串的长度。

答案:length2. 在Python中,使用________关键字可以遍历字典中的所有键。

答案:keys()3. SQL语句中,用于删除表中所有记录但保留表结构的命令是________。

答案:TRUNCATE TABLE4. 在C语言中,使用________关键字可以定义一个指针变量。

答案:*(星号)5. 正则表达式中,\d表示匹配一个________字符。

答案:数字三、编程题1. 题目描述:编写一个程序,输入一个整数n,输出n的阶乘。

C++代码示例:```cpp#include <iostream>using namespace std;int factorial(int n) {if (n <= 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n;cin >> n;cout << factorial(n) << endl;return 0;}```2. 题目描述:编写一个Python程序,实现一个简单的计算器,支持加、减、乘、除功能。

编程竞赛知识试题及答案

编程竞赛知识试题及答案

编程竞赛知识试题及答案一、选择题1. 在C++语言中,以下哪个关键字用于定义类?A. structB. classC. unionD. enum答案:B2. 以下哪个算法是用于排序的?A. 快速傅里叶变换(FFT)B. 深度优先搜索(DFS)C. 归并排序D. 欧几里得算法答案:C3. 在计算机科学中,递归函数的基本情况是什么?A. 调用自身B. 调用其他函数C. 终止条件D. 循环调用答案:C二、判断题1. 在Python中,列表和元组都是可变的。

()答案:错误(列表是可变的,元组是不可变的)2. 在数据结构中,栈是一种后进先出(LIFO)的数据结构。

()答案:正确3. 哈希表是一种基于数组的数据结构,它通过哈希函数来计算数据的存储位置。

()答案:正确三、简答题1. 请简述什么是二叉搜索树,并说明其基本操作。

答案:二叉搜索树(BST)是一种特殊的二叉树,其中每个节点的值都大于或等于其左子树上所有节点的值,并且小于或等于其右子树上所有节点的值。

基本操作包括插入、删除和查找。

2. 解释什么是动态规划,并给出一个简单的例子。

答案:动态规划是一种通过将复杂问题分解成更小的子问题来解决的方法,并且存储这些子问题的解以避免重复计算。

一个简单的例子是斐波那契数列,可以通过动态规划来避免指数级的时间复杂度。

四、编程题1. 编写一个函数,实现对一个整数数组进行排序。

答案:(示例代码,使用Python语言)```pythondef sort_array(arr):return sorted(arr)```2. 编写一个函数,实现判断一个整数是否为素数。

答案:(示例代码,使用Python语言)```pythondef is_prime(n):if n <= 1:return Falsefor i in range(2, int(n0.5) + 1):if n % i == 0:return Falsereturn True```结束语本次编程竞赛知识试题及答案到此结束,希望这些题目能够帮助你更好地理解和掌握编程竞赛中的相关知识点。

编程竞赛考试题库及答案

编程竞赛考试题库及答案

编程竞赛考试题库及答案1. 问题描述编写一个函数,该函数接收一个整数数组和一个目标值,找出数组中和为目标值的两个数的索引,并返回一个包含这两个索引的数组。

2. 输入格式输入包含两行,第一行为数组的长度 \( n \),第二行为 \( n \) 个整数,以空格分隔。

3. 输出格式输出一行,包含两个整数,用空格分隔,表示和为目标值的两个数的索引(索引从0开始)。

4. 样例输入42 7 11 155. 样例输出1 36. 问题分析此问题可以通过一次遍历数组,并使用哈希表记录每个元素的索引来解决。

遍历数组时,对于每个元素,计算目标值与当前元素的差值,然后在哈希表中查找是否存在该差值。

如果存在,则返回当前元素的索引和差值对应的索引。

7. 算法实现```pythondef two_sum(nums, target):hash_map = {}for i, num in enumerate(nums):difference = target - numif difference in hash_map:return [hash_map[difference], i]hash_map[num] = ireturn []```8. 测试用例- 输入: [3, 2, 4], 6- 输出: [1, 2]9. 注意事项- 如果数组中不存在两个数的和等于目标值,则返回空数组。

- 确保索引从0开始计数。

- 考虑数组中可能存在重复元素的情况。

10. 扩展问题如果数组中存在多个满足条件的数对,如何返回所有可能的数对索引?。

2017年重庆理工大学电子设计竞赛试题

2017年重庆理工大学电子设计竞赛试题

2017年重庆理工大学电子设计竞赛试题A题多种波形产生电路一、任务使用555,74ls74,LM324芯片,设计制作一个频率可变的可输出方波I,方波II,正弦波I,正弦波II的多种波形产生电路,给出设计方案,详细电路图,和自测数据波形。

使用555时基电路产生频率为15~45K或者的方波I做信号源,利用此方波,可在四个通道输出4种波形:每通道输出方波II,三角波,正弦波I,正弦波II中的一种波形,每个通道的输出阻抗为600欧姆。

二、要求1)使用555时基电路产生频率为15khz~45khz连续可调,输出电压幅度为1V 的方波。

(25分)2)使用数字电路74ls74,产生频率为3.75khz~10khz连续可调,输出幅度为1V的方波II。

(15分)3)使用数字电路74ls74,产生频率为3.75khz~10khz连续可调,输出电压峰峰值为3V的三角波。

(20分)4)产生15khz~25khz连续可调,输出电压幅度峰峰值为3V的正弦波I。

(20分)5)产生输出频率为225khz,输出电压幅度峰峰值为8V的正弦波II。

(20分) 6)设计报告(20分)说明:方波三角板和正弦波输出波形应无明显失真(使用示波器测量时),频率误差不大于5%,通带内输出电压误差不大于5%。

要求预留方波I,方波II,三角波正弦波和电源测试端子。

每通道输出的负载电阻600欧姆应标示清楚、之于明显位置,便于检查。

不能外加555,74ls74,和324芯片,不能使用其他额外芯片。

2017年重庆理工大学电子设计竞赛试题B题无轴传动时钟一、任务设计一个简单的无轴传动时钟演示系统,系统由两个独立的表盘组成,均采用直流伺服电机带动指针转动,二个表盘之间不能采用机械传动。

两个表盘的指针初始位置均指向12点方向,两个表盘的指针长度有明显差异。

二、要求1)设计一个数字时钟,可显示分秒,显示精度0.1秒;(25分)2)秒针每分钟匀速旋转360度。

当秒针从12点位置开始旋转,转动360度后再次指向12点位置时,分针在0.1秒内转动6度(25分)3)分针每次转动,均同步发出明显的声光提示(10分)4)恢复初始位置后,输入任意分秒时间后,两个表盘的指针在1秒内指向指定位置,并重新开始计时(30分)5)其他(10分)6)设计报告(20分)2017年重庆理工大学电子设计竞赛试题B题LED 闪光灯电源(H题)一、任务设计并制作一个LED闪光灯电源。

重庆理工大学算法与数据结构试卷一

重庆理工大学算法与数据结构试卷一
} 2、设二叉树采用二叉链表表示,编写算法,将二叉树中所有结点的左右子树 相互交换。 Typedef struct node {
int data; struct node * lchild, rchild; } *Bitree; void Bitree_Revolute(Bitree T)//交换所有结点的左右子树 {
while (low<high && R[low].key<=pivotkey)
;
R[high] = R[low];// 将比枢轴记录大的记录移到高端
}
R[low] =
; // 枢轴记录到位
return low; // 返回枢轴位置
} // Partition
4、折半查找算法:
int binsrch(JD r[],int n,int k)
于电话号码从 7 位升为 8 位(加 60000000),请用 C 语言编写算法,实现电话
薄中所有电话号码从 7 位升为 8 位。
Typedef struct node
{ char name[9];//姓名
long data;//电话号码 struct node *next;
}pointer; int change(pointer L) {
D.连续不连续都可以
3.一个顺序表第一个元素的存储地址是 100,每个元素的长度为 2,则第 5 个元素
的地址是( )
A.110
B.108
C.100
D.120
4.串是一种特殊的线性表,其特殊性体现在(

A.可以顺序存储
B.数据元素是一个字符
C.可以链接存储
D.数据元素可以是多个字符
5.顺序查找法适合于存储结构为(

程序设计大赛试题及答案()

程序设计大赛试题及答案()

试题1、数学黑洞(程序文件名maths.c/maths.cpp)【问题描述】任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。

对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。

【输入】一行,一个4位正整数n(1000< n<9999)【输出】掉进黑洞的步数输入1234输出32、进制转换(程序文件名conver.c/conver.cpp)【问题描述】任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。

【输入】一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。

【输出】转换后的数【输入输出样例】输入255 8输出3773、分数线划定(程序文件名score.c/score.cpp)【问题描述】公务员选拔工作正在 A 市如火如荼的进行。

为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。

面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。

现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。

【输入】第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。

输入数据保证m*150%向下取整后小于等于n。

第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。

数据保证选手的报名号各不相同。

2017年重庆理工大学电子设计竞赛试题

2017年重庆理工大学电子设计竞赛试题

2017年重庆理工大学电子设计竞赛试题A题多种波形产生电路一、任务使用555,74ls74,LM324芯片,设计制作一个频率可变的可输出方波I,方波II,正弦波I,正弦波II的多种波形产生电路,给出设计方案,详细电路图,和自测数据波形。

使用555时基电路产生频率为15~45K或者的方波I做信号源,利用此方波,可在四个通道输出4种波形:每通道输出方波II,三角波,正弦波I,正弦波II中的一种波形,每个通道的输出阻抗为600欧姆。

二、要求1)使用555时基电路产生频率为15khz~45khz连续可调,输出电压幅度为1V 的方波。

(25分)2)使用数字电路74ls74,产生频率为3.75khz~10khz连续可调,输出幅度为1V的方波II。

(15分)3)使用数字电路74ls74,产生频率为3.75khz~10khz连续可调,输出电压峰峰值为3V的三角波。

(20分)4)产生15khz~25khz连续可调,输出电压幅度峰峰值为3V的正弦波I。

(20分)5)产生输出频率为225khz,输出电压幅度峰峰值为8V的正弦波II。

(20分) 6)设计报告(20分)说明:方波三角板和正弦波输出波形应无明显失真(使用示波器测量时),频率误差不大于5%,通带内输出电压误差不大于5%。

要求预留方波I,方波II,三角波正弦波和电源测试端子。

每通道输出的负载电阻600欧姆应标示清楚、之于明显位置,便于检查。

不能外加555,74ls74,和324芯片,不能使用其他额外芯片。

2017年重庆理工大学电子设计竞赛试题B题无轴传动时钟一、任务设计一个简单的无轴传动时钟演示系统,系统由两个独立的表盘组成,均采用直流伺服电机带动指针转动,二个表盘之间不能采用机械传动。

两个表盘的指针初始位置均指向12点方向,两个表盘的指针长度有明显差异。

二、要求1)设计一个数字时钟,可显示分秒,显示精度0.1秒;(25分)2)秒针每分钟匀速旋转360度。

当秒针从12点位置开始旋转,转动360度后再次指向12点位置时,分针在0.1秒内转动6度(25分)3)分针每次转动,均同步发出明显的声光提示(10分)4)恢复初始位置后,输入任意分秒时间后,两个表盘的指针在1秒内指向指定位置,并重新开始计时(30分)5)其他(10分)6)设计报告(20分)2017年重庆理工大学电子设计竞赛试题B题LED 闪光灯电源(H题)一、任务设计并制作一个LED闪光灯电源。

重庆市第二届程序设计大赛题目

重庆市第二届程序设计大赛题目

重庆市第二届程序设计大赛1 数字的游戏输入文件名:gaspar.in 输出文件名:estdout.pc2问题描述:N个教徒和N个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是他们想了一个办法:2N个人围成一圈,从第一个人开始依次循环报数,每数到第9个人就将他扔进大海,如此循环直到只剩下N个人为止。

问怎样的站法,才能使得每次投入大海的都是非教徒。

输入:输入文件由一行构成,就是N的值输出:输出文件是一行字符串,字符串由N个'@'字符(代表教徒)和N个'+'字符(代表非教徒)排列组成。

该排列使得按照提述方法每次投入大海的都是非教徒。

输入样本:15输出样本:@@@@+++++@@+@@@+@++@@+++@++@@+2 翻译输入文件:trans.in 输出文件:estdout.pc2问题描述:小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。

这个软件的原理很简单,他只是从头到尾,一次将每个单词用对应的中文含义来替换。

对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它来翻译;如果内存中没有,软件就会在外存中的词典里查找,查出单词的中文含义然后翻译,并将这个单词和含义放入内存,以备后续查找和翻译。

假设内存中有M个单元,每个单元能存放一个单词和含义。

每当软件将一个新单词存入内存前,如果当前内存中已经存入的单词数不超过M,软件会将新单词存入下一个未使用的内存单元;若内存中已存入M个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。

假设一篇英语文章长度为N个单词,给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。

输入:多组数据,每组数据共2行。

每行中两个数之间用一个空格隔开。

第一行为两个正整数M和N(0<M<=100,0<N<=1000),代表内存容量和文章长度。

大学生程序设计竞赛试题(正式赛)

大学生程序设计竞赛试题(正式赛)

中原工学院第一届大学生程序设计竞赛正式比赛试题主办:中原工学院教务处学生处校团委计算机学院承办:中原工学院计算机学院地点:计算机学院实验中心406实验室时间:2010年4月11日【试题一】兔子【题目描述】兔子具有很强的繁殖能力。

一对成年兔子每个月可以繁殖一对小兔子,而一对小兔子经过m个月之后,就会长成一对成年兔子。

通过分析,我们可以看出:若m=2的时候,每个月兔子的对数构成了一个Fibonacci数列。

但是,若m<>2,这个问题看起来就不那么简单了。

你的任务是计算:假定初始只有一对兔子,那么,经过d个月之后,共有多少对兔子?可以假定,在此阶段没有任何兔子死亡。

【输入】输入包括多组测试数据。

每组测试数据的一行中包括2个整数m(1<=m<=10),d(1<=d<=30)。

当测试数据遇到一行中有两个0时,即m=d=0,测试数据结束。

【输出】针对每组测试数据,在每一行输出经过d个月后共有多少对兔子。

【输入样例】2 33 50 0【输出样例】59【试题二】网页浏览器【题目描述】Mozilla Firefox是一个自由的,开放源码的网页浏览器,适用于Windows, Linux 和MacOS X等平台。

Firefox火狐校园大使是Mozilla开源社区项目的一部分,针对在校的高年级本科生和研究生以及众多技术爱好者,在校园中推广开源项目和开放技术,让更多的开发人员受益于Mozilla的开放技术和免费资源。

你很荣幸得到了这样一个机会,为Firefox编写一个重要的导航模块。

正如上图所示,导航模块要接受用户的后退、前进、进入用户输入的网址以及清空浏览记录等操作。

【输入】为了简化问题,用户所有的操作都以字符的形式从标准输入读入。

每一行描述一个操作,各操作的格式和功能如下所示:浏览器启动时默认进入中原工学院的主页” .cn”【输出】对于每一个需要输出网址的操作,输出对应的网址。

每个网址恰好占一行,不要有多余的字符(包括空格和换行)。

重庆理工大学-C语言程序设计基础教程_习题答案(纪纲_金艳)

重庆理工大学-C语言程序设计基础教程_习题答案(纪纲_金艳)

习题答案第1章1.1 填空题1.1.1 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main 。

1.1.2 一个函数由__函数头__和__函数体__两部分组成。

1.1.3 在C语言中,输入操作是由库函数__scanf 完成的,输出操作是由库函数_printf_完成的。

1.1.4 通过文字编辑建立的源程序文件的扩展名是_.c__;编译后生成目标程序文件,扩展名是__.obj__;连接后生成可执行程序文件,扩展名是_.exe_;运行得到结果。

1.1.5 C语言程序的基本单位或者模块是__函数__。

1.1.6 C语言程序的语句结束符是_;___。

1.1.7 编写一个C程序,上机运行要经过的步骤:______________________________。

1.1.8 在一个C语言源程序中,注释部分两侧的分界符分别为_/*__和__*/__。

1.1.9 C语言中的标识符只能由三种字符组成,它们是字母、数字和下划线。

且第一个字符必须为字母或下划线。

1.1.10 C语言中的标识符可分为关键字、预定义标识符和用户标识符3类。

1.2 选择题1.2.1 一个C程序的执行是从( A )。

A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束1.2.2 以下叙述不正确的是(C)。

A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C) 在C程序中,注释说明只能位于一条语句的后面D) C程序的基本组成单位是函数1.2.3 C语言规定:在一个源程序中,main函数的位置( C )。

A)必须在程序的开头B)必须在系统调用的库函数的后面C)可以在程序的任意位置D)必须在程序的最后1.2.4 C编译程序是(A)。

A)将C源程序编译成目标程序的程序B)一组机器语言指令C) 将C源程序编译成应用软件D) C程序的机器语言版本1.2.5 要把高级语言编写的源程序转换为目标程序,需要使用(D)。

程序设计试题及答案

程序设计试题及答案

程序设计试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. returnD. function答案:A2. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable-nameC. variable#nameD. variable_name答案:D3. 在C语言中,以下哪个语句用于结束一个循环?A. continueB. breakC. exitD. return答案:B4. 以下哪个选项是C语言中的条件语句?A. ifB. switchC. forD. while答案:A5. 在C语言中,数组的索引是从哪个数字开始的?A. 0B. 1C. -1D. 随机数答案:A6. 以下哪个是C语言中的标准输入输出库?A. <iostream>B. <stdio.h>C. <iostream.h>D. <stdio>答案:B7. 在C语言中,以下哪个函数用于计算两个数的和?A. pow()B. sqrt()C. abs()D. sum()答案:D(注意:sum()不是C语言标准库函数,这里假设为自定义函数)8. 以下哪个选项是C语言中的循环结构?A. if-elseB. switch-caseC. for, while, do-whileD. try-catch答案:C9. 在C语言中,以下哪个关键字用于定义一个结构体?A. classB. structC. unionD. enum答案:B10. 下列哪个选项是C语言中的位操作符?A. &&B. ||C. &D. ++答案:C二、填空题(每题2分,共20分)11. 在C语言中,使用________关键字可以定义一个指针。

答案:int* 或者 *(具体类型根据上下文)12. 一个C语言程序的执行从________函数开始。

编程竞赛知识试题库及答案

编程竞赛知识试题库及答案

编程竞赛知识试题库及答案一、选择题1. 下列哪个不是编程语言的常见特性?A. 语法B. 语义C. 编译D. 界面答案:D2. 在编程中,递归算法的基本原理是什么?A. 重复执行相同的操作B. 将问题分解成更小的问题C. 使用循环结构D. 存储所有可能的解决方案答案:B3. 以下哪个选项是面向对象编程的基本原则之一?A. 继承B. 封装C. 多态D. 所有选项都是答案:D4. 在C++中,以下哪个关键字用于定义类?A. structB. classC. interfaceD. type答案:B5. 以下哪个数据结构最适合实现堆栈?A. 链表B. 数组C. 队列D. 树答案:A二、填空题1. 在编程中,_________ 是一种常见的算法设计技术,它通过将问题分解成更小的子问题来解决。

答案:分治法2. 一个程序的_________ 是指程序中定义的变量和函数的集合。

答案:作用域3. 在数据结构中,_________ 是一种允许在表的任何位置插入和删除元素的数据结构。

答案:链表4. 在面向对象编程中,_________ 是指一个类可以继承另一个类的属性和方法。

答案:继承5. 在数据库中,_________ 是一种特殊的表,用于存储两个表之间的关系。

答案:关联表三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。

答案:算法的时间复杂度是指算法执行所需的时间随输入数据规模增长的变化趋势。

例如,对于一个简单的线性搜索算法,其时间复杂度为O(n),意味着搜索时间随着元素数量的增加而线性增长。

2. 解释什么是哈希表,并说明其优点。

答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。

其优点包括快速的查找速度,通常为O(1),以及高效的内存使用。

四、编程题1. 编写一个函数,实现对整数列表进行排序。

答案:(示例代码,使用Python语言)```pythondef sort_list(nums):return sorted(nums)```2. 编写一个函数,实现对字符串进行反转。

重庆理工大学程序设计大赛选拔试题

重庆理工大学程序设计大赛选拔试题

重庆理工大学程序设计大赛选拔试题试题1:【反转单词】给你一些英文句子,请将这些句子中的每个英语单词反转,然后再将其输出.这里的英语单词仅由大小写英文字母组成.【输入】输入文件名“sentence.in”多个英文句子,每句占一行,且每句不超过80个字符.【输出】输出文件名“estdout.pc2”按题目要求输出。

程序运行后结果示例:【样例输入】Helloworld!Happyprogramming,happylife!【样例输出】olleHdlrow!yppaHgnimmargorp,yppahefil!试题2:【全排列问题】大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。

要求给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。

比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。

【输入】输入文件名“permutation.in”第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 …n的一个排列。

【输出】输出文件名“estdout.pc2”对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。

程序运行后结果示例:【样例输入】33 12 3 13 13 2 110 21 2 3 4 5 6 7 8 9 10【样例输出】3 1 21 2 31 2 3 4 5 6 7 9 8 10试题3:【猜数游戏】猜数游戏在XXX国非常流行,游戏过程大概是这样的……一个裁判,三个路人,路人足够聪明。

重庆理工大学算法与数据结构试卷二

重庆理工大学算法与数据结构试卷二

序列?(

A. 1,3,2,4 B. 2,3,4,1
C. 4,3,1,2 D. 3,4,2,1
10.带权有向图用邻接矩阵 A 存储,则顶点 I 的入度等于 A 中(
)。
A.第 I 行非∞的元素之和
B.第 I 列非∞的元素之和
C.第 I 行非∞且非 0 的元素个数 D.第 I 列非∞且非 0 的元素个数
#include “malloc.h”
struct node{ char data; struct node *lchild , *rchild;
} bnode;
typedef struct node * blink;
void inorder(blink bt)
{
if(bt)
{ inorder(bt->
二、判断题(正确打√,错误打×;每空 1 分,共 10 分)
1.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上一定相邻。( ) 2.空格串不是空串。( )
3.在含 n 个结点的无向连通图对应的生成树中,有且仅含 n 条边。( ) 4.在树的孩子兄弟表示法中,其根结点的右子树总是为空。( ) 5. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和。( ) 6.作进栈运算时,应先判别栈是否为空( ) 7.二叉排序树的查找和折半查找的时间复杂性相同。( ) 8. 赫夫曼树是带权路径长度最短的树,含 n 个叶子结点的赫夫曼树共有 2n-1 个结点。( ) 9. 设一个栈的输入序列为 a,b,c,d,则借助一个栈所得的输出序列不可能是 a,c,d, b.( ) 10. 深度为 7 的二叉树至多有 127 个结点.( )
}
六、 算法设计与分析(每小题 10 分,共 30 分)

编程竞赛知识试题题库及答案

编程竞赛知识试题题库及答案

编程竞赛知识试题题库及答案一、选择题1. 在C++中,以下哪个关键字用于定义类?A. structB. classC. enumD. union答案:B2. 在Python中,以下哪个是正确的字典(dictionary)声明方式?A. dict = {1, 2, 3}B. dict = {1: 'one', 2: 'two'}C. dict = [1, 2, 3]D. dict = (1: 'one', 2: 'two')答案:B3. 以下哪个算法是用于排序的?A. 快速排序B. 深度优先搜索C. 广度优先搜索D. 二分查找答案:A4. 在JavaScript中,以下哪个是正确的函数声明?A. function myFunc() {}B. myFunc() {}C. var myFunc = function() {}D. All of the above答案:D5. 以下哪个是图的数据结构?A. 数组B. 链表C. 树D. 矩阵答案:C二、判断题1. 在Java中,所有的类都必须继承自Object类。

()答案:正确2. 在编程中,递归是一种常见的算法,它允许函数调用自身来解决问题。

()答案:正确3. 在C语言中,使用指针可以访问数组的元素。

()答案:正确4. 哈希表是一种基于数组的数据结构,它通过哈希函数将键映射到表中的位置。

()答案:正确5. 在编程中,全局变量可以在程序的任何地方被访问和修改。

()答案:正确三、简答题1. 请简述什么是栈(Stack)?答案:栈是一种遵循后进先出(LIFO)原则的数据结构,只允许在一端(栈顶)进行数据的添加和删除操作。

2. 请解释什么是递归算法,并给出一个简单的例子。

答案:递归算法是一种在函数中调用自身的算法。

例如,计算阶乘的函数可以递归地定义为:n的阶乘是n乘以(n-1)的阶乘,当n等于1时,阶乘为1。

重庆科技学院第一届ACM程序设计大赛试题0

重庆科技学院第一届ACM程序设计大赛试题0

重庆科技学院首届程序设计大赛暨重庆市第七届程序设计大赛选拔赛试题一、求矩阵主对角线、次角线上质数之和〔难度系数:1〕(输入文件:,输出文件:文本文件中有一个队列数同样的二维矩阵。

每组数据的第一行由空格分开的两个数分别为该二维矩阵的行数、和列数;行数和列数不超出100。

从第二行开始为该二维矩阵,各个元素间由空格分格。

求该二维矩阵主对角线与次对角线上全部质数之和并将该结果输出到文件中。

样例输入:4343678699437:22二、密码问题〔难度系数:2〕(输入文件:,输出文件:网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。

其实要想能安放心心地上网其实也不难,学点平安知识就能够。

第一,我们就要设置一个平安的密码。

那什么样的密码才叫平安的呢一般来说一个比拟平安的密码起码应当知足下边两个条件:(1).密码长度大于等于8,且不要超出16。

(2).密码中的字符应当来自下边“字符类型〞中四组中的起码三组。

这四个字符类型分别为:大写字母:A,B,C...Z;小写字母:a,b,c...z;数字:0,1,2...9;特别符号:~,!,@,#,$,%,^;给你一个密码,你的任务就是判断它是否是一个平安的密码。

Input输入数据第一行包含一个数M,接下有M行,每行一个密码〔长度最大可能为 50〕,密码仅包含上边的四类字符。

Output关于每个测试实例,判断这个密码是否是一个平安的密码,是的话输出YES,不然输出NO。

样例输入:3a1b2c3d4Linle@ACM^~^@^@!%NOYESNO三、扫雷游戏〔难度系数:3〕(输入文件:,输出文件:玩过扫雷游的朋友都知道,该游戏的目标是找出一个n*m矩阵内的全部的地雷,在此题中,你需要为每一个单元格统计出它四周地雷的个数,每个单元格最多有8个相邻单元格,如以下图,4*4的格子里,用“*〞表示雷,用“^〞表示没有雷。

*^^^^^^^^*^^^^^^计算后的输出结果为:*10022101*101110输入数据:文件内包含假设干个矩阵,关于每一个矩阵,第一行包含两个数M和N,分别表示该矩阵的行数和列数〔0<N,M<100〕,接下来N行包含M个字符,就是该矩阵,用“*〞表示地雷,用“^〞表示空白。

理工oj题目.(DOC)

理工oj题目.(DOC)

零起点学算法80——逆序输出(数组练习)Time Limit:1000MS Memory Limit:65536KTotal Submit:2994 Accepted:1369Description数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。

这些按序排列的同类数据元素的集合称为数组数组类型说明在C语言中使用数组必须先进行类型说明。

数组说明的一般形式为:类型说明符数组名[常量表达式],……;其中,类型说明符是任一种基本数据类型或构造数据类型。

数组名是用户定义的数组标识符。

方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

例int a[10]; 说明整型数组a,有10个元素。

float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。

char ch[20]; 说明字符数组ch,有20个元素。

Input多组测试数据。

第一行输入一个整数T表示测试数据组数每组首先输入1个整数n,然后输入n个整数(不大于20)Output对于每组测试数据按照输入相反的顺序输出n个数据Sample Input231 2 352 3 1 4 5Sample Output3 2 15 4 1 3 2Source零起点学算法81——找出数组中最大元素的位置(下标值)Time Limit:1000MS Memory Limit:65536KTotal Submit:4376 Accepted:1535Description找出数组中最大的元素的下标。

Input多组测试,每组先输入一个不大于10的整数n然后是n个整数Output输出这n个整数中最大的元素及下标值Sample Input41 4 5 6Sample Output6 3Source零起点学算法82——数组中查找数Time Limit:1000MS Memory Limit:65536KTotal Submit:3001 Accepted:1393Description在给定的数组中查找一个数Input多组测试,每组第一行输入1个整数n(n<20),然后是n个整数第二行输入1个整数mOutput查找在第一行的n个整数中第一次出现数字m的下标位置并输出,如果没有找到则输出NoSample Input3 4 5 654 2 2 2 22Sample Output1Source零起点学算法83——数组中删数Time Limit:1000MS Memory Limit:65536KTotal Submit:2938 Accepted:961Description在给定的数组中删除一个数Input多组测试,每组第一行输入1个整数n(n<20),然后是n个整数第二行输入1个整数m删除在第一行的n个整数中第一次出现数字m并删除,然后按照顺序输出剩下的数,Sample Input4 1 2 3 43Sample Output1 2 4Hintm有可能在原数组中找不到,找不到则输出原数组Source零起点学算法84——数组中删数IITime Limit:1000MS Memory Limit:65536KTotal Submit:1411 Accepted:754Description在给定的数组中删除数Input多组测试,每组第一行输入1个整数n(n<20),然后是n个整数第二行输入1个整数mOutput删除在第一行的n个整数中的数字m(多个的话都要删除),然后按照顺序输出剩下的数,Sample Input5 1 2 3 4 33Sample Output1 2 4零起点学算法85——数组中插入一个数Time Limit:1000MS Memory Limit:65536KTotal Submit:1566 Accepted:546Description给定有序数组(从小到大),再给你一个数,要求插入该数到数组中并保持顺序Input多组测试,每组第一行输入一个整数n,然后是n个有序的整数第二行输入1个整数m和1个整数KOutput将整数m插入到原数组中保持顺序是升序,然后输出2行第一行是插入以后的数组第二行是插入以后的数组中下标值是K的数n m k不超过20Sample Input3 1 2 53 1Sample Output1 2 3 52Source零起点学算法87——打印所有低于平均分的分数Time Limit:1000MS Memory Limit:65536KTotal Submit:4940 Accepted:1717Description输入n个成绩,打印出所有低于平均分的分数(注意:ave = s/n中s 为float或ave = (float)s/n)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序提交方法,务必看清楚步骤!1、在编写源代码时,读写的文件均不应有目录信息,而必须用“文件名.扩展名”的形式。

例如:fp=fopen(“sentence.in”,”r”)或fp=fopen(“estdout.pc2”,”w”)2、双击桌面上的“程序设计大赛”快捷键,弹出如下对话框,在Name和password编辑框均输入:team+对号,如对号为1的,用户名和密码均为team13、在输入Name和password后,点击login登录,出现如下对话框:在problem下拉列表框选择自己要提交哪个问题的源代码→在language下拉列表框选择自己编写程序所用的语言→在Main file下拉列表框选择自己源代码文件→点击Test按钮,若无错误,则进行下一步→点击submit按钮提交!本次测试的题目名字和源程序文件名一致,源程序的扩展名若为cpp,则language 应选择Microsoft C++,源程序的扩展名若为java,则language应选择Java.提交后系统会给出一个结果例如:Yes正确(简单称ac)No-Compilition Error 为编译错误简单称(ce)No-Run-time Error 运行中意外终止(RE)(也有可能是格式错误)No-time-limit Exceeded程序运行超时(TLE)No-Wrong Answer 答案错误No-Excessive Out put 程序输出结果超出pc^2所能检测的范围No-Output Format Error 格式错误No-Other-Contact Staff 其他未知错误重庆理工大学第五届程序设计大赛试题试题1:【反转单词】给你一些英文句子,请将这些句子中的每个英语单词反转,然后再将其输出.这里的英语单词仅由大小写英文字母组成.【输入】输入文件名“sentence.in”多个英文句子,每句占一行,且每句不超过80个字符.【输出】输出文件名“estdout.pc2”按题目要求输出。

程序运行后结果示例:【样例输入】Helloworld!Happyprogramming,happylife!【样例输出】olleHdlrow!yppaHgnimmargorp,yppahefil!试题2:【全排列问题】大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。

要求给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。

比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。

【输入】输入文件名“permutation.in”第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 …n的一个排列。

【输出】输出文件名“estdout.pc2”对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。

程序运行后结果示例:【样例输入】33 12 3 13 13 2 110 21 2 3 4 5 6 7 8 9 10【样例输出】3 1 21 2 31 2 3 4 5 6 7 9 8 10试题3:【猜数游戏】猜数游戏在XXX国非常流行,游戏过程大概是这样的……一个裁判,三个路人,路人足够聪明。

每次裁判会选出三个正整数,其中某两个相加等于第三个然后分别把这数写在三个路人的脸上也就是说,每个路人都知道另外两个路人的数字但不知道自己脸上的数是什么游戏开始,裁判每一轮都会问他们三个能否猜出自己脸上是什么,为了体现游戏的公正性,路人们必须同时给出回答。

直到有一个路人猜出自己的数时游戏停止那么,如果告诉你这三个数a,b,c,为了证明你比路人厉害,你能预测出游戏会在第几轮停止吗?【输入】输入文件名“guess.in”每行三个正整数a,b,c,(1<=a,b,c<=1000000)其中一个是另外两个的和以0 0 0结束。

【输出】输出文件名“estdout.pc2”每行输出一个数,表示游戏在第几轮结束,从1开始计数。

程序运行后结果示例:【样例输入】1 1 21 2 33 2 1123 5 1280 0 0【样例输出】12228试题4:【青蛙的约会】两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。

它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。

可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。

不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。

但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。

为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。

我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。

设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。

青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。

纬度线总长L米。

现在要你求出它们跳了几次以后才会碰面。

【输入】输入文件名“frog.in”输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。

【输出】输出文件名“estdout.pc2”针对输入的数据如果永远不可能碰面则输出一行Impossible,如果可以碰面则输出碰面所需要的跳跃次数。

【样例输入】1 2 3 4 5【样例输出】4试题5:【拔河游戏】拔河是一种主要靠体力对抗的游戏。

人们分为两队,往相反的方向拉同一根绳子,成功将绳子拉到自己一方的队将胜。

某公司的聚会上将举行一次拔河比赛。

他们想把参与者尽可能分为实力相当的两支队伍中去。

每个人必须在基中一支队伍里,两队的人数差距不能超过一人,且两队的队员总体重应该尽可能接近。

【输入】输入文件名“war.in”第一行输入一个数M,表示以下将有M个人参加比赛,从第二行开始,每一行将有一个数字,表示一个人的体重,用1~300的数字表示。

参加聚会的人数最多为100人。

【输出】输出文件名“estdout.pc2”输出两行数据,第一行表示第一队队员的总体重,第二行表示另一支队伍的总体重(要求,先输出体重较小的队伍的总体重)【样例输入】710090200220130120110【样例输出】470500试题6:Transferable VotingThe Transferable V ote system for determining the winner of an election requires that a successful candidate obtain an absolute majority of the votes cast, even when there are more than two candidates. To achieve this goal,each voter completes his or her ballot by listing all the candidates in order of preference. Thus if there are five candidates for a single position, each voter's ballot must contain five choices, from first choice to fifth choice.In this problem you are to determine the winner, if any, of elections using the Transferable V ote system. If there are c candidates for the single position, then each voter's ballot will include c distinct choices, corresponding to identifying the voter's first place, second place, ..., and nth place selections. Invalid ballots will be discarded, but their presence will be noted. A ballot is invalid if a voter's choices are not distinct (choosing the same candidate as first and second choice isn't permitted) or if any of the choices aren't legal (that is, in the range 1 to c).For each election candidates will be assigned sequential numbers starting with 1. The maximum number of voters in this problem will be 100, and the maximum number of candidates will be 5.Table A Table B----------------------------- -------V oter First Second ThirdChoice Choice Choice1 12 42 13 2 1 3 23 3 2 1 3 2 14 3 2 1 3 2 15 1 2 3 1 2 36 2 3 1 3 17 3 2 1 3 2 18 3 1 19 3 2 1 3 2 110 1 2 3 1 2 311 1 3 2 1 3 212 2 3 1 3 1Consider a very small election. In Table A are the votes from the 12 voters for the three candidates. V oters 1 and 8 cast invalid ballots; they will not be counted. This leaves 10 valid ballots, so a winning candidate will require at least 6 votes (the least integer value greater than half the number of valid ballots) to win. Candidates 1 and 3 each have 4 first choice votes, and candidate 2 has two. There is no majority, so the candidate with the fewest first choice votes, candidate 2, is eliminated. If there had been several candidates with the fewest first choice votes, any of them, selected at random, could be selected for elimination.With candidate 2 eliminated, we advance the second and third choice candidates from those voters who voted for candidate 2 as their first choice. The result of this action is shown in Table B. Now candidate 3 has picked up 2 additional votes, giving a total of 6. This is sufficient for election. Note that if voter 12 had cast the ballot "2 1 3" then there would have been a tie between candidates 1 and 3.【Input】Input filename “voting.in”There will be one or more elections to consider. Each will begin with a line containing the number of candidates and the number of voters, c and n. Data for the last election will be followed by a line containing two zeroes.Following the first line for each election will be n additional lines each containing the choices from a single ballot. Each line will contain only c non-negative integers separated by whitespace.【Output】Output filename “estdout.pc2”For each election, print a line identifying the election number (they are numbered sequentially starting with 1). If there were any invalid ballots, print an additional line specifying the number of such. Finally, print a line indicating the winner of the election, if any, or indication of a tie; be certain to identify the candidates who are tied. Separate the output for each election by a single blank line.Sample Input3 121 2 41 3 23 2 13 2 11 2 32 3 13 2 13 1 13 2 11 2 31 3 22 3 13 121 2 41 3 23 2 13 2 11 2 32 3 13 2 13 1 13 2 11 2 31 3 22 1 34 154 3 1 24 1 2 33 14 21 32 44 1 2 33 4 2 12 43 13 2 1 43 14 21 42 33 4 1 23 2 1 44 1 3 23 2 1 44 2 1 40 0Sample OutputElection #12 bad ballot(s)Candidate 3 is elected.Election #22 bad ballot(s)The following candidates are tied: 1 3 Election #31 bad ballot(s)Candidate 3 is elected.。

相关文档
最新文档