耀华杯程序设计竞赛C语言.docx
- 文档编号:14236822
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:21
- 大小:25.88KB
耀华杯程序设计竞赛C语言.docx
《耀华杯程序设计竞赛C语言.docx》由会员分享,可在线阅读,更多相关《耀华杯程序设计竞赛C语言.docx(21页珍藏版)》请在冰点文库上搜索。
耀华杯程序设计竞赛C语言
2007耀华杯程序设计竞赛(C语言)
一、基础知识单项选择题(每空1分,共30分)
请将正确答案按【 】中的序号涂写答题卡,否则不得分。
1.网络协议主要要素为【1】。
A)数据格式、编码、信号电平 B)数据格式、控制信息、速度匹配
C)语法、语义、同步 D)编码、控制信息、同步
2.网络接口卡的基本功能包括:
数据转换、通信服务和【2】。
A)数据传输 B)数据缓存
C)数据服务 D)数据共享
3.在星型局域网结构中,连接文件服务器与工作站的设备是【3】。
A)调制解调器 B)交换器
C)路由器 D)集线器
4.完成路径选择功能是在OSI模型的【4】。
A)物理层 B)数据链路层
C)网络层D)运输层
5.已知X=+100101,Y=-010110,用补码计算X+2Y的结果为【5】。
A)10010100B)11111001
C)00100100D)01110010
6.8086CPU能够寻址1MB内存空间的能力是由【6】决定的。
A)地址总线宽度 B)数据总线宽度
C)存储器容量D)CPU工作频率
7.在CPU和主存之间增设高速缓存(Cache)的主要目的是【7】。
A)扩大内存容量 B)提高CPU访问外存的速度
C)提高CPU访问主存的速度D)增强系统可靠性
8.SQL中,下列涉及空值的操作,不正确的是【8】。
A)AGEISNULLB)AGEISNOTNULL
C)AGE=NULLD)NOT(AGEISNULL)
9.在数据库设计中,将ER图转换成关系数据模型的过程属于【9】。
A)需求分析阶段B)逻辑设计阶段
C)概念设计阶段D)物理设计阶段
10.描述数据库中全体数据的逻辑结构和特征的是【10】。
A)内模式B)模式
C)外模式D)存储模式
11.下列哪种运算不属于关系代数的基本运算【11】。
A)连接B)笛卡尔积
C)相减D)投影
12.下列叙述中正确的是【12】。
A)线性表的逻辑顺序与物理顺序总是一致的。
B)线性表的顺序存储表示优于链式存储表示。
C)二维数组是其数组元素为线性表的线性表。
D)每种数据结构都应具备三种基本运算:
插入、删除和搜索
13.程序的三种基本控制结构的共同特点是【13】。
A)不能嵌套使用 B)只能用来写简单程序
C)已经用硬件实现 D)只有一个入口和一个出口
14.提高软件质量和可靠性的技术大致可分为两大类:
其中一类就是避开错误技术,但避开错误技术无法做到完美无缺和绝无错误,这就需要【14】。
A)消除错误 B)检测错误 C)避开错误 D)容错
15.可维护性的特性中相互促进的是【15】。
A)可理解性和可测试性 B)效率和可移植性
C)效率和可修改性 D)效率和结构好
16.软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫【16】。
A)生存期 B)面向对象设计
C)面向对象程序设计 D)面向对象分析
17.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是【17】。
A)模拟现实世界中不同事物之间的联系
B)强调模拟现实世界中的算法而不强调概念
C)使用现实世界的概念抽象地思考问题从而自然地解决问题
D)鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
18.栈和队列的共同点是【18】。
A)都是先进后出B)都是先进先出
C)只允许在端点处插入和删除元素D)没有共同点
19.为减少多媒体数据所占存储空间而采用了【19】。
A) 存储缓冲技术 B) 压缩解压技术
C) 多通道技术 D) 流水线技术
20.微软公司的Project软件属于【20】。
A) 财务软件B) 项目管理软件 C) 系统软件 D) 电子邮件软件
21.为了提高测试的效率,应该【21】。
A)随机地选取测试数据
B)取一切可能的输入数据作为测试数据
C)在完成编码以后制定软件的测试计划
D)选择发现错误可能性大的数据作为测试数据
22.IP地址中,关于C类IP地址的说法正确的是【22】。
A)可用于中型规模的网B)在一个网络中最多只能连接256台设备
C)此类IP地址用于多目的地址发送D)此类IP地址则保留为今后使用
23.TCP协议与UDP协议的共同点在于,它们都是因特网中哪种协议【23】。
A)数据链路层程序B)互联网层程序
C)传输层程序D)用户应用程序
24.上网聊天通常利用因特网提供的服务形式是【24】。
A)电子邮件服务B)电子公告牌服务
C)新闻组服务D)文件传输服务
25.统一资源定位器为 【25】。
A)主机域名B)文件名
C)协议类型D)目录名
26.下面描述正确的是【26】。
A)公钥加密比常规加密更具有安全性
B)公钥加密是一种通用机制
C)公钥加密比常规加密先进,必须用公钥加密替代常规加密
D)公钥加密的算法和公钥都是公开的
27.为保证电子信用卡卡号和密码的安全传输,目前最常用的方法是【27】。
A)SETB)CA认证C)SSLD)NTFS
28.宽带网络可以分为哪3大部分【28】。
A)传输网、混合交换网、接入网B)传输网、交换网、接入网
C)N-ISDN、B-ISDN、ISDND)个人、企业、网络
29.下列叙述中是数字签名功能的是【29】。
A)防止交易中的抵赖行为发生B)防止计算机病毒入侵
C)保证数据传输的安全性D)以上都不对
30.与传统的网络操作系统相比,Linux操作系统主要的特点有【30】。
Ⅰ.Linux操作系统限制应用程序可用内存的大小
Ⅱ.Linux操作系统具有虚拟内存的能力,可以利用硬盘来扩展内存
Ⅲ.Linux操作系统允许在同一时间内,运行多个应用程序
Ⅳ.Linux操作系统支持多用户,在同一时间内可以有多个用户使用主机 Ⅴ.Linux操作系统具有先进的网络能力,可以通过IPX协议与其他计算机连接,通过网络进行分布式处理。
Ⅵ.Linux操作系统符合Unix标准,不可以将Linux上完成的程序移植到Unix主机上运行。
A)Ⅱ、Ⅲ、ⅤB)Ⅲ、Ⅳ
C)Ⅱ、Ⅲ、ⅣD)Ⅲ、Ⅳ、Ⅳ
二、C语言单项选择题(每空1分,共20分)
请将正确选择答案按【 】中的序号涂写答题卡,否则不得分。
1.字符串“\”\\\022a,0\n”的长度是_【31】。
A)9B)8C)7D)6
提示:
使用printf("%d",strlen("\"\\\022a,0\n"));可获得结果
\”、\\、\022、\n都是一个字符
如果字符串中含有\0,则表示到此结束,且\0不计入字符串长度
要求了解字符串常量的基本概念、转义字符的规定
2.已知charc=’A’;inti=1,j;执行语句j=!
c&&i++,则i,j的值为_【32】。
A)1,1B)1,0C)2,1D)2,0
提示:
语句j=!
c&&i++;中的i++不执行,因为!
c已经决定了!
c&&i++的值
&&运算时,如果&&左边的表达式的值(0)能决定&&表达式的值,则&&右边的表达式不再计算
||运算时,如果||左边的表达式的值(非0)能决定||表达式的值,则||右边的表达式不再计算
3.设有以下语句,则c的二进制值是_【33】。
chara=4,b=5,c;
c=a^b<<3;
A)00101100B)00001000
C)00101110D)00110000
提示:
先左移,后按位异或
4.当用constintA=9;定义后,下列叙述正确的是【34】。
A)A是整型常量B)A是整型变量
C)A是字符型常量D)A是不定类型常量
5.已知下列说明,不能将x[1][1]赋给变量i的语句是_【35】。
A)i=*(*(x+1)+1)B)i=x[1][1]C)i=*x[1]+1D)i=*(x[1]+1)
提示:
x[1]是x[1][0]的地址,*x[1]是x[1][0]的值
6.说明语句“int(*p)()”的含义是_【36】。
A)p是一个指向具有4行的二维数组的指针变量
B)p是指针变量,指向一个具有4列的二维数组指针
C)p是一个指向函数的指针,该函数的返回值为整型
D)以上答案都不对
7.下面哪一项是不正确的字符串赋值或赋初值的方式_【37】。
A)char*str;str="string";
B)charstr[7]={'s','t','r','i','n','g'};
C)charstr1[10];str1="string";
D)charstr1[]="string",str2[]="12345678";
提示:
不可以往数组名中赋值
8.下列函数的功能是_【38】。
intfun1(char*x)
{char*y=x;
while(*y++);
return(y-x-1);
}
A)求字符串的长度
B)比较两个字符串的大小
C)将字符串X复制到字符串Y
D)将字符串X连接到字符串Y后面
提示:
while(*y++);是一个寻找字符串结束标记地址的过程
9.不合法的main函数命令行参数表示形式是_【39】。
A)main(inta,char*c[])B)main(intarc,char**arv)
C)main(intargc,char*argv)D)main(intargv,char*argc[])
提示:
根据规定,main函数的形参只能是两个,第一个形参必须是int型,第二个形参必须是字符型指针数组
答案A与D相同,只是形参名称不同;B与A、D形式不同、实质相同
10.设有以下宏定义:
#defineN3
#defineY(n)((N+1)*n)
则执行语句:
z=2*(N+Y(5+1));后,z的值为【40】。
A)出错B)42C)48D)54
提示:
宏定义不是函数,宏替换时不会自动加上()
本题中Y(5+1)宏替换的结果是((N+1)*5+1)((3+1)*5+1)而不是((3+1)*(5+1))
11.在下列结论中,只有一个是正确的,它是_【41】。
A)递归中的形式参数是自动变量
B)递归中的形式参数是外部变量
C)递归中的形式参数是静态变量
D)递归中的形式参数可以根据需要自己定义存储类型
提示:
形参都是自动变量、局部变量
形参与函数内部的定义的变量不同的是:
形参可以接收来自实参的值或地址,后者不可以
12.若定义enumcolor{red,green,blue,purple,yellow,black,orange}c1;,执行语句c1=green+blue;后,以下选项中c1的结果正确的是_【42】。
A)greenblueB)purpleC)yellowD)编译出错
提示:
枚举各元素的值分别是常量0、1、2……
13.若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则【43】中应填入的内容是_【43】。
int*p;
p= 【43】malloc(sizeof(int));
A)intB)int*C)(*int)D)(int*)
提示:
(类型)是类型转换运算符,int*是“int型地址”类型,*int什么都不是
14.以下程序段运行的结果是【44】。
charc[5]={'a','b','\0','c','\0'};
printf("%s",c);
A)'a''b'B)abcC)abcD)ab
提示:
如果字符串中含有\0,则表示到此结束
15.设有如下定义:
intarr[]={6,7,8,9,10};
int*ptr;
则下列程序段的输出结果为【45】。
ptr=arr;
*(ptr+2)+=2;
printf("%d,%d\n",*ptr,*(ptr+2));
A)8,10B)6,8C)7,9D)6,10
提示:
*(ptr+2)+=2;没有改变ptr的指向,改变了ptr+2地址内存储的值
16.设有以下说明和定义:
typedefunion
{longi;intk[5];charc;}DATE;
structdate
{intcat;DATEcow;doubledog;}too;
DATEmax;
则下列语句的执行结果是【46】。
printf("%d",sizeof(structdate)+sizeof(max));
A)26B)30C)18D)8
提示:
sizeof()是长度(字节数)运算符
结构体类型的长度是其各成员长度之和
共用体类型的长度是其各成员长度中最大的一个长度
本题在不同的上机平台中结果不同(int型在VC++中长度为4,在TurboC、WinTC中长度为2)
17.有以下程序,输出结果是【47】。
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",z,y,x);
}
A)30,20,10B)10,20,30C)456,567,678D)678,567,456
提示:
实参的值可以传递给形参,不可逆向传递
被调函数的值可以通过return语句传递主调函数,也不可逆向传递
如同高速公路,虽说是双向,实际上中间有隔离带,各走各道
18.有以下程序,输出结果是【48】。
#include
main()
{intj;
union{inta;
longb;
unsignedcharc;
}m;
m.b=0x12345678;
printf(“%x\n”,m.a);
}
A)1234 B)5678 C)12345678 D)0
提示:
C是在VC++6.0下运行的结果,B是在WinTC下运行的结果
VC++6.0下,int、long类型相同
共用体中,同时只有一个成员可以存储数据
19.以下程序将从终端上读入10个整数,以二进制方式写入一个名为”test.dat”,的新文件中。
请选择正确的语句。
#include
FILE*fp;
main()
{inti,j;
fp=fopen("test.dat","wb");
for(i=0;i<10;i++)
{scanf(“%d”,&j);
fwrite(【49】,sizeof(int),1,【50】);
}
fclose(fp);
}
【49】A)jB)&jC)*jD)fp
【50】A)jB)"test.dat"C)*fpD)fp
提示:
复习fwrite函数的使用(调用)方法
三、阅读下列程序,将的运行结果按【】序号写入文字答题卡,否则不得分。
(每空2分,共20分)
1.下列程序的输出结果是_【51】。
#include
main()
{inti=3,k;
k=(i++)+(i++)+i++;
printf("%d,%d\n",k,i);
}
答案:
9,6
提示:
教材上有
2.下面程序的输出是【52】。
main()
{enumen1{my,your=4,his,her=his+10};
printf(“%d,%d,%d,%d\n”,my,your,his,her);}
答案:
0,4,5,15
提示:
枚举各元素的值分别是常量0、1、2……,但也可以人为确定
3.下列程序的输出结果是_【53】。
main()
{union{unsignedcharc;unsignedinti[4];}z;
z.c='A';z.i[0]=0x39;z.i[1]=0x36;
printf("%c\t%d\n",z.c,sizeof(z));
}
答案:
916
提示:
输出z.c时,就是输出z.i[0]中的低字节39作为ASCII码对应的字符9
4.下列程序的输出结果是_【54】。
#include
intfun(intx,inty)
{staticintm=0,i=2;
i+=m+1;m=i+x+y;
returnm;
}
main()
{intj=4,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j,m);printf("%d\n",k);
}
答案:
8,17
提示:
fun函数中的staticintm=0,i=2;一句,只在fun函数第一次被调用时被执行,第二次及其以后fun函数被调用时这句被跳过,且m、i可以按前一次调用后保留的值被继续使用。
5.下面程序运行结果是【55】。
#include
main()
{intm=1,n=0;
switch(m)
{case1:
switch(n)
{case0:
printf("Itisadog.");break;
case1:
printf("Itisacat.");break;
}
case2:
printf("Nomeaning.\n");
}
}
答案:
Itisadog.Nomeaning.
提示:
break用于switch和结构化循环语句中的跳出
break只能跳出一层
6.下列程序的输出结果是_【56】。
#defineMAX3
inta[MAX];
main()
{funl();fun2(a);printf("\n");}
funl()
{intk,t=0;
for(k=0;k } fun2(intb[]) {intk; for(k=0;k } 答案: 024 提示: fun1函数的功能是将外部数组a的前MAX个元素的值分别赋值为0、2、4…… fun2函数的功能是输出b数组中前MAX个元素的值 7.下列程序的输出结果是_【57】。 #include main() { inta,b,c,l=4,m=6,n=8; int*p1=&l,*p2=&m,*p3; a=p1==&l; b=3*(-*p1)/(*p2)+7; c=*(p3=&n)=*p1*(*p2); printf("%d,%d,%d",a,b,c); } 答案: 1,5,24 8.以下程序的输出结果是【58】。 main() {inti,j,row,col,m; intarr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}}; m=arr[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(arr[i][j] {m=arr[i][j];row=i;col=j;} printf("%d,%d,%d\n",m,row,col); } 答案: -850,2,0 提示: 该程序的核心功能是求出二维数组arr内的最小元素的值、这个元素所在的行列位置 9.写出以下程序的输出结果【59】。 inta=0; fun3(intx) {staticinta=3; a=a+x; returna; } main() {intk=2,m=1; a+=fun3(k); printf("%d,",a); a+=fun3(m); printf("%d\n",a); } 答案: 5,11 提示: fun3函数中的staticinta=3;一句,只在fun3函数第一次被调用时被执行,第二次及其以后fun3函数被调用时这句被跳过,且a可以按前一次调用后保留的值被继续使用。 fun3函数中的staticinta=3;所定义的a与外部变量a重名,程序运行到fun3函数内部时,内部变量a生效、外部变量a被屏蔽 主函数中的变量a是外部变量a 10.以下程序的运行结果是【60】。 structks {inta,*b;}s[4],*p; main() {intn=1,i; for(i=0;i<4;i++) {s[i].a=n; s[i].b=&s[i].a; n+=2; } p=&s[0]; p++; printf("%d,%d\n",(++p)->a,(p++)->a); } 答案: 5,3 提示: 倒数第二行中的(++p)->a,(p++)->a看似简单,实质上与库函数printf的执行过程有关。 一般的人(包括本人等教师)、甚至是专业编程人员对此不是十分清楚,所以实际编程中尽量避免这种编程方式 四、完善程序填空题(每空2分,共16分) 请将正确答案按【 】中的序号写入文字答题卡,否则不得分。 1.打印菲波拉契数列: 1,1,2,3,5,8,13,21…… 其递推项公式为: U1=U2=1, Un=Un-1+Un-2(n为正整数,且n>=3) 完成下列程序。 #include main() {intn,i,un1,un2,un; do {printf("Inputn=? "); scanf("%d",&n); }while(n<3); un1=un2=1; 【61】; printf("%d,%d,",un1,un2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 耀华杯 程序设计 竞赛 语言
![提示](https://static.bingdoc.com/images/bang_tan.gif)