1、第十六届绍兴市少儿信息学竞赛 (C++版 试卷) 第十六届绍兴市少儿信息学竞赛 初赛试题 (小学组C++语言 二小时完成) ●●全部试题答案都要求写在答卷纸上,写在试卷上一律无效●● 一、选择一个正确答案代码(A/B/C/D),填入每題的括号内(每题2分,每题 只有一个正确答案,多选无分。共20分) 1、人工智能英文缩写为( )。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。他是计算机科学的一个分支,它企图了解
2、智能 的实质,并生尸出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包 括机器人、语言识别、图像识别、自然语言处理和专家系统等。 A. AT B. ALBB C. AM D. AI 2、下列存储器按存取速度由快至慢排列,正确的是( ) A.硬盘 〉RAM 〉高速缓存〉U盘 B.高速缓存 〉RAM 〉硬盘 〉U盘 C.髙速缓存 〉硬盘 〉RAM 〉U盘 D. U盘 〉硬盘 〉RAM 〉高速缓存 3、下列属于输入设备的是( ) A.显示器 B.触摸屏 C.音响 D.打印机 4、小写字母“a”的ASCII
3、码为97,小写字母i的ASCII码的值是( ) A. 72 B. 73 C. 105 D. 106 5、IP地址是每个上网的电脑必须的,下列IP地址中合法的是( ) A. 225.225. 225.225 B. 200.256.192. 8 C. 192.168.1.1. 2 D.0.0.0 6、下列描述计算机病毒的特性中,( )不是正确的。 A、潜伏性 B、传染性 C、智能性 D、危害性 7、己知一个栈的入栈顺序是1, 2, 3, n,其输出序列为P1,P2, P3,……,pn, 如果P1是n,则Pi是( ) A、不确定 B、n-i
4、1 C.n-1 D.i 8、若设二叉树的深度为h,除第层外,其它各层(1〜h-1)的结点数都达到最大个数, 第h层所有的结点都连续集中在最左边,这就是完全二叉树。如图1所示,共有10个结点,5个叶子结点,深度为4, 1~3层的结点数都达到了最大个数。那么如果完全二叉树共计39个点,那么他的叶子结点的数量是( )。 A.20 B.21 C. 19 D. 23 9、有一下程序: int i, x1, x2, x3, x4, s; for(i=1800;i<=2000;i++){ x4=i % 10; x3=i / 10 %1
5、0;
x2=i / 100 %10;
x1=i / 1000 %10;
图1
if ((x1==x4) && (x2==x3)) then s++;
}
cout<
6、題:(2+3+2+3=10分) 1、在数学王国中,数字6和8称吉祥数字,而其他数字都是不怎么吉祥。如果一个整数是 吉祥数字,当且仅当它的每一位只能包含吉祥数字。现在让你求出第K个吉祥数字。例如:前八个吉祥数字为:6,8,66,68,86,88,666,668,第10个吉祥数字为 。第29个吉祥数字为 。 2、魔术是很神奇的!瞧,泽泽同学最近又迷恋上了一款新的魔术。魔术刚开始前,魔术纸上 的4个点形成一个完美的正方形(见图2)。经过1次魔法后,在每两个相邻点中心会产生一个新点,并且在每个正方形的正中心也会产生一个新点。经过第1次的魔
7、法,会产生5 个新点,共有9个点(见图3)。再经过一次魔法(总共2次魔法),此时共有25个点(见图4) 。现在请你帮助算出,经过3次魔法一共有 个点,经过7次魔法一共有 个点。
三、阅读程序并写出运行结果(4+4+8+8+4+4+8=40分)
批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市教育教学研究院(2018年4月)
1.
#include
8、 b, c, d; cin>>a>>b>>c>>d; if( a>b) a=a / 10; if (d>c) cout<<"Time Limit Exceeded"; else if (a
9、include 10、
3、
#include 11、 {
cout<
using namespace std;
int main(){
int n, m, i, j;
char a[51][51];
int b[6];
cin>>n>>m;
n= n*5+1;
m= 12、m*5+1l;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cin>>a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if ((a[i][j]!='#')&& (i %5==2) && (j %5==2))
{
if (a[i][j]== ’.’) b[1]=b[1]+1;
else if ((a[i][j]==’*’)&& (a[i+1][j]==’ 13、’)) b[2]++;
else if ((a[i+1][j]== ’*’)&& (a[i+2][j]==’.’)) b[3]++;
else if ((a[i+2][j] ==’*’)&& (a[i+3][j]==’.’) b[4]++;
else if ((a[i+3][j]== ’*’) && b[5]++;
}
for(i=1;i<=5;i++)cout< 14、
#....#****#
#....#****#
#....#****#
###########
输出1:
输入2:
2 4
#####################
#****#****#****#****#
#****#....#****#****#
#....#....#****#****#
#....#....#....#****#
#####################
#****#****#****#....#
#****#****#....#....#
#....#....#....#....#
#....#....#....#.. 15、
#####################
输出2:
5.
#include 16、in>>n;
cout< 17、完全数,他想找出一段连续数据里面的所有完全数,如求x〜y (2<=x<=y<=10000)中的完全数。但是他又感觉每个完全数进行正向输出又没有反向输出好看,所以他想把找到的完 全数反向输出。当然如果这段数据里面没有完全数就应该输出no。
【输入格式】
一行:包括两个数,x y代表求x〜y之间的完全数。
【输出格式】
输出可能有多行,每行一个反向输出的完全数。注:如果没有完全数,则还应该输出 no。
【输入样例1】
2 29
【输出样例1】
6
82
实现上述功能程序如下,请在划线处填入合适代码。
【程序清单】
#include 18、espace std;
int main(){
int x, y,i,t,w,xx,s,j, sum,p;
cin>>x>>y;
for(i= ① ;i<=y;i++)
{
s=1;
for(j=2;j<=sqrt(i);j++) //求出约数的之和
if( ② )
{
if(j*j!=i)
③
else s=s+j;
}
if(s==i) //如果找到话就输出
{
w=w+l;
w 19、hile(s>0)
{
④ ;
s=s / 10;
}
cout< 20、I’, ’II’, ’III’, ’IV’, ’V’, ’VI’, ’VII’, ’VIII’, ’IX’;将数字 10,20,30,40,50,60,70,80,90 分别写为’X’, ’XX’, ’XXX’, ’XU’, ’L’, ’LX’, ’LXX’, ’LXXX’, ’XC’。
那么其余的数字怎么用罗马数字表示呢?另外老师给了大家一点小提示:任何小于100 的数字都可以通过分别转换几十和几个后,结果可以用罗马数字组合在一起。例如,数字 48转换为40加8,因为40可用XL表示,8可用VIII表示,所以48可以组合成XLVIII。
本次游戏将会给你一个用罗马数字表示的数。请同学们重 21、新排列这个字符,目的是找到用罗马数字表示的尽可能小的数字。
【输入格式】
输入一个整数B (1≤B<100),用罗马数字表示的整数。
【输出格式】
请根据输入的这个罗马数字,重新排列,以便找到最小的用罗马数字表示的整数。
【输入祥例1】
VII
【输出样例1】
VII
【输入样例2】
VI
【输出祥例2】
IV
为实现上述功能请在划线处填上合适代码。
【程序清单】
#include 22、y;
void sw( ⑥ ){
int i, j;
for(i= ⑦ )
for(j=i+l;j 23、I';
a[8]= 'VIII';
a[9]= 'IX';
a[10]= 'X';
a[20]= 'XX';
a[30]= 'XXX';
a[40]= 'XL';
a[50]= 'L';
a[60]= 'LX';
a[70]= 'LXX';
a[80]= 'LXXX';
a[90]= 'XC';
for(k=l;k<=99;k++)
{
y=a[K];
if (i %10!=0)
⑧ ;
cin>>x;
sw(x);
for(k=l;k<=99;k++)
{
y=a[k];
if(x==y)
{
⑩ ;
return 0;
}
}
return 0;
}






