2014少年信息学奥林匹克联赛初赛C试题

第二十届全国青少年信息学奥林匹克联赛初赛

(普及组 C 语言两小时完成)

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)

1. 以下哪个是面向对象的高级语言( )。

2. 1TB代表的字节数是( )。

3. 二进制数00100100和00010101的和是( )。

4. 以下哪一种设备属于输出设备( )。

5. 下列对操作系统功能的描述最为完整的是( )。

6. CPU、存储器、I/O设备是通过( )连接起来的。

7. 断电后会丢失数据的存储器是( )。

8. 以下哪一种是属于电子邮件收发的协议( )。

9. 下列选项中不属于图像格式的是( )。

10. 链表不具有的特点是( )。

A.不必事物估计存储空间 C.插入删除不需要移动元素 B.可随机访问任一元素 D.所需空间与线性表长度成正比 A.JPEG格式 B.TXT格式 C.GIF格式 D.PNG格式 A.SMTP B.UDP C.P2P D.FTP A.RAM B.ROM C.硬盘 D.光盘 A.接口 B.总线 C.控制线 D.系统文件 A.负责外设与主机之间的信息交换 B.负责诊断机器的故障 D.将没有程序编译成目标程序 A.扫描仪 B.键盘 C.鼠标 D.打印机 A.00101000 B.001010100 C.01000101 D.00111001 A.2的10次方 B.2的20次方 C.2的30次方 D.2的40次方 A.汇编语言 B.C++ C.Fortran D.Basic C.控制和管理计算机系统的各种硬件和软件资源的使用

11. 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。

12. 下列几个32位IP地址中,书写错误的是( )。

13. 要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。

#include

int main()

{

int n;

float s;

s = 1.0;

for(n = 10; n > 1; n--)

s = s + 1 / n;

printf("%f",s);

return 0;

}

程序运行后输出结果错误,导致错误结果的程序行是( )。

14. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四

舍五入的是( )。

15. 有以下程序

#include

int main()

{

int s, a, n;

s = 0;

a = 1;

scanf("%d",&n);

do

{

s += 1;

a -= 2;

A.296 B.133 C.256 D.199 A.162.105.135.27 B.192.168.0.1 C.256.256.129.1 D.10.0.0.1 A.s = 1.0; B.for(n = 10; n > 1; n--) D.printf("%f",s); C.s = s + 1 / n; A.x = (x * 100) + 0.5 / 100.0; B.x = (x * 100 + 0.5) / 100.0; D.x = (x / 100 + 0.5) * 100.0; C.x = (int)(x * 100 + 0.5)/100.0;

}while(a != n);

printf("%d",s);

return 0;

}

若要使程序的输出值为2,则应该从键盘给n输入的值是( )。

16. 一棵具有5层的满二叉树中结点数为( )。

17. 有向图中每个顶点的度等于该顶点的( )。

18. 设有100个数据元素,采用折半搜索时,最大比较次数为( )。

19. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值,c>0。

s = a;

for(b = 1; b

s += 1;

则与上述程序段功能等价的赋值语句是( )。

20. 计算机界的最高奖是( )。

A.菲尔兹奖

二、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)

1.把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用K表示)。

例如,M=7,N=3时,K=8;在这里认为(5,1,1)和(1,5,1)是同一种放置方法。

问:M=8,N=5时,K=。

A.-1 B.-3 C.-5 D.0 A.31 B.32 C.33 D.16 A.入度 B.出度 C.入度和出度之和 D.入度和出度之差 A.6 B.7 C.8 D.10 A.s = a + b B.s = a + c C.s = s + c D.s = b + c B.诺贝尔奖 C.图灵奖 D.普利策奖

2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是。

三、阅读程序写结果(共4题,每题8分,共计32分)

1.

#include

int main()

{

int a, b, c, d, ans;

scanf("%d%d%d",&a,&b,&c);

d = a- b;

a = d + c;

ans = a * b;

printf("Ans = %d",ans);

return 0;

}

输入:2 3 4

输出:

2.

#include

int fun(int n)

{

if(n == 1)

return 1;

if(n == 2)

return 2;

return fun(n -2) - fun(n - 1);

}

int main()

{

int n;

scanf("%d",&n);

printf("%d",fun(n));

return 0;

}

输入:7

输出:

3.

#include

#include

#define M 100

int main()

{

charst[M];

int i, len;

gets(st);

len = strlen(st);

for(i = 0; i

if(st[i] >= 'a' &&st[i]

st[i] = st[i] - 'a' + 'A';

puts(st);

return 0;

}

输入:Hello, my name is Lostmonkey.

输出:

4.

#include

#define SIZE 100

int main()

{

int p[SIZE];

int n, tot, i, cn;

tot = 0;

scanf("%d",&n);

for(i = 1; i

p[i] = 1;

for(i = 2; i

{

if(p[i] == 1)

tot++;

cn = i * 2;

while(cn

{

p[cn] = 0;

cn += i;

}

}

printf("%d",tot);

return 0;

}

输入:30

输出:

四、完善程序(共2题,共计28分)

1.(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。请填空。(每空3分,共12分) #include

#define SIZE30

intdelnum(char *s)

{

int i, j;

j = 0;

for(i = 0; s[i] != '\0'; i++)

if(s[i]

s[j] = s[i];

}

}

int main()

{

char s[SIZE];

intlen, i;

gets(s);

len = delnum(s);

for(i = 0; i

printf("%c",);

return 0;

}

2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。

输入第一行包含两个整数m和n,即矩阵的行数和列数。之后m行,每行n个整数,描述整个矩阵。程序最终输出最大的子矩阵和。(最后一空4分,其余3分,共16分)

比如在如下这个矩阵中:

4 4

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2

拥有最大和的子矩阵为:

9 2

-4 1

-1 8

其和为15

3 3

-2 10 20

-1 100 -2

0 -2 -3

最大子矩阵和为128

4 4

0 -2 -9 -9

-9 11 5 7

-4 -3 -7 -6

-1 7 7 5

最大子矩阵和为26

#include

#define SIZE 100

int matrix[SIZE + 1][SIZE + 1];

introwsum[SIZE + 1][SIZE + 1]; //rowsum[i][j]记录第i行前j个数的和 int m, n, i, j, first, last, area, ans;

int main()

{

scanf("%d%d",&m,&n);

for(i = 1; i

for(j = 1; j

scanf("%d",&matrix[i][j]);

ans = matrix ;

for(i = 1; i

for(i = 1; i

for(j = 1; j

for(first = 1; first

for(last = first; last

{

for(i = 1; i

{

;

if(area >ans)

ans = area;

if(area

area = 0;

}

}

printf("%d",ans);

return 0;

}

第二十届全国青少年信息学奥林匹克联赛初赛

(普及组 C 语言两小时完成)

●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●

一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)

1. 以下哪个是面向对象的高级语言( )。

2. 1TB代表的字节数是( )。

3. 二进制数00100100和00010101的和是( )。

4. 以下哪一种设备属于输出设备( )。

5. 下列对操作系统功能的描述最为完整的是( )。

6. CPU、存储器、I/O设备是通过( )连接起来的。

7. 断电后会丢失数据的存储器是( )。

8. 以下哪一种是属于电子邮件收发的协议( )。

9. 下列选项中不属于图像格式的是( )。

10. 链表不具有的特点是( )。

A.不必事物估计存储空间 C.插入删除不需要移动元素 B.可随机访问任一元素 D.所需空间与线性表长度成正比 A.JPEG格式 B.TXT格式 C.GIF格式 D.PNG格式 A.SMTP B.UDP C.P2P D.FTP A.RAM B.ROM C.硬盘 D.光盘 A.接口 B.总线 C.控制线 D.系统文件 A.负责外设与主机之间的信息交换 B.负责诊断机器的故障 D.将没有程序编译成目标程序 A.扫描仪 B.键盘 C.鼠标 D.打印机 A.00101000 B.001010100 C.01000101 D.00111001 A.2的10次方 B.2的20次方 C.2的30次方 D.2的40次方 A.汇编语言 B.C++ C.Fortran D.Basic C.控制和管理计算机系统的各种硬件和软件资源的使用

11. 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。

12. 下列几个32位IP地址中,书写错误的是( )。

13. 要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。

#include

int main()

{

int n;

float s;

s = 1.0;

for(n = 10; n > 1; n--)

s = s + 1 / n;

printf("%f",s);

return 0;

}

程序运行后输出结果错误,导致错误结果的程序行是( )。

14. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四

舍五入的是( )。

15. 有以下程序

#include

int main()

{

int s, a, n;

s = 0;

a = 1;

scanf("%d",&n);

do

{

s += 1;

a -= 2;

A.296 B.133 C.256 D.199 A.162.105.135.27 B.192.168.0.1 C.256.256.129.1 D.10.0.0.1 A.s = 1.0; B.for(n = 10; n > 1; n--) D.printf("%f",s); C.s = s + 1 / n; A.x = (x * 100) + 0.5 / 100.0; B.x = (x * 100 + 0.5) / 100.0; D.x = (x / 100 + 0.5) * 100.0; C.x = (int)(x * 100 + 0.5)/100.0;

}while(a != n);

printf("%d",s);

return 0;

}

若要使程序的输出值为2,则应该从键盘给n输入的值是( )。

16. 一棵具有5层的满二叉树中结点数为( )。

17. 有向图中每个顶点的度等于该顶点的( )。

18. 设有100个数据元素,采用折半搜索时,最大比较次数为( )。

19. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值,c>0。

s = a;

for(b = 1; b

s += 1;

则与上述程序段功能等价的赋值语句是( )。

20. 计算机界的最高奖是( )。

A.菲尔兹奖

二、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)

1.把M个同样的球放到N个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用K表示)。

例如,M=7,N=3时,K=8;在这里认为(5,1,1)和(1,5,1)是同一种放置方法。

问:M=8,N=5时,K=。

A.-1 B.-3 C.-5 D.0 A.31 B.32 C.33 D.16 A.入度 B.出度 C.入度和出度之和 D.入度和出度之差 A.6 B.7 C.8 D.10 A.s = a + b B.s = a + c C.s = s + c D.s = b + c B.诺贝尔奖 C.图灵奖 D.普利策奖

2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是。

三、阅读程序写结果(共4题,每题8分,共计32分)

1.

#include

int main()

{

int a, b, c, d, ans;

scanf("%d%d%d",&a,&b,&c);

d = a- b;

a = d + c;

ans = a * b;

printf("Ans = %d",ans);

return 0;

}

输入:2 3 4

输出:

2.

#include

int fun(int n)

{

if(n == 1)

return 1;

if(n == 2)

return 2;

return fun(n -2) - fun(n - 1);

}

int main()

{

int n;

scanf("%d",&n);

printf("%d",fun(n));

return 0;

}

输入:7

输出:

3.

#include

#include

#define M 100

int main()

{

charst[M];

int i, len;

gets(st);

len = strlen(st);

for(i = 0; i

if(st[i] >= 'a' &&st[i]

st[i] = st[i] - 'a' + 'A';

puts(st);

return 0;

}

输入:Hello, my name is Lostmonkey.

输出:

4.

#include

#define SIZE 100

int main()

{

int p[SIZE];

int n, tot, i, cn;

tot = 0;

scanf("%d",&n);

for(i = 1; i

p[i] = 1;

for(i = 2; i

{

if(p[i] == 1)

tot++;

cn = i * 2;

while(cn

{

p[cn] = 0;

cn += i;

}

}

printf("%d",tot);

return 0;

}

输入:30

输出:

四、完善程序(共2题,共计28分)

1.(数字删除)下面程序的功能是将字符串中的数字字符删除后输出。请填空。(每空3分,共12分) #include

#define SIZE30

intdelnum(char *s)

{

int i, j;

j = 0;

for(i = 0; s[i] != '\0'; i++)

if(s[i]

s[j] = s[i];

}

}

int main()

{

char s[SIZE];

intlen, i;

gets(s);

len = delnum(s);

for(i = 0; i

printf("%c",);

return 0;

}

2.(最大子矩阵和)给出m行n列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。

输入第一行包含两个整数m和n,即矩阵的行数和列数。之后m行,每行n个整数,描述整个矩阵。程序最终输出最大的子矩阵和。(最后一空4分,其余3分,共16分)

比如在如下这个矩阵中:

4 4

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2

拥有最大和的子矩阵为:

9 2

-4 1

-1 8

其和为15

3 3

-2 10 20

-1 100 -2

0 -2 -3

最大子矩阵和为128

4 4

0 -2 -9 -9

-9 11 5 7

-4 -3 -7 -6

-1 7 7 5

最大子矩阵和为26

#include

#define SIZE 100

int matrix[SIZE + 1][SIZE + 1];

introwsum[SIZE + 1][SIZE + 1]; //rowsum[i][j]记录第i行前j个数的和 int m, n, i, j, first, last, area, ans;

int main()

{

scanf("%d%d",&m,&n);

for(i = 1; i

for(j = 1; j

scanf("%d",&matrix[i][j]);

ans = matrix ;

for(i = 1; i

for(i = 1; i

for(j = 1; j

for(first = 1; first

for(last = first; last

{

for(i = 1; i

{

;

if(area >ans)

ans = area;

if(area

area = 0;

}

}

printf("%d",ans);

return 0;

}


相关文章

  • 全国青少年信息学奥林匹克竞赛
  • 编辑 锁定 为了向那些在中学阶段学习的青少年普及计算机科学知识,为了给学校的信息技术教育课程提供动力和新的思路,为了给那些有才华的学生提供相互交流和学习的机会.也为通过竞赛和相关的活动培养和选拔优秀计算机人才,教育部和中国科协委托中国计算机 ...查看


  • 高中阶段各类竞赛简介
  • 高中阶段各类竞赛简介 2015-03-11 培尖教育 一.全国青少年科技创新大赛 1. 竞赛时间:每年4月10日前为省级组织阶段:每年4月10日至8月为全国赛事组织阶段:每年8月下旬到年底为总结阶段. 2. 竞赛方式:提交作品 3. 大赛内 ...查看


  • 2016年招生掐尖"战鼓"已悄然"敲响" 报名需要什么条件?
  • 近日,浙江省内的一些竞赛尖子生越发不淡定了,他们都得到了一个消息:北京大学.清华大学在国庆长假前启动了数学.物理.化学等多个学科的秋季体验营,目标均锁定全国高中学科联赛一等奖或在本年度中国学科奥林匹克(初赛)中获得一等奖的尖子生.这意味着, ...查看


  • 浅谈对高中生物奥赛的认识
  • 浅谈对高中生物奥赛的认识 1.基本情况全国生物竞赛组织工作是在教育部和中国科协的领导下,由全国生物竞赛委员会具体承办.现任全国中学生物竞赛委员会主任是北京师范大学生命科学学院教授刘恩山,竞赛活动依据2001年12月颁布的联赛.竞赛章程进行, ...查看


  • 高中数理化竞赛参考书推荐
  • 高中化学竞赛参考书特别推荐 常规/高考类: <高中化学重难点手册>(华中师范大学出版社,王后雄老师主编):历年高考试题汇编(任何一种,最好有详细解析的): <高中化学读本>(很老的化学教材): <高中化学研究性 ...查看


  • 数学竞赛时间
  • 全国高中数学联赛五月初赛十月决赛 希望杯四月份 还有不同地区的竞赛如西部奥林匹克等 2015年五大学科竞赛考试时间汇总 2015-08-13 11:07 作为自主招生报考的重要条件之一的五大学科竞赛,一直备受高校.中学.考生和家长的关注.小 ...查看


  • 第十四届信息学奥赛初赛试题 普及组(P)
  • 第十四届全国青少年信息学奥林匹克联赛初赛试题 (普及组Pascal 语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一.单项选择题(共20题,每题1.5分.每题有且仅有一个正确答案.) 1.微型计算机中,控制 ...查看


  • 奥数的一些相关问题
  • [学习篇] 奥数学什么,奥数杯赛有哪些,对学习奥数的几点建议 1. 什么是奥数? "奥数"是奥林匹克数学竞赛的简称.1934年和1935年,前苏联开始在列宁格勒和莫斯科举办中学数学竞赛,并冠以数学奥林匹克的名称,1959 ...查看


  • 信息学奥赛普及组初赛模拟试题
  • 信息学奥赛普及组初赛模拟试题(一) 发布:郭琪 时间:2011/7/6 13:56:18 来源:宁夏教研网 点击: 0 77 讨论: 试题由四部分组成:1.选择题 2.问题求解题 3.程序阅读理解题 4.程序完善题 一.选择题:共20题,每 ...查看


热门内容