ACM大学生程序设计入门考核试题(含详细答案)_第1页
ACM大学生程序设计入门考核试题(含详细答案)_第2页
ACM大学生程序设计入门考核试题(含详细答案)_第3页
ACM大学生程序设计入门考核试题(含详细答案)_第4页
ACM大学生程序设计入门考核试题(含详细答案)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ACM大学生程序设计入门考核试题(含详细答案)考试说明:满分100分,考试时长120分钟,支持C/C++、Java、Python语言答题,题目侧重基础算法、语法逻辑、模拟、简单贪心与循环递归,适配高校ACM新生集训考核难度。题型分布:选择题(20分)、填空题(20分)、编程大题(60分)一、单项选择题(共10题,每题2分,共20分)每题只有一个正确答案,多选、错选、不选均不得分1、以下关于C/C++循环语句的说法,正确的是()A、while循环至少执行一次循环体B、do-while循环至少执行一次循环体C、for循环只能用于遍历数组D、循环体内不能嵌套条件判断语句2、在编程竞赛中,通常用来表示无穷大的数值是()A、0x3f3f3f3fB、1000C、-0x3f3f3f3fD、13、已知inta=5,b=2;则a/b的结果是()A、2.5B、2C、3D、2.04、以下排序算法中,时间复杂度最优且稳定的是()A、冒泡排序O(n²)B、快速排序O(nlogn)C、归并排序O(nlogn)D、选择排序O(n²)5、判断一个整数是否为偶数,最简洁正确的条件是()A、n%2==0B、n/2==0C、n%2==1D、n>06、C++中vector容器的特点不包括()A、动态扩容B、支持随机访问C、长度固定不可修改D、尾部插入效率高7、递归算法必须具备的两个条件是()A、循环条件和终止条件B、递归调用和终止条件C、嵌套结构和循环结构D、输入参数和输出参数8、以下运算符优先级最高的是()A、算术运算符B、关系运算符C、逻辑运算符D、赋值运算符9、ACM竞赛中,读取多组输入直到文件结束的写法是()A、while(cin>>x)B、if(cin>>x)C、for(cin>>x)D、while(1)10、质数的定义是()A、大于1,只能被1和自身整除的正整数B、大于0的奇数C、不能被2整除的正整数D、所有正整数二、填空题(共5空,每空4分,共20分)1、循环计算1+2+3+...+100的结果是________。2、十进制数字15对应的二进制数是________。3、已知斐波那契数列定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2),则F(6)=________。4、数组intarr[5]中,最大下标为________。5、贪心算法的核心思想是每一步都做出________的选择,从而得到全局最优解。三、编程大题(共3题,每题20分,共60分)题目1:整数求和(基础模拟)题目描述:输入两个整数a、b,计算并输出两个整数的和。支持多组输入,每组一行两个整数,输入直到文件结束。输入格式:若干行数据,每行两个整数a、b(-1000≤a,b≤1000)输出格式:每行输出一个整数,对应一组输入的两数之和样例输入:12-53100200样例输出:3-2300题目2:判断质数(循环判断)题目描述:输入一个正整数n,判断该数是否为质数。若是质数输出Yes,否则输出No。输入格式:单个正整数n(2≤n≤10000)输出格式:输出Yes或No,首字母大写,无多余字符样例输入1:7样例输出1:Yes样例输入2:10样例输出2:No题目3:最大公约数(算法基础)题目描述:输入两个正整数,利用辗转相除法计算并输出两个数的最大公约数。输入格式:一行两个正整数a、b(1≤a,b≤1000)输出格式:输出一个整数,为两数的最大公约数样例输入:1218样例输出:6四、详细参考答案与解析(一)选择题答案与解析1、答案:B解析:while循环先判断条件再执行,可能一次都不执行;do-while先执行循环体再判断条件,至少执行一次;for循环可用于任意循环场景;循环体内支持嵌套条件语句。2、答案:A解析:0x3f3f3f3f是竞赛常用无穷大数值,大小约10^9,在int范围内,不会溢出且方便运算。3、答案:B解析:两个整数相除为整数除法,直接舍去小数部分,5/2结果为2。4、答案:C解析:冒泡、选择排序时间复杂度为O(n²)效率低;快速排序O(nlogn)但不稳定;归并排序时间复杂度O(nlogn)且是稳定排序。5、答案:A解析:偶数能被2整除,余数为0,n%2==0是判断偶数的标准条件。6、答案:C解析:vector是动态数组,支持动态增删元素、自动扩容,长度可灵活修改,并非固定不变。7、答案:B解析:递归核心是自身调用自身,必须设置终止条件,否则会出现无限递归、栈溢出错误。8、答案:A解析:运算符优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符。9、答案:A解析:while(cin>>x)是竞赛标准多组输入写法,可自动识别文件结束符,终止循环。10、答案:A解析:质数严格定义为大于1,且仅有1和自身两个约数的正整数。(二)填空题答案与解析1、5050解析:等差数列求和公式n*(n+1)/2,100*101/2=5050。2、1111解析:8+4+2+1=15,对应四位二进制1111。3、8解析:F(3)=2、F(4)=3、F(5)=5、F(6)=8。4、4解析:数组下标从0开始,长度为5的数组下标为0~4。5、局部最优解析:贪心算法核心是每一步选取当前最优解,逐步推导全局最优解。(三)编程大题代码与详细解析(C++版本)题目1题解解题思路:核心是实现多组输入,不断读取两个整数,累加后输出,循环至输入结束即可,属于入门模拟题。cpp

#include<iostream>

usingnamespacestd;

intmain()

{

inta,b;

//多组输入,直到文件结束

while(cin>>a>>b)

{

cout<<a+b<<endl;

}

return0;

}得分点:正确使用多组输入循环(10分)、正确实现两数求和输出(10分)。题目2题解解题思路:质数判断核心:从2遍历到根号n,若存在能整除n的数,则不是质数,否则为质数。遍历到根号n可大幅优化时间复杂度,避免无效循环。cpp

#include<iostream>

#include<cmath>

usingnamespacestd;

intmain()

{

intn;

cin>>n;

boolflag=true;//标记是否为质数

//遍历2到sqrt(n)

for(inti=2;i<=sqrt(n);i++)

{

if(n%i==0)

{

flag=false;

break;

}

}

if(flag)

cout<<"Yes"<<endl;

else

cout<<"No"<<endl;

return0;

}得分点:正确设置质数标记(5分)、循环范围优化至根号n(7分)、条件判断与输出格式正确(8分)。题目3题解解题思路:辗转相除法核心公式:gcd(a,b)=gcd(b,a%b),直到余数为0,此时的b即为最大公约数,是竞赛求最大公约数的标准算法。cpp

#include<iostream>

usingnamespacestd;

//辗转相除法求最大公约数

intgcd(inta,intb)

{

while(b!=0)

{

inttemp=a%b;

a=b;

b=temp;

}

returna;

}

intmain()

{

inta,b;

cin>>a>>b;

cout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论