(信息学奥赛辅导)程序设计试题汇编(答案)

合集下载

全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

例13-4迷宫寻宝【问题描述】一个n行m列的迷宫(1<=n,m<=5),入口在左上角,规定只能向下或向右走。

迷宫的某些地方藏有不同价值(>0)的宝藏,同时又存在一些障碍无法通过。

求到达右下角出口时收集宝藏的最大值。

【输入】第一行n和m一下n行m列描述迷宫矩阵a[I,j](-1:障碍);最大值【样例输入】342-150513-16-18910【样例输出】33【分析】A[I,j]保存第i行第j列的宝藏价值。

令f[I,j]为从(1,1)走到第i行第j列时所能收集的宝藏的最大价值。

状态转移方程:F[I,j]=max{f[I-1,j],f[I,j-1]}+a[I,j](i<=n,1<=m)条件:n[I,j]<>-1初始:f[1,1]=a[1,1]目标:f[n,m]【参考程序】Const maxn=50;maxm=50;Fin=’b1.in’;Fout=’b1.out’;VarF,a:array[0..maxn+1,0..maxm+1]of integer;I,j,k,n,m,t:integer;Procedure init;BeginAssign(input,fin);Reset(input);Readln(n,m);For i:=0to n+1doFor j:=0to m+1do a[I,j]:=-1;A[0,1]:=0;For i:=1to n doFor j:=1to m doBeginRead(a[I,j]);If(a[I,j-1]=-1)and(a[i-1,j]=-1)then a[I,j]:=-1;//很关键的预处理End;Close(input);End;Function max(a,b:integer):integer;Begin max:=a;if b>a then max:=b;end;Procedure work;BeginFillchar(f,sizeof(f),0);For i:=1to n doFor j:=1to m doIf a[I,j]<>-1Then f[I,j]:=max(f[i-1,j],f[I,j-1])+a[I,j];End;Procedure print;BeginAssign(output,fout);Rewrite(output);Writeln(f[n,m]);Close(output);End;BeginInit;Work;Print;End.13-5花店橱窗布置(IOI1999)【问题描述】假设你想以最美观的方式布置花店的橱窗。

信息学奥赛历年试题(解答)

信息学奥赛历年试题(解答)

历年全国青少年信息学奥赛选择题一、单项选择题(共10题,每题1.5分,共计15分。

每题有且仅有一个正确答案)。

第14届:2008年1.在以下各项中,()不是操作系统软件。

A.SolarisB.LinuxC.SybaseD.Windows VistaE.SymbianC是数据库系统2.微型计算机中,控制器的基本功能是()。

A.控制机器的各个部件协调工作B.实现算数运算与逻辑运算C.存储各种控制信息D.获取外部信息E.存放程序和数据3.设字符串S=“Olympic”,S的非空子串的数目是()。

A.29B.28C.16D.17E.71个字符的子串(7个):"o" "l" "y" "m" "p" "i" "c",2个字符(6个):"ol" "ly" "ym" "mp" "pi" "ic" .……7个字符(1个):olympic所以:共有7+6+5+4+3+2+1=284.完全二叉树有2*N-1的结点,则它的叶子结点数目是()。

A.N-1B.2*NC.ND.2N-1E.N/2最多只能在最下层缺少结点,并且缺少的结点都在最右边,即最下层的结点都集中在该层最左边,则称此二叉树为完全二叉树。

5.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换()次。

A.4B.5C.6D.7E.86.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a 那么栈容量至少应该是()。

A.6B.5C.4D.3E.27.与十进制数28.5625相等的四进制数是()A.123.21B.131.22C.130.22D.130.21E.130.20整数部分就不用说了,是130小数部分,0.5625×4=2.250.25×4=11所以是0.218.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。

信息学奥赛历年试题(解答)

信息学奥赛历年试题(解答)

历年全国青少年信息学奥赛选择题一、单项选择题(共10题,每题1.5分,共计15分。

每题有且仅有一个正确答案)。

第14届:2008年1.在以下各项中,()不是操作系统软件。

A.Solaris B.Linux C.Sybase D.Windows Vista E.Symbian C是数据库系统2.微型计算机中,控制器的基本功能是()。

A.控制机器的各个部件协调工作B.实现算数运算与逻辑运算C.存储各种控制信息D.获取外部信息E.存放程序和数据3.设字符串S=“Olympic”,S的非空子串的数目是()。

A.29 B.28 C.16 D.17 E.71个字符的子串(7个):"o" "l" "y" "m" "p" "i" "c",2个字符(6个):"ol" "ly" "ym" "mp" "pi" "ic" .……7个字符(1个):olympic所以:共有7+6+5+4+3+2+1=284.完全二叉树有2*N-1的结点,则它的叶子结点数目是()。

A.N-1 B.2*N C.N D.2N-1 E.N/2最多只能在最下层缺少结点,并且缺少的结点都在最右边,即最下层的结点都集中在该层最左边,则称此二叉树为完全二叉树。

5.将数组{8,23,4,16,77,-5,53,100}中元素从大到小按顺序排序,每次可以交换任意两个元素,最少要交换()次。

A.4 B.5 C.6 D.7 E.86.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a 那么栈容量至少应该是()。

A.6 B.5 C.4 D.3 E.27.与十进制数28.5625相等的四进制数是()A.123.21 B.131.22 C.130.22 D.130.21 E.130.20整数部分就不用说了,是130小数部分,0.5625×4=2.250.25×4=1所以是0.218.递归过程和函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。

奥林匹克信息学竞赛试题

奥林匹克信息学竞赛试题

奥林匹克信息学竞赛试题一、选择题(每题2分,共10分)1. 在C++语言中,以下哪个是正确的整数类型定义?A. int a = 10;B. float a = 10;C. double a = 10;D. char a = 10;2. 以下哪个算法的时间复杂度为O(n^2)?A. 归并排序B. 快速排序C. 线性搜索D. 二分查找3. 在数据结构中,以下哪个是线性结构?A. 树B. 图C. 栈D. 队列4. 以下哪个是递归算法的典型应用?A. 快速排序B. 归并排序C. 深度优先搜索D. 广度优先搜索5. 在数据库中,以下哪个操作用于删除表中的记录?A. SELECTB. INSERTC. UPDATED. DELETE二、简答题(每题5分,共20分)1. 解释什么是贪心算法,并给出一个实际应用的例子。

2. 描述什么是动态规划,并解释它与贪心算法的区别。

3. 什么是哈希表?请简述其工作原理。

4. 什么是图的深度优先搜索(DFS)?请描述其基本步骤。

三、编程题(每题15分,共30分)1. 编写一个函数,实现对一个整数数组的快速排序算法。

2. 编写一个程序,实现对一个字符串进行反转。

四、综合题(每题20分,共40分)1. 给定一个无向图,编写一个程序来找到图中的最短路径。

请使用Dijkstra算法实现。

2. 设计并实现一个算法,用于解决背包问题,其中背包的容量为W,有n个物品,每个物品有其价值和重量。

五、附加题(10分)1. 假设你正在开发一个在线购物平台,需要实现一个推荐系统。

描述你将如何使用机器学习算法来实现这一功能。

结束语:奥林匹克信息学竞赛不仅考验参赛者的编程技巧,更考验他们的逻辑思维和创新能力。

希望本试题能够激发你的学习兴趣,帮助你在竞赛中取得优异的成绩。

信息学奥赛基础知识习题(答案版)

信息学奥赛基础知识习题(答案版)

信息学奥赛基础知识习题(答案版)一、选择题(下列各题仅有一个正确答案,请将你认为是正确的答案填在相应的横线上)1.我们把计算机硬件系统和软件系统总称为 C 。

(A)计算机CPU (B)固件(C)计算机系统(D)微处理机2.硬件系统是指 D .(A)控制器,运算器 (B)存储器,控制器(C)接口电路,I/O设备 (D)包括(A)、(B)、(C) 3。

计算机软件系统包括 B .A) 操作系统、网络软件 B)系统软件、应用软件C)客户端应用软件、服务器端系统软件 D)操作系统、应用软件和网络软件4.计算机硬件能直接识别和执行的只有 D .(A)高级语言(B)符号语言(C)汇编语言 (D)机器语言5.硬盘工作时应特别注意避免 B .(A)噪声(B)震动 (C)潮湿 (D)日光6.计算机中数据的表示形式是 C 。

(A)八进制 (B)十进制 (C)二进制(D)十六进制7.下列四个不同数制表示的数中,数值最大的是 A .(A)二进制数11011101 (B)八进制数334(C)十进制数219 (D)十六进制数DA 8.Windows 9x操作系统是一个 A 。

(A)单用户多任务操作系统(B)单用户单任务操作系统(C)多用户单任务操作系统(D)多用户多任务操作系统9.局域网中的计算机为了相互通信,必须安装___B__。

(A)调制解调器(B)网卡(C)声卡(D)电视卡10.域名后缀为edu的主页一般属于__A____。

(A)教育机构(B)军事部门(C)政府部门(D)商业组织11。

香港在世界上注册的顶级域名是__A____。

(A)hk(B)cn(C)tw(D)com12.计算机能够自动、准确、快速地按照人们的意图进行运行的最基本思想是( D )。

(A)采用超大规模集成电路(B)采用CPU作为中央核心部件(C)采用操作系统 (D)存储程序和程序控制13.设桌面上已经有某应用程序的图标,要运行该程序,可以 C 。

(A)用鼠标左键单击该图标 (B)用鼠标右键单击该图标(C)用鼠标左键双击该图标(D)用鼠标右键双击该图标14.若己选定某文件,不能将该文件复制到同一文件夹下的操作是 C 。

信息学奥赛试题精选33题(附带题解)

信息学奥赛试题精选33题(附带题解)

第1~10题为基础题,第11~20题为提高题,第21~33为综合题注:因为在本文档中需要用到一些特殊的数学符号(如:求和号、分数等),所以当您在百度文库中浏览时,一些数学符号可能会显示不出来,不过当您把本文档下载下来在本地浏览时,所有的符号即可全部都显示出来。

^_^基础题:【1 Prime Frequency】【问题描述】给出一个仅包含字母和数字(0-9, A-Z 以及a-z)的字符串,请您计算频率(字符出现的次数),并仅报告哪些字符的频率是素数。

输入:输入的第一行给出一个整数T( 0<T<201),表示测试用例个数。

后面的T行每行给出一个测试用例:一个字母-数字组成的字符串。

字符串的长度是小于2001的一个正整数。

输出:对输入的每个测试用例输出一行,给出一个输出序列号,然后给出在输入的字符串中频率是素数的字符。

这些字符按字母升序排列。

所谓“字母升序”意谓按ASCII 值升序排列。

如果没有字符的频率是素数,输出“empty”(没有引号)。

注:试题来源:Bangladesh National Computer Programming Contest在线测试:UV A 10789提示先离线计算出[2‥2200]的素数筛u[]。

然后每输入一个测试串,以ASCLL码为下标统计各字符的频率p[],并按照ASCLL码递增的顺序(0≤i≤299)输出频率为素数的字符(即u [p[i]]=1且ASCLL码值为i的字符)。

若没有频率为素数的字符,则输出失败信息。

【2 Twin Primes】【问题描述】双素数(Twin Primes)是形式为(p, p+2),术语“双素数”由Paul Stäckel (1892-1919)给出,前几个双素数是(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43)。

在本题中请你给出第S对双素数,其中S是输入中给出的整数。

信息学奥赛考试题型及答案

信息学奥赛考试题型及答案

信息学奥赛考试题型及答案一、选择题1. 在计算机科学中,以下哪个选项不是数据结构的基本类型?A. 线性结构B. 树形结构C. 图形结构D. 量子结构答案:D2. 以下哪种算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C二、填空题1. 在信息学奥赛中,常用的图遍历算法有深度优先搜索(DFS)和______。

答案:广度优先搜索(BFS)2. 哈希表是一种通过______来访问数据的数据结构。

答案:键值对三、简答题1. 描述二分查找算法的基本步骤。

答案:二分查找算法的基本步骤包括:首先确定要查找的元素所在的区间,然后取区间的中间值与目标值进行比较。

如果中间值等于目标值,则查找成功;如果中间值小于目标值,则在区间的右半部分继续查找;如果中间值大于目标值,则在区间的左半部分继续查找。

重复以上步骤,直到找到目标值或区间为空。

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

答案:递归是一种在函数中调用自身的编程技巧,用于解决可以分解为相似子问题的问题。

一个递归算法的例子是计算阶乘,即n的阶乘(n!)可以通过递归函数实现:n! = n * (n-1)!,其中基本情况是0! = 1。

四、编程题1. 给定一个整数数组,请编写一个函数,找出数组中第二大的数。

答案:以下是一个可能的解决方案的伪代码:```function findSecondLargest(nums):if length of nums < 2:return nullmax1 = max2 = -∞for num in nums:if num > max1:max2 = max1max1 = numelse if num > max2 and num != max1:max2 = numreturn max2```2. 实现一个函数,判断一个链表是否为回文结构。

答案:以下是一个可能的解决方案的伪代码:```function isPalindrome(head):if head is null or next of head is null:return truefast = slow = headwhile fast and next of fast:fast = next of next of fastslow = next of slowsecondHalf = reverse(slow)while secondHalf:if head.value != secondHalf.value:return falsehead = next of headsecondHalf = next of secondHalfreturn true```注意:以上编程题答案中的伪代码仅供解题思路参考,实际编程语言实现可能有所不同。

2023年全国中学生信息学奥赛试题及解析

 2023年全国中学生信息学奥赛试题及解析

2023年全国中学生信息学奥赛试题及解析概述本文档为2023年全国中学生信息学奥赛试题及解析的内容。

试题及解析以下是2023年全国中学生信息学奥赛的部分试题及其解析:试题一问题描述:给定一个整数数组,找出其中和最大的连续子数组,并返回其和。

示例:输入:[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。

解析:此问题可以使用动态规划的思想来解决。

定义一个变量`maxSum` 存储最大和,初始值为数组的第一个元素。

遍历数组,如果当前元素之前的子数组和为正数,则将当前元素加入子数组中,并更新 `maxSum` 的值。

如果当前元素之前的子数组和为负数,则将当前元素作为新的子数组的起点,并重新计算子数组的和。

遍历完成后,`maxSum` 即为所求的最大和。

试题二问题描述:给定一个字符串,找到最长的不含重复字符的子串的长度。

示例:输入:abcabcbb输出:3解释:最长的不含重复字符的子串是 "abc",其长度为 3。

解析:此问题可以使用滑动窗口的思想来解决。

定义一个变量`maxLen` 存储最长子串的长度,一个哈希表 `charMap` 存储字符和其在字符串中的索引位置。

遍历字符串,当遇到重复字符时,更新滑动窗口的起点为重复字符的下一个位置,并更新 `charMap` 中重复字符的索引位置。

每次遍历都计算滑动窗口的长度,如果大于`maxLen` 则更新 `maxLen` 的值。

遍历完成后,`maxLen` 即为所求的最长子串的长度。

结论本文提供了2023年全国中学生信息学奥赛的部分试题及其解析,主要涵盖了动态规划和滑动窗口两种算法思想。

信息学奥赛题库

信息学奥赛题库

一、初级编程入门题顺序结构1、请编写一个程序,求一个正方的周长。

2、请编写一个程序,求一个长方形的周长。

3、请编写一个程序,求一个三角形的周长。

4、请编写一个程序,从键盘输入两个整数,要求求和然后输出和。

例如:输入1 4输出55、要求从键盘输入一个三位数,要求百位变十位,十位变个位,个位变百位:例如:输入123输出3126、输入一个四位数要求按如下交换输出:例如:输入1234输出43217、输入一个四位数要求输入各位数字的和。

例如:输入4567输出228、编一程序,键盘输入整数A,B的值,然后打印A除以B的商的整数部分及余数。

9、输入一个时、分、秒,把它转换为一个秒数。

例如输入2 3 4 代表2小时3分钟4秒输出7384 代表一共有7384 秒10、求三角形面积:给出三角形的三个边长为a ,b ,c ,求三角形的面积。

提示:根据海伦公式来计算三角形的面积:S =2cb a ++;Area =))()((c S b S a S S ---11、编一程序,从键盘输入整数A ,B 的值,然后把A ,B 的值交换后输出。

从键盘输入两个整数,打印出更小的那个数。

12、设X ,Y ,Z 的值分别是FALSE ,TRUE ,FLASE 。

写出下列逻辑表达式的值:not x and not y;true and x or y;(x and z) or (z and y);x or z and y;(4>5) and (7<8)(8>9) or ( 9<10)2 and ((3=3) or (3<7))选择结构13、读入三个整数,从小到大输出。

14、从键盘输入一个数,判断它的奇偶性,如果是奇数则输出yes,否则输出no 。

15、从键盘读入一个数,判断它的正负。

是正数,则输出"+",是负数,则输出"-"。

16、从键盘输入一个数,如果是两位数那么输入yes 否则输入no 。

信息学奥赛辅导(C语言一)

信息学奥赛辅导(C语言一)

信息学奥赛辅导(C语言一)信息学奥赛辅导:C语言复习题(一)第1~3章练习题一、选择题1、一个C语言程序总是从____A、主过程开始执行B、主函数开始执行C、子程序开始执行D、主程序开始执行2、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为_A、4B、16C、32D、523、下面四个选项中,均是C语言关键字的选项是____A、auto enum includeB、switch typedef continueC、signed union scanfD、if struct type4、下面四个选项中,均是合法整型常量的选项是____A、160 -0xffff 011B、-0xcdf 01a 0xeC、-01 986,012 0668D、-0x48a 2e5 0x5、下面四个选项中,均是合法浮点数的选项是___A、+1e+1 5e-9.4 03e2B、-.60 12e-4 -8e5C、123e 1.2e-.4 +2e-1D、-e3 .8e-4 5.e-0A、'\'' '\\' '\n'B、'\' '\017' '\"'C、'\018' '\f' 'xab'D、'\\0' '\101' 'xlf'7、下面正确的字符常量是____A、'\X17'B、'\80'C、'\\'D、"\n"8、下面四个选项中,均是正确的八进制数和十六进制数的选项是____A、-10 0x8f -011B、0abc -017 0xcC、010 -0x11 0xf1D、0a12 -0x123 -0xa9、下面四个选项中,均是正确的数值常量或字符常量的选项是____A、0.0 0f 8.9e '&'B、"a" 3.9E-2.5 1e1 '\"'C、'3' 011 0xFF00 0aD、+001 0xabcd 2e2 50.10、若有代数式,则正确的C语言表达式是____A、2*ln(x)*cos(x)/3*xB、2*ln(x)*cos(x)/(3*x)C、2*log(x)*cos(x)/3*xD、2*log(x)*cos(x)/(3*x)11、若有说明语句:char ch1='\065';char ch2="2";char ch3='2';则:ch1中____,ch2中____,ch3中____A、包含1个字符B、包含2个字符C、包含3个字符D、字符个数不确定,说明不正确12、若有运算符:>、*=、?:、%、sizeof,则将它们按运算的优先级排列的正确次序为(由低至高)____A、*=→?:→%→>→sizeofB、?:→*=→>→%→sizeof13、若有以下类型说明语句:char a;int b;float c;double d;则表达式a*b+d-c的结果类型为____A、floatB、charC、intD、double14、若有变量说明:int a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是____A、a=9+b+c=a+9B、a=9+b;c=a+9;C、a=(9+b,b++)D、a=9+b++=a+715、已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为____A、DB、68C、一个不确定的值D、C16、以下运算符中优先级最高的运算符是____A、&&B、++C、?:D、!=17、若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是___A、2.500000B、2.7500000C、3.500000D、0.00000018、sizeof(float)是____A、双精度型表达式B、一个整型表达式C、一个函数调用D、一个不合法的表达式19、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是____A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0C、y=y*100+0.5/100.0D、y=(y/100+0.5)*100.020、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是____A、0~255B、0~65535C、-32768~+32767D、-256~+25521、若有以下定义,则能得到值为3的表达式是____(int m=7,n=12)A、n%=(m%=5)B、n%=(m-m%5)C、n%=m-m%5D、(n%=m)-(m%=5)22、若有说明:int a=1,b=2,c=3,d=4;则表达式a<b?a:c<d?c:d的值是___< bdsfid="170" p=""></b?a:c<d?c:d 的值是___<>A、4B、3C、2D、123、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是___,x的值是___A、20B、100C、表达式不正确D、4524、putchar函数可以向终端输出一个____A、整型变量值B、实型变量值C、字符串D、字符或字符型变量值25、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表空格)____变量说明:float x1,x2;数据的输入方式:4.52<回车>3.5<回车>A、scanf("%f,%f",&x1,&x2);B、scanf("%f%f",&x1,&x2);C、scanf("%3.2f└─┘%2.1f",&x1,&x2);D、scanf("%3.2f%2.1f",&x1,&x2);26、若运行以下程序时,从键盘输入25,13,10<回车>,则输出结果为___{int a1,a2,a3;scanf("%d%d%d",&a1,&a2,&a3);printf("a1+a2+a3=%d\n",a1+a2+a3);}A、a1+a2+a3=48B、a1+a2+a3=25B、a1+a2+a3=10D、不确定值27、已知a、b、c为int类型变量,若有输入语句:scanf("a=%db=%dc=%d",&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是____A、132<回车>B、a=1b=3c=2<回车>C、1<回车>3<回车>2<回车>D、a=1<回车>b=3<回车>c=2<回车>28、以下能正确定义整型变量x、y和z并为其赋初值5的语句是____A、int x=y=z=5;B、int x,y,z=5;C、int x=5,y=5,z=5;D、x=5,y=5,z=5;29、执行下面程序段后,x的值是____int x;printf("%d\n",(x=3*5,x+5));30、下面程序段的输出结果是____int a=023;printf("%d\n",--a);A、23B、17D、2431、已知ch是字符型变量,则不正确的赋值语句是____A、ch=5+9;B、ch='\0';C、ch='7'+'9';D、ch='a+b';32、设x,y是float型变量,则不正确的赋值语句是____A、++x;B、y=int(5);C、x*=y+1;D、x=y=0;33、设有说明:double b=0.5,c=1.5;int a=10;则正确使用了C语言库函数的赋值语句是____A、c=asin(c)+fabs(a);B、b=log10(b)+pow(b);C、c=sqrt(b-c);D、a=(int)(atan2((double)a,b)+exp(b-0.2));34、以下程序段的输出结果是____int i=1,j=4,k=2;float x=5.5,y=9.0,z;z=(i+j)/k+sqrt((double)y)*1.2/k+x;printf("%f\n",z);A、9.800000B、9.300000C、8.500000D、8.00000035、若a为int类型变量,则执行以下程序段后a的值为____a=5;a*=a/=a++;B、1C、40D、336、若a和b均为int型变量,则执行以下程序断后x的输出是____x=15;y=15;printf("%d\n",x%=(y%=2));A、0B、1C、6C、1237、若x为unsigned int类型变量,则执行以下程序段后x的值是____x=65535;printf("%d\n",x);A、65535B、1C、无定值D、-138、以下语句的执行结果是____printf("%d\n",NULL);A、1B、0C、-1无定值39、若x为int类型变量,则执行以下程序段后的输出结果是____x=0xDEF;printf("%4d,%4o,%4x\n",x,x,x);A、3567,6757,defB、3567,6757,xdefC、3567,06757,0xdefD、3567,6757,0def40、若a、b、c均为int型变量,则执行以下程序段后的输出结果为____b=(a=10,a+5,c=10);printf("a=%d,b=%d,c=%d\n",a,b,c);c=(a=10,b=5,a+b);printf("a=%d,b=%d,c=%d\n",a,b,c);A、a=10,b=15,c=10B、a=10,b=10,c=10a=10,b=5,c=10 a=10,b=5,c=10C、a=10,b=10,c=10D、a=10,b=10,c=10a=10,b=5,c=15a=10,b=5,c=541、若a1、a2、a3、a4均为char类型变量,则执行以下程序段后的输出结果为____a1='1';a2='2';a3='3';a4='4';printf("%1c\n",a1);printf("%2c\n",a2);printf("%3c\n",a3);printf("%4c\n",a4);A、1B、1C、1D、输出格式的描述符不正确2 2 023 3 0034 4 000442、执行语句printf("The program's name is c:\\tools\book.txt");后的输出是____B、The program's name is c:\tools book.txtC、The program's name is c:\\tools book.txtD、The program's name is c:\toolook.txt43、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:1234+123+12+1,正确的输入形式应当是____scanf("%4d+%3d+%2d+%1d",&a,&b,&c,&d);printf("%4d+%3d+%2d+%1d",a, b, c, d);A、1234123121<回车>B、1234123412341234<回车>C、1234+1234+1234+1234<回车>D、1234+123+12+1<回车>44、设c1、c2均是char类型变量,则以下不正确的函数调用是____A、scanf("c1=%cc2=%c",&c1,&c2);B、getchar( )C、putchar(c2);D、putchar(c1,c2)45、逻辑运算符两侧运算对象的数据____A、只能是0或1B、只能是0或非0正数C、只能是整型或字符型数据D、可以是任何类型的数据46、判断char型变量c1是否为大写字母的正确表达式是____A、'A'<=c1<='Z'B、(c1>='A')&(c1<='Z')C、(c1>='A')&&(c1<='Z')D、('A'<=c1) AND ('Z'>=c1)47、执行以下程序段后的a值是___,b的值是___,c的值是___int a=5,b=6,c=1,x=2,y=3,z=4;A、0B、6C、1D、548、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是_A、'i'&&'j'B、i<=jC、i||j+k&&j-kD、!((i<j)&&!k||1)< bdsfid="334" p=""></j)&&!k||1)<>49、设ch是char类型变量,其值是A,则以下表达式的值是____ch=(ch>='A'&&ch<='Z')?(ch+32):chA、ZB、AC、aD、z50、若希望当num的值为奇数时,表达式的值为“真”,num 的值为偶数时,表达式的值为“假”。

(信息学奥赛辅导)程序设计试题汇编(答案)

(信息学奥赛辅导)程序设计试题汇编(答案)

程序设计试题及答案(备注:试题难度评价采取五★级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、二、三★级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四★级试题属于程序设计试题基础级别的思考题,五★级难度试题在此没有涉及,在程序设计高级试题中另行讲解。

对于基础和容易两个级别的程序设计试题,若能够给出语句分类(如If条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。

若属于13大类别的将尽量标注。

)程序设计试题几大分类:1、素数类问题(求素数的几种算法):2、数据排序问题(数据排序的几种方法):3、最大公约数和最小公倍数问题(几种算法):4、公式求解类问题(如求圆周率π、自然常数e、解方程等等):5、编号相反处理问题:6、约瑟夫问题(或猴子选大王问题、密码问题):7、回文数问题:8、高精度数值计算问题:9、数值计算问题:10、进制相互转换问题:11、字符串倒置问题:12、排列与组合类问题:13、因子、质因子(质因数)类相关问题:答案部分:(程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也有优劣之分,一个程序的优劣,关键在于是否找到了好的算法,以下程序和算法不一定就是最佳算法和最佳程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改进程序)(经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!)①判断是否为素数,若是素数则返回true,若不是素数则返回false:function prime(x:longint):boolean;varj,y:longint;beginprime:=true;if x<2 then prime:=false;y:=trunc(sqrt(x));for j:=2 to y doif (x mod j = 0) thenbegin prime:=false; exit; end;end;备注:1~100之间所有的素数:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。

信息学奥赛试题及答案

信息学奥赛试题及答案

信息学奥赛试题及答案一、选择题(每题5分,共20分)1. 以下哪个选项是信息学奥赛中常用的编程语言?A. PythonB. JavaC. C++D. Visual Basic答案:A、B、C2. 在信息学奥赛中,以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C3. 以下哪个选项是信息学奥赛中常见的数据结构?A. 链表B. 栈C. 队列D. 树答案:A、B、C、D4. 在信息学奥赛中,以下哪个选项是图论中的概念?A. 邻接矩阵B. 邻接表C. 深度优先搜索D. 广度优先搜索答案:A、B、C、D二、填空题(每题5分,共20分)1. 在信息学奥赛中,______是一种常用的贪心算法策略。

答案:贪心选择2. 在信息学奥赛中,______是一种常用的动态规划算法策略。

答案:状态转移3. 在信息学奥赛中,______是一种常用的搜索算法。

答案:回溯法4. 在信息学奥赛中,______是一种常用的图论算法。

答案:最短路径三、简答题(每题10分,共30分)1. 请简述信息学奥赛中动态规划算法的基本思想。

答案:动态规划算法的基本思想是将复杂问题分解为一系列子问题,通过解决子问题并存储其结果来避免重复计算,从而提高算法效率。

2. 在信息学奥赛中,如何选择合适的数据结构来解决特定问题?答案:选择合适的数据结构需要考虑问题的特点和数据操作的需求,例如,对于需要频繁插入和删除的场景,可以选择链表;对于需要快速查找的场景,可以选择哈希表。

3. 在信息学奥赛中,如何优化算法的时间复杂度?答案:优化算法的时间复杂度可以通过减少不必要的操作、使用更高效的数据结构、采用分治策略、动态规划等方法来实现。

四、编程题(每题30分,共30分)1. 编写一个程序,实现快速排序算法。

答案:略(此处应提供快速排序算法的代码实现)注意:以上答案仅供参考,实际答案可能因具体题目而异。

2023 noip题解

2023 noip题解

2023 noip题解2023 NOIP 题解2023 NOIP(全国信息学奥林匹克联赛)是一场在2023年举行的编程竞赛。

该竞赛的目标是通过一系列的算法和数据结构问题来评估参赛者的编程能力。

在本文中,我们将为您解答一些可能出现在2023 NOIP竞赛中的题目,并提供相应的解题思路。

题目一:字符串拼接题目描述:给定两个字符串S1和S2,请将它们拼接起来,并输出结果。

解题思路:这个题目非常简单。

我们可以使用字符串的连接运算符将S1和S2拼接在一起,并将结果输出。

在大多数编程语言中,字符串的连接运算符通常是"+"。

代码示例(Python):```pythonS1 = input("请输入第一个字符串:")S2 = input("请输入第二个字符串:")result = S1 + S2print(result)```题目二:二分查找题目描述:给定一个已排序的整数数组A和一个目标值target,请在数组中查找target的索引。

如果目标值不存在于数组中,则返回-1。

解题思路:这个题目可以使用二分查找算法来解决。

我们可以首先在数组的中间位置找到一个元素,将其与目标值进行比较。

如果目标值比中间元素大,则在数组的右半部分继续查找;如果目标值比中间元素小,则在数组的左半部分继续查找。

通过不断缩小查找范围,最终可以找到目标值或确定其不存在。

代码示例(C++):```cpp#include <iostream>#include <vector>using namespace std;int binarySearch(vector<int>& A, int target) {int left = 0, right = A.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (A[mid] == target) {return mid;} else if (A[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;}int main() {vector<int> A = {1, 2, 3, 4, 5, 6, 7};int target = 4;int index = binarySearch(A, target);cout << "目标值的索引为:" << index << endl;return 0;}```题目三:最大子序和题目描述:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),并返回其最大和。

高中信息奥赛试题及答案

高中信息奥赛试题及答案

高中信息奥赛试题及答案试题一:算法设计题目:给定一个整数数组,找出其中最长的连续递增子序列的长度。

要求:1. 编写一个函数,输入为整数数组,输出为最长连续递增子序列的长度。

2. 考虑时间复杂度和空间复杂度。

答案:```pythondef find_longest_increasing_subsequence(arr):if not arr:return 0n = len(arr)dp = [1] * n # dp[i] 表示以 arr[i] 结尾的最长递增子序列长度max_length = 1 # 至少包含一个元素for i in range(1, n):for j in range(i):if arr[j] < arr[i]:dp[i] = max(dp[i], dp[j] + 1)max_length = max(max_length, dp[i])return max_length```试题二:数据结构题目:设计一个队列,支持以下操作:1. 入队(enqueue)2. 出队(dequeue)3. 获取队列大小(size)4. 判断队列是否为空(is_empty)要求:1. 使用链表实现队列。

2. 确保所有操作的时间复杂度为 O(1)。

答案:```pythonclass Node:def __init__(self, value):self.value = valueself.next = Noneclass Queue:def __init__(self):self.head = Noneself.tail = Noneself.size = 0def enqueue(self, value):new_node = Node(value)if self.is_empty():self.head = new_nodeelse:self.tail.next = new_node self.tail = new_nodeself.size += 1def dequeue(self):if self.is_empty():raise Exception("Queue is empty")value = self.head.valueself.head = self.head.nextif self.head is None:self.tail = Noneself.size -= 1return valuedef size(self):return self.sizedef is_empty(self):return self.size == 0```试题三:编程语言特性题目:请解释以下C++代码片段的功能,并指出可能的问题。

信奥赛普及组复赛试卷

信奥赛普及组复赛试卷

信奥赛普及组复赛试卷一、单项选择题(每题2分,共30分)1. 在C++语言中,以下哪个符号用于定义一个整数变量?()A. #B. $.C. int.D. char.2. 一个完整的C++程序必须有()。

A. 预处理命令。

B. 输入输出语句。

C. 主函数。

D. 函数调用。

3. 在C++中,若定义了 `int a = 5;`,表达式 `a++` 的值为()。

A. 5.B. 6.C. 7.D. 8.4. 若有数组定义 `int arr[5] = {1, 2, 3, 4, 5};`,则访问数组元素`arr[3]` 的值为()。

A. 1.B. 2.C. 3.D. 4.5. 在C++中,用于从标准输入读取一个整数的函数是()。

A. scanf.B. cin.C. get.D. read.6. 以下关于函数的说法正确的是()。

A. 函数可以没有返回值。

B. 函数只能有一个参数。

C. 函数内部不能定义变量。

D. 函数名不能以数字开头。

7. 在C++中,若有函数声明 `void fun(int x);`,则函数 `fun` 的参数传递方式是()。

A. 值传递。

B. 地址传递。

C. 引用传递。

D. 指针传递。

8. 若要计算1到100的整数和,以下哪种循环结构最合适?()A. for循环。

B. while循环。

C. do - while循环。

D. 任意一种循环都可以。

9. 在C++中,以下关于字符串的操作正确的是()。

A. 可以直接用 `==` 比较两个字符串是否相等。

B. 字符串是基本数据类型。

C. 可以用 `strcpy` 函数复制字符串。

D. 字符串的长度可以用 `sizeof` 直接获取。

10. 若有结构体定义:cpp.struct Student {int id;char name[20];};定义一个结构体变量 `Student stu;` 后,要给成员变量 `id` 赋值为1001,以下正确的是()。

A. stu - > id = 1001;B. stu.id = 1001;C. (*stu).id = 1001;D. 以上都不对。

信息学奥赛试题及答案

信息学奥赛试题及答案

信息学奥赛试题一、填空题(共20题,每题1.5分,共计30分。

每题有5个备选答案,前10个题为单选题(即每题有且只有一个正确答案,选对得分),后10题为不定项选择题(即每题有1至5个正确答案,只有全部选对才得分)。

1.微型计算机的性能主要取决于()。

A)内存 B)主板 C)中央处理器 D)硬盘 E)显示器2.能将高级语言程序转换为目标程序的是( ).A)调试程序 B)解释程序C)编辑程序 D)编译程序E)连接程序3.A=11001010B,B=00001111B,C=01011100B,则A∨B∧C=( )A)01011110 B) 00001111 C)01011100 D) 11001110 E) 110010104.计算机设备,既是输入设备,又是输出设备的是( )。

A)键盘 B)触摸屏 C)扫描仪 D)投影仪 E)数字化仪5.计算机病毒传染的必要条件是( ) 。

A) 在内存中运行病毒程序 B) 对磁盘进行读写操作C) 在内存中运行含有病毒的可执行程序 D) 复制文件 E)删除文件6.已知队列(13,2,11,34,4l,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是( )。

A)5 B)41 C)77 D)13 E)187.在使用E-mail前,需要对Outlook进行设置,其中ISP发送电子邮件的服务器称为( )服务器。

A)POP3 B)SMTP C)DNS D)FTP E)HTTP8.对给定的整数序列(54,73,21,35,67,78,63,24,89)进行从小到大的排序时,采用快速排序的第一趟扫描的结果是( ).A)(24,21,35,54,67, 78,63,73,89) B)(24,35,21,54,67, 78,63,73,89)C)(24,21,35,54,67, 63,73,78,89) D)(21,24,35,54,63, 67,73,78,89)E)(24,21,35,54,67, 63,73,78,89)9. 编号为1到13的纸牌顺时针排成一圈,有人从编号为1的牌从数字1开始顺时针数下去,1,2,3,……,一圈又一圈,问当数到数字n ,所在的纸牌编号为多少?A) n mod 13 B)1+(n-1) mod 13 C)(n+1) mod 13-1 D)(n+1) mod 13 E) (n-1) mod 1310.对下图进行广度优先拓朴排序得到的顶点序列正确的是( ).A) 1,2,3,4,5,6 B) 1,3,2,4,5,6 C) 1,3,2,4,6,5D) 1,2,3,4,6,5, E) 1,3,2,4,5,611.下列属于冯.诺依曼计算机模型的核心思想是( ).A) 采用二进制表示数据和指令; B) 采用”存储程序”工作方式C) 计算机硬件有五大部件(运算器、控制器、存储器、输入和输出设备)D) 结构化程序设计方法 E) 计算机软件只有系统软件12.CPU访问内存的速度比访问下列哪个(些)存储设备要慢( )。

小学生信息学奥赛集训试题及答案

小学生信息学奥赛集训试题及答案

小学生信息学奥赛集训试题及答案前言(2010年3月)信息奥赛主要题型为:选择题、阅读程序、问题求解、完善程序、编程,其中初赛主要为前四项,着重考核学生的信息基础的知识面,对程序的理解能力、分析问题解决问题的能力,决赛着重考核学生的分析问题解决问题及实际编程能力。

为此,我们****培训中心组织老师精心整理了本次集训的资料。

本期培训共十次课,各专题讲解时间分配如下:第一讲:基础知识(1)第二讲:基础知识(2)第三讲:阅读程序(1)第四讲:阅读程序(2)第五讲:问题求解(1)第六讲:问题求解(2)第七讲:完善程序(1)第八讲:完善程序(2)第九讲:综合训练(1)第十讲:综合训练(2)课程编排的思想是先了解信息学基础知识,激发学习兴趣;通过问题求解训练,提高分析问题的能力;通过阅读程序训练,实际可以学习部分示范程序;通过完善程序,解决问题,同时也是学习示范程序;最后两次综合训练相当于模拟竞赛。

希望同学们在集训期间,能认真听讲,及时复习,理解老师的解题思路,相信通过我们的一起努力,你一定能取的很大的进步。

第一章计算机基础知识1 计算机基本知识1.计算机的产生和发展1946年2月15日,在美国宾夕法尼亚大学诞生了世界上第一台电子计算机ENIAC(Electronic Numerical Integrator And Computer),它是为计算弹道和射击表而设计的。

这台计算机占地170平方米,重30吨,主要元件是电子管,用了18000多个,每秒能进行5000次加法运算,比当时最快的计算工具还快300多倍。

2.计算机的特点计算机的特点主要有:运算速度快、计算精度高、具有大容量记忆和高速存取能力、具有逻辑判断能力以及存储程序和自动处理能力。

3.计算机基本工作原理与冯·诺依曼计算机模型3.计算机的应用4.计算机的发展【例001】迄今电子数字式计算机都属于冯·诺依曼式,这是由于它们都建立在冯·诺依曼提出的()核心思想基础上。

信息学奥赛题

信息学奥赛题

选择题在解决信息学奥赛中的图论问题时,以下哪种数据结构最常用于存储图的信息?A. 数组B. 链表C. 邻接矩阵(正确答案)D. 哈希表下列哪项是深度优先搜索(DFS)与广度优先搜索(BFS)的主要区别?A. DFS使用栈,BFS使用队列(正确答案)B. DFS用于有向图,BFS用于无向图C. DFS时间复杂度更高D. BFS空间复杂度更低在二分查找算法中,如果数组元素按升序排列,要查找的目标值位于数组中间元素的右侧,则下一步应:A. 放弃查找,因为目标值不存在B. 在中间元素的左侧子数组继续查找C. 在中间元素的右侧子数组继续查找(正确答案)D. 重新排序数组后查找关于动态规划,以下哪种说法是正确的?A. 动态规划只能解决最优化问题B. 动态规划问题必须有重叠子问题(正确答案)C. 动态规划不适用于有后效性的问题D. 所有递归问题都能用动态规划解决在处理字符串匹配问题时,KMP算法相比于朴素的字符串匹配算法,其主要优势在于:A. 更高的空间复杂度B. 更低的时间复杂度(正确答案)C. 更容易实现D. 对所有情况都有优势下列哪项不是贪心算法的特点?A. 每一步选择都依赖当前最优解B. 能保证所有问题的全局最优解(正确答案)C. 适用于具有贪心选择性质的问题D. 通常比动态规划简单高效在解决背包问题时,如果每个物品都有无限件可用,该问题被称为:A. 0/1背包问题B. 完全背包问题(正确答案)C. 多重背包问题D. 分组背包问题下列哪种排序算法在最坏情况下的时间复杂度是O(n2)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序(正确答案)在图着色问题中,如果要求任意两个相邻顶点不能着相同颜色,且使用的颜色数尽可能少,这通常属于哪类问题?A. P问题B. NP问题C. NP完全问题(正确答案)D. NP难问题。

信息学奥赛试题精选33题(附带题解)

信息学奥赛试题精选33题(附带题解)

第1~10题为基础题,第11~20题为提高题,第21~33为综合题注:因为在本文档中需要用到一些特殊的数学符号(如:求和号、分数等),所以当您在百度文库中浏览时,一些数学符号可能会显示不出来,不过当您把本文档下载下来在本地浏览时,所有的符号即可全部都显示出来。

^_^基础题:【1 Prime Frequency】【问题描述】给出一个仅包含字母和数字(0-9, A-Z 以及a-z)的字符串,请您计算频率(字符出现的次数),并仅报告哪些字符的频率是素数。

输入:输入的第一行给出一个整数T( 0<T<201),表示测试用例个数。

后面的T行每行给出一个测试用例:一个字母-数字组成的字符串。

字符串的长度是小于2001的一个正整数。

输出:对输入的每个测试用例输出一行,给出一个输出序列号,然后给出在输入的字符串中频率是素数的字符。

这些字符按字母升序排列。

所谓“字母升序”意谓按ASCII 值升序排列。

如果没有字符的频率是素数,输出“empty”(没有引号)。

注:试题来源:Bangladesh National Computer Programming Contest在线测试:UV A 10789提示先离线计算出[2‥2200]的素数筛u[]。

然后每输入一个测试串,以ASCLL码为下标统计各字符的频率p[],并按照ASCLL码递增的顺序(0≤i≤299)输出频率为素数的字符(即u [p[i]]=1且ASCLL码值为i的字符)。

若没有频率为素数的字符,则输出失败信息。

【2 Twin Primes】【问题描述】双素数(Twin Primes)是形式为(p, p+2),术语“双素数”由Paul Stäckel (1892-1919)给出,前几个双素数是(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43)。

在本题中请你给出第S对双素数,其中S是输入中给出的整数。

信奥编程题目

信奥编程题目

选择题:
在编程中,用于存储和处理数据的基本单位是?
A. 函数
B. 变量(正确答案)
C. 数组
D. 类
下列哪个选项是Python语言中正确的变量命名方式?
A. 2variable
B. variable-2
C. _variable2(正确答案)
D. variable!2
在C++语言中,下列哪个关键字用于定义常量?
A. var
B. const(正确答案)
C. define
D. final
下列哪个是Python中的逻辑运算符,用于表示“并且”的关系?
A. ||
B. &&
C. and(正确答案)
D. not
在编程中,用于控制程序流程,根据条件执行不同代码块的结构是?
A. 循环
B. 函数
C. 条件语句(正确答案)
D. 变量
下列哪个选项不是Python中的基本数据类型?
A. int
B. float
C. string
D. boolean(正确答案)
在Java语言中,下列哪个关键字用于创建类的实例?
A. class
B. new(正确答案)
C. instance
D. create
下列哪个选项是正确的数组声明方式(以Java为例)?
A. int array;
B. int[] array = new int;(正确答案)
C. int[] array;
D. int array = new int;
在编程竞赛中,常用的输入输出方式不包括下列哪个?
A.标准输入输出
B.B. 文件输入输出
C. 网络输入输出
D. 图形界面输入输出(正确答案)。

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

程序设计试题及答案(备注:试题难度评价采取五★级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、二、三★级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四★级试题属于程序设计试题基础级别的思考题,五★级难度试题在此没有涉及,在程序设计高级试题中另行讲解。

对于基础和容易两个级别的程序设计试题,若能够给出语句分类(如If条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。

若属于13大类别的将尽量标注。

)程序设计试题几大分类:1、素数类问题(求素数的几种算法):2、数据排序问题(数据排序的几种方法):3、最大公约数和最小公倍数问题(几种算法):4、公式求解类问题(如求圆周率π、自然常数e、解方程等等):5、编号相反处理问题:6、约瑟夫问题(或猴子选大王问题、密码问题):7、回文数问题:8、高精度数值计算问题:9、数值计算问题:10、进制相互转换问题:11、字符串倒置问题:12、排列与组合类问题:13、因子、质因子(质因数)类相关问题:答案部分:(程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也有优劣之分,一个程序的优劣,关键在于是否找到了好的算法,以下程序和算法不一定就是最佳算法和最佳程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改进程序)(经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!)①判断是否为素数,若是素数则返回true,若不是素数则返回false:function prime(x:longint):boolean;varj,y:longint;beginprime:=true;if x<2 then prime:=false; y:=trunc(sqrt(x)); for j:=2 to y doif (x mod j = 0) thenbegin prime:=false; exit; end; end;备注:1~100之间所有的素数:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97。

(共25个)②判断是否为回文数,若是回文数则返回true ,若不是回文数则返回false :function huiwen(n:longint):boolean; varm,i,j:longint;a:array[1..10] of integer; beginif n<0 then begin huiwen:=false; exit; end; m:=n; i:=0; huiwen:=true; repeat i:=i+1;a[i]:=m mod 10; m:=m div 10; until m=0;for j:=1 to (i div 2) do if a[j]<>a[i-j+1] thenbegin huiwen:=false; exit; end; end;③求最大公约数子函数,返回两个正整数的最大公约数,采用辗转相除法算法; function gcd(a,b:longint):longint; beginif b=0 then gcd:=aelse gcd:=gcd(b,a mod b); end;④求最小公倍数:lcm=a*b div gcd(a,b);(以下程序设计试题来自《奥赛经典(语言篇)》) 第2章 基本语句与程序结构例题部分:1、 求梯形的面积。

(梯形面积公式:1()2S h a b =+) (★,测试数据①2、 求一元二次方程ax 2+bx +C =0的两个实根。

(求根公式:1,22b x a-=(★,测试数据a =1,b =-5,c =6;答案:x 1=2、x 2=3)信息学奥林匹克竞赛辅导——程序设计试题答案部分 第3页3、 输入一个三位的自然数,然后把这个数的百位与个位对调,输出对调后的结果。

(★)4、 输入三个数a 、b 、c ,首先判断这三个数能否构成三角形,若能,则求出三角形的面积。

(提示:海伦公式S =2a b cd ++=,a 、b 、c 为边长) (★,If 条件语句,测试数据a =5,b =6,c =7;答案:14.7)5、 从键盘读入三个数,按从大到小的顺序把它们打印出来。

(★,If 条件语句)6、 输入三角形的三边,判断它是否是直角三角形。

(★,If 条件语句,测试数据①3、4、5;②4、5、6;答案①Yes ;②No )7、 编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。

(★★★) 8、 输入一个年号,判断它是否为闰年。

(★,If 条件语句,测试数据①1900;②2000;③2008;答案:①No ;②Yes ;③Yes ) 9、 编程计算S =1+2+3+…+100。

(★,循环语句, 答案:5050)相关练习:(1)111123100S =++++; (2)22212100S =+++;(3)246100S =++++;(4)14710100S =+++++;(相关练习答案:(1)5.19(保留2为小数);(2);(3)2550;(4)1717)10、根据公式22221111623n π=++++,计算圆周率的π值。

(★★,循环语句,测试数据n =10000;答案:3.) program e; vari:longint; s:real; beginwriteln; s:=0;for i:=1 to 10000 do s:=s+1/(i*i); writeln(sqrt(6*s)); end.11、计算n!。

(n!=1×2×3×…×n ,取n =10)(★★,循环语句,10!=)12、已知一对兔子,每个月可以生一对小兔,而小兔过一个月后也可生一对小兔。

即兔子的对数是:第一个月1对,第二个月2对,第三个月3对,第四个月5对,……,假设兔子的生育期是12个月,并且不死,问一年后,这对兔子有多少对活着的后代?(Fibonacci 数列问题)(★★,循环语句, 1、2、3、5、8、13、21、34、55、89、144、233;答案233)13、求两个整数a与b的最大公约数和最小公倍数。

(★,循环语句、If条件语句,测试数据16和24,最大公约数8,最小公倍数48)14、利用格利高公式求π。

11114357π=-+-+,直到最后一项的值小于10-6为止。

(★★★,循环语句)(答案:3.E+00)program e2_32;varn,fh:longint;s,t,p:real;beginwriteln; n:=1; s:=0; t:=1; fh:=1;while (abs(t)>=1e-6) dobegin t:=fh/n; s:=s+t; n:=n+2; fh:=-fh; end; p:=4*s;writeln('pi=',p);end.相关练习:利用公式11181357911π=+++⨯⨯⨯,求π。

(计算前10000项时,答案为3.)program e;vari,a,b:longint;x,s:real;beginwriteln; s:=0;for i:=1 to 10000 do begin a:=(4*i-3); b:=(4*i-1); s:=s+1/(a*b); end;writeln(8*s);end.15、求100~999中的水仙花数。

(若三位数ABC,ABC=A3+B3+C3,则称ABC为水仙花数。

例如153,13+53+33=153,则153是水仙花数。

)(★★,循环语句)(答案:153、370、371、407)program e12;vari,a,b,c:integer;beginwriteln;for i:=100 to 999 dobegina:=i div 100;b:=(i mod 100) div 10;c:=i mod 10;if i=a*a*a+b*b*b+c*c*c then write(i:8);end;end.16、试编写能够打印输出如下图形的程序。

(★★,循环语句)AAAAAAAAA信息学奥林匹克竞赛辅导——程序设计试题答案部分 第5页AAAAAAA AAAAA AAAAprogram e; const n=5; vari,j:integer; begin writeln;for i:=1 to n do beginwrite('':i);for j:=1 to (n-i)*2+1 do write('A'); writeln; end; end.17、四个学生上地理课,回答我国四大淡水湖大小时这样说:(★★★)甲:“最大洞庭湖,最小洪泽湖,鄱阳湖第三。

” 乙:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三。

” 丙:“最小洪泽湖,洞庭湖第三。

” 丁:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三。

”对于每个湖的大小,每个学生仅答对一个,请编程确定四个湖的大小。

习题部分:1、 已知三角形的两边a 、b 和夹角jc 的值,求第三边(已知条件由键盘输入)。

(★)(提示:余角公式2222cos c a b ab c =+-) (测试数据:输入a =3、b =4、jc =90;输出5)program e2_5; vara,b,c,jc:real; beginwriteln('input a,b,jc:'); readln(a,b,jc); c:=sqrt(a*a+b*b-2*a*b*cos(pi*jc/180)); writeln(c:8:2); end.2、 编写程序把一个四位整数3581颠倒成1853。

(★)program e; const n=3581; vara,b,c,d:integer; begin writeln;a:=n mod 10;b:=(n div 10) mod 10; c:=(n div 100) mod 10;d:=n div 1000;writeln(a,b,c,d);end.相关练习:任意输入一个正整数,颠倒输出该数。

program e;varn:longint;beginwriteln; writeln('input a integer number:'); readln(n);repeatwrite(n mod 10); n:=n div 10;until n=0;end.3、输入a、b、c三个数,打印出最大者。

相关文档
最新文档