第二十届全国青少年信息学奥林匹克竞赛初赛提高组C语言试题(附答案)Word下载.docx
- 文档编号:14770361
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:7
- 大小:20.60KB
第二十届全国青少年信息学奥林匹克竞赛初赛提高组C语言试题(附答案)Word下载.docx
《第二十届全国青少年信息学奥林匹克竞赛初赛提高组C语言试题(附答案)Word下载.docx》由会员分享,可在线阅读,更多相关《第二十届全国青少年信息学奥林匹克竞赛初赛提高组C语言试题(附答案)Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
A.5.625B.5.5C.6.125D.7.625
10.若有变量inta,floatx,y,且a=7,x=2.5,y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值大约是().
A.2.500000B.2.750000C.3.500000D.0.000000
11.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个续结点。
structnode{datanextdatanextdatanext
intdata;
structnode*next;
↑p↑q↑r
}*p,*q,*r;
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是().
A.q->
next=r->
next;
p->
next=r;
r->
next=q;
B.p->
next=r;
q->
C.q->
D.r->
12.同时查找2n个数中的最大值和最小值,最少比较次数为().
A.3(n-2)/2B.4n-2C.3n-2D.2n-2
13.设G是有6个结点的完全图,要得到一颗生成树,需要从G中删去()条边.
A.6B.9C.10D.15
14.以下时间复杂度不是O(n2)的排序方法是().
A.插入排序B.归并排序C.冒泡排序D.选择排序
15.以下程序实现了找第二小元素的算法。
输入时n个不等的数构成的数组S,输出S中第二小的数SecondMin。
在最坏的情况下,该算法需要做()次比较。
if(S[1]<
S[2]){
FirstMin=S[1];
SecondMin=S[2];
}else{
FirstMin=S[2];
SecondMin=S[1];
}
for(i=3;
i<
=n;
i++)
if(S[1]<
SecondMin)
if(S[1]<
FirstMin){
SecondMin=FirstMin;
FirstMin=S[1];
}else{
SecondMin=S[1];
}
A.2nB.n-1C.2n-3D.2n-2
二、不定项选择题(每题1.5分,共7.5分)。
1.若逻辑变量A、C为真,B、D为假,以下逻辑运算表达式真的有().
A.(B∨C∨D)∨D∧AB.((-A∧B)∨C)∧B
C.(A∧B)∨(C∧D∨-A)D.A∧(D∨-C)∧B
2.下列()软件属于操作系统软件。
A.MicrosoftWord
B.WindowsXP
C.Android
D.MacOSX
E.Oracle
3.在NOI比赛中,对于程序设计题,选手提交的答案不得包含下列哪些内容().
A.试图访问网络
B.打开或创建题目规定的输入/输出文件之外的其他文件
C.运行其他程序
D.改变文件系统的访问权限
E.读写文件系统的管理信息
4.以下哪些结构可以用来存储图().
A.邻接矩阵B.栈C.邻接表D.二叉树
5.下列各无符号十进制整数中,能用八位二进制表示的数有().
A.296B.133C.256D.199
三、问题求解。
1.有数字1,1,2,4,8,8所组成的不同的四位数的个数是_____.
2.如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是_____.
四、阅读程序写结果(共4题,每题8分,共32分)。
1.#include<
stdio.h>
intmain(){
inta,b,I,tot,c1,c2;
scanf(“%d%d”,&
a,&
d);
tot=0;
for(i=a;
i<
=b;
{
c1=i/10;
c2=i%10;
if((c1+c2)%3==0)
tot++;
Printf(“%d\n"
tot);
Return0;
输入:
731
输出:
_________
2.#include<
Intfun(intn,intminNum,intmaxNum)
{inttot,i;
if(n==0)
retuen1;
tot=0;
for(i=minNum;
=maxNum;
tot+=fun(n-1,i=1,maxNum);
returntot;
intmian()
{intn,m;
Scanf(“%d%d”,&
n,&
m);
printf(“%d\n”,fum(m,1,n));
return0;
63
________
#include<
string.h>
constintSIZE=100;
constintLENGTH=25;
//strcmp(a,b)<
0:
a的字典序小于b
//strcmp(a,b)=1:
a和b一样
//strcmp(a,b)>
a的字典序大于b
intmain()
chardict[SIZE][LENGTH+1];
intrank[SIZE];
intind[SIZE];
inti,j,n,tmp;
scanf(“%d”,&
n);
for(i=1;
i<
i++)
{rank[i]=i
ind[i]=i;
scanf(“%s”,dict[i]);
for(i=1;
n;
for(j=1;
j<
=n-i;
j++)
if(strcmp(dict[ind[j]],dict[ind[j+1]])>
0)
{tmp=ind[j];
ind[j]=ind[j+1];
ind[j+1]=tmp;
rank[ind[i]]=i;
for(i=1:
ptintf(%d”,rank[i]);
printf(“\n”);
7
aaa
aba
bbb
ccc
aa
______
#niclude<
intalive[SIZE];
intn;
intnext(intnum)
{do{
num++;
if(num>
n)
num=1;
}while(alive[num]==0);
returnnum;
{intm,i,j,num;
scanf(“%d%d”,&
alive[i]=1;
{for(j+1;
=m;
num=next(num);
printf(“%d”,num);
alive[num]=0;
if(i<
}printf(\n);
113
_________
五、完善程序
1.(双栈模拟数组) 只使用两个栈结构stack1和stack2,模拟对数组的随机读取。
作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。
栈顶指针top1和top2均指向栈顶元素的下一个位置。
输入第一行包含的两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。
第二行包含n个整数,一次歌出数组各项(数组下标从0到a-1)。
第三行包含m个整数,需要访问的数组下标。
对于每次访问,输出对应的数组元素。
consrintSIZE=100;
intstack1[SIZE],stack2[SIZE];
inttop1,top2;
intn,m,i,j;
voidclearStack()
{intI;
for(i=top1;
SIZE;
stack[i]=0;
for(i=top2;
scanf(%d,%d”,&
for(i=0i<
stack1[i]);
top1=_____
(1)______;
top2=_______
(2)____;
for(j=0j<
m;
{
i);
whi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二十 全国青少年 信息学 奥林匹克 竞赛 初赛 提高 语言 试题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)