江苏二级C春考试试题.docx
《江苏二级C春考试试题.docx》由会员分享,可在线阅读,更多相关《江苏二级C春考试试题.docx(17页珍藏版)》请在冰豆网上搜索。
江苏二级C春考试试题
2013年春江苏省二级C语言考试
第一部份计算机基础知识
一、选择题(用答题卡答题,答案依次填在1-20题号内)
1、下列有关信息、信息技术、信息产业与信息化的叙述中,错误的是___
(1)_____。
A信息是人们认识世界、改造世界的一种基本资源,没有信息则任何事物都没有意义
B.雷达、卫星遥感等感测与识别技术不属于现代信息技术
C.进入21世纪以来,信息产业已经成为全球第一大产业
D.目前我国正处于工业化的中期阶段,因此必须走适合我国国情的信息化道路,既要充分发挥工业化对信息化的基础和推动作用,又要使信息化成为带动工业化升级的强大动力
2、下列有关数字技术和微电子技术的叙述中,错误的是____
(2)______。
A.数字技术处理对象是“比特”,一个触发器可以存储2个比特
B.在数据通信时,远距离传输或者无线传输时需要用比特对载波进行调制
C.现代集成电路使用的半导体材料主要是硅
D.我国第2代居民身份证中使用了非接触式IC芯片
3、对二进制数01与01分别进行算术加和逻辑加,其结果的二进制形式分别是__(3)___。
A.01、10B.01、01C.10、01D、10、10
4、下列有关PC机CPU的叙述中,错误的是_____(4)____。
A.目前的PC机芯片主频越来越高,主流CPU芯片的主频已达8GHz以上
B.AMD公司也是重要的PC机CPU生产厂商,其CPU芯片与Intel保持指令系统兼容
C.日前Intel公司生Corei7是一种高端CPU芯片,它有4个或6个内核
D.为了提高CPU性能,日前主流CPU芯片都采用了流水线处理技术和超线程技术
5、下列关于台式PC机芯片组的叙述中,错误的是_____(5)____。
A.芯片组是主板上最为重要的部件之一,存储器控制、I/O控制等功能主要是由芯片组实现
B.芯片组与CPU同步发展,有什么样功能和速度的CPU,就需要使用什么样的芯片组
C.芯片组决定了主板上能安装的内存最大容量及可使用的内存条类型
D.同CPU一样,用户可以很方便、很简单地更换主板上的芯片组
6、下列四种I/O总线(接口)标准中,数据传输速率最高的是___(6)_____。
A.PS/2
B.USB3.0
C.IEEE-1394
D.SATA
7、下列关于常用I/O设备的叙述中,错误的是____(7)_____。
A.目前平板电脑、智能手机的触摸屏大多为“多点触摸屏”,可以同时感知屏幕上的多个触控点
B.扫描仪可以分为手持式、平板式和滚筒式等类型,目前普通家用/办公用扫描仪大多为滚筒式
C.目前一些型号数码相机已具备有拍摄视频和进行录音的功能
D.为了降低成本,目前许多PC机采用集成显卡,其显示控制被集成在芯片组中
8、下列关于PC机外存储器的叙述中,错误的是____(8)______。
A.目前PC机采用的硬盘,其盘片的直径通常为3.5英寸、2.5英寸或1.8英寸
B.U盘和存储卡都是采用闪烁存储器制作的,目前其容量大多为几GB至几十GB
C.目前固态硬盘的存储容量大多为数百GB,但其读写速度远不如传统硬盘(硬磁盘)
D.蓝光光盘是目前最先进的大容量光盘,单层盘片的存储容量可达25GB
9、下列关于软件的叙述中,正确的是___(9)_____。
A.BIOS是是固化在主板ROM芯片中的程序,它既不属于系统软件,也不属于应用软件
B.MicrosoftAccess等数据库管理系统属于应用软件
C.大多数自由软件为免费软件,但免费软件不全是自由软件
D.所有商品软件均保证百分之百正确,软件厂商对软件使用的正确性、精确性、可靠性做出承诺
10、下列有关Windows操作系统功能的叙述中,错误的是_____(10)_____。
A.对于多任务处理,系统一般采用按时间片轮转的策略进行处理调度
B.系统采用了虚拟存储技术进行存储管理,其页面调度算法为“最近最少使用(LRU)”算法
C.系统支持了多种文件系统(如FAT32、NTFS、CDFS)以管理不同的外存储器
D.系统支持任何I/O设备的“即插即用”和“热插拔”
11、下列关于程序设计语言的叙述中,错误的是____(11)____。
A.虽机器语言不易记忆、机器语言程序难以阅读和理解,但目前还是有很多人使用其编写程序
B.汇编程序与计算机的指令系统密切相关,不同类型的计算机,其汇编语言通常不同
C.VBScript语言是VB子集,用其编写的程序可以嵌入在HTML文档中以扩充网页的功能
D.Java语言是一种适用于网络环境的程序设计语言,目前许多手机软件就是用Java编写
12、下列关于通信技术的叙述中,错误的是____(12)____。
A.调制与解调技术主要用于模拟通信,在数字通信中不需要使用调制与解调技术
B.使用多路复用技术的主要目的是提高传输线路的利用率,降低通信成本
C.在数据通信中采用分组交换技术,可以动态分配信道资源,提高传输的效率与质量
D.数据通信网络大多采用分组交换技术,但不同类型的网络的数据包格式通常不同
13、下列是我国第2代和第3代移动通信采用的一些技术标准,其中我国自主研发的是___(13)____。
A.GSM
B.TD-SCDMA
C.CDMA2000
D.WCDMA
14、下列因特网接入技术的叙述中,理论上数据传输速率最高的是___(14)____。
A.ADSL接入
B.无线局域网(WLAN)接入
C.GPRS移动电话网接入
D.3G移动电话网接入
15、Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在Internet上每一台主机都有一个IP地址,目前使用的是IPv4标准(32位地址),下一代互联网将采用IPv6标准,其IP地址为___(15)____。
A.48位B.64位C.96位D.128位
16、下列关于网络信息安全与计算机病毒防范的叙述中,错误的是____(16)_____。
A.网络信息安全不仅需要相关技术的支持,更要注重管理
B.目前WindowsXP等操作系统内置软件防火墙,在一定程度上可以保护本地计算机免受攻击
C.“木马”病毒是一种后门程序(远程监控程序),黑客常用它来盗窃用户账号、密码和关键数据
D.目前所有防病毒软件均为商品软件,例如金山毒霸、360杀毒软件等均需要用户会费才能使用
17、下列关于字符编码标准的叙述中,错误的是____(17)_______。
A.在ASCII标准中,每个字符采用7位二进制编码
B.在绝大多数情况下,GB2312字符集包含的1万多个个汉字足够足够使用
C.Unicode字符集既包含简体汉字,也包含了繁体汉字
D.中文版WindowsXP及其后的Windows系列操作系统均支持国标GB18030
18、由于采用的压缩编码方式及数据组织方式的不同,图像文件形成了多种不同的文件格式,在下列四种图像文件中,常用于网页上发布并可具有动画效果的是___(18)___。
A.BMPB.JPEGC.GIFD.TIF
19、下列四种声音文件中,不可能用于保存歌曲的是___(19)____。
A.WAVB.MP3C.MIDID.WMA
20、下列关于MicrosoftOffice软件(2003/2007版本为例)功能的叙述中,错误的是__(20)__。
A.Word、Excel、PowerPoint文件均不可能设置打开文件的密码
B.Word文档中设置为标题样式的内容可以直接导入到PowerPoint演示文稿中
C.可以将Access表数据直接导入到Excel工作表中
D.PowerPoint制作幻灯片时,可以在幻灯片中直接插入“Excel工作表”对象
第二部份C语言程序设计
一、选择题(用答题卡答题,答案依次填在21~30答题号内,共10分)
21、以下选项中,不能将字母A的编码保存到变量ch的声明是____(21)_____。
A.charch="A";B.charch='A';C.charch='\101';D.charch=65;
22、以下关于while语句和do-while语句的描述中,错误的是______(22)_______。
A.while语句和do-while语句都可以使一段程序重复执行多遍
B.while语句和do-while语句都包含了控制循环的表达式
C.while语句和do-while语句都包含了循环体
D.while语句和do-while语句的循环体至少都会执行一次
23、已有声明“inta=3,b=4,c=5,d=0;”,则执行语句“printf("%d",d=a>b?
(a>c?
a:
b):
(b>c?
b:
c));”时输出___(23)____。
A.3B.4C.5D.0
24、已有声明“inta;charb;”,执行语句“scanf("%d%c",&a,&b);”时,若要求将整数2输入到变量a,将字符u输入到变量b,则以下输入形式中正确的是__(24)___。
A.2uB.2uC.2,uD.2'u'
25、已有声明“chars[]="Hello",i;”,以下语句中,与for(i=0;s[i];i++)putchar(s[i]);的执行效果相同的是__(25)__。
A.putchar(s)B.printf("%c",*s);C.printf("%s",s);D.printf("Hello");
26.已有声明“inta[4]={2,0,1,2},*pa=a,i;”,以下语句语法错误的是_______(26)_____。
A.for(i=0;i<4;i++)a++;B.for(i=0;i<4;i++)(*a)++;
C.for(i=0;i<4;i++)pa++;D.for(i=0;i<4;i++)(*pa)++;
27.已有fun函数定义:
voidfun(intx[],intn)
{while(n>0)x[--n]++;}
若main函数中已声明“inta[6]={0};”,则以下main函数调用fun函数的语句中,正确的是___(27)_____。
A.fun(a);B.fun(a,a);C.fun(a,1);D.fun(1,a);
28.已知main函数中有声明“inta=3,b=4;”,若在main函数中通过执行语句“swap(&a,&b);”交换a、b变量的值,则swap函数定义中正确的是___(28)________。
A.voidswap(intx,inty){intt;t=x;x=y;y=t;}
B.voidswap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}
C.voidswap(int*x,int*y){int*p;p=x;x=y;y=p;}
D.voidswap(int*x,int*y){int*p;p=*x;*x=*y;*y=p;}
29.已有声明“chars1[4],*s2="character";”,能实现“将s2指向的字符串中最后3个字符组成的子串复制到s1数组”功能的语句是___(29)____。
A.s1=s2+strlen(s2)-3;B.s[10]=s2[strlen(s2)-3];
C.strcpy(s1[0],s2[strlen(s2)-3]);D.strcpy(s1,s2+strlen(s2)-3);
30.已知数据类型定义及数组声明如下:
structperson
{charname[20];
intage;
}p[10]={"John",18,"Mary",17,"Paul",19};
以下语句中,能输出字符串"John"的是______(30)_____。
A.printf("%s",p.name[0]);B.printf("%s",p.name);
C.printf("%s",p[0].name);D.printf("%s",p[0].name[0]);
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分)
●基本概念
1、已有声明“charc=255;”,执行语句“c++;”后变量c的值是______
(1)___。
2、若要在C程序中以十六进制形式表达十进制数35,表示形式是_______
(2)___。
3、表示数学式“04、已知f函数的定义是“intf(doublex){returnx+1;}”,若main函数中有声明“doubley=f(3.7);”,则变量y的初值为___(4)___。
5、用系统库函数fprintf写到磁盘文件中的数据通常应当有系统库函数_______(5)___读出。
●阅读程序(13分)
6、以下程序运行时,输出到屏幕的结果中第一行是__(6)__,第二行是__(7)__。
#include
#defineA(x)x/2
intB(intx)
{returnx/2;}
intmain()
{printf("%d\n%d",A(7+3),B(7+3));
return0;
}
7.以下程序运行时,输出到屏幕的结果中第一行是__(8)__,第二行是__(9)__。
#include
voidfun(int*x,inty)
{x++,y++;
*x=y;
}
intmain()
{inta[2]={0};
fun(a,a[0]);
printf("%d\n%d",a[0],a[1]);
return0;
}
8.以下程序运行时,输出到屏幕的结果中第一行是__(10)__,第二行是__(11)__。
#include
intmain()
{inti,m=1,n=1;
for(i=2;i<9;i++)
{n=n+m;
m=n-m;
if(i%3==0)putchar('\n');
printf("%4d",n);
}
return0;
}
9.以下程序运行时,输出到屏幕的结果是_____(12)____。
#include
intfun(inta,intb)
{intc;
if(b<1)c=0;
else
if(b==1)c=a*a;
elsec=fun(a,b-1)+a*a;
returnc;
}
intmain()
{inta=5,b=4;
printf("%d\n",fun(a,b));
return0;
}
10.以下程序运行时,输出到屏幕的结果是_____(13)____。
#include
voidfun(charstr[])
{inti,j;
for(i=j=0;str[i];i++)
if(str[i]>='a'&&str[i]<='z')
str[j++]=str[i];
str[j]='\0';
}
intmain()
{charss[80]="VeryGood!
";
fun(ss);printf("%s\n",ss);
return0;
}
11.以下程序运行时,输出到屏幕的结果中第一行是__(14)_。
#include
intmain()
{intc[4]={2,1,3,4},p,q,t,i;
p=c[3],q=1;
for(i=2;i>=0;i--)
{t=c[i]*p+q;
q=p;
p=t;
}
printf("%d\n%d\n",p,q);
return0;
}
12.以下程序运行时,输出到屏幕的结果中第三行是__(15)___,第四行是__(16)___。
#include
#defineN10
voidsetdata(ints[][N],intn);
intmain()
{inti,j,y[N][N],n=5;
setdata(y,n);
for(i=0;i{for(j=0;j<=i;j++)
printf("%d\t",y[i][j]);
printf("\n");
}
return0;
}
voidsetdata(ints[][N],intn)
{inti,j;
for(i=0;i{s[i][i]=1;s[i][0]=1;}
for(i=2;ifor(j=1;j
s[i][j]=s[i-1][j-1]+s[i-1][j];
}
13、以下程序运行时,输出到屏幕的结果中第一行是__(17)___,第二行是__(18)___。
#include
intmain()
{char*s[]={"Apple","Pear","Banana","Orange",0},*p;
inti,j,n;
for(n=0;s[n];n++);
j=n-1;
for(i=0;ip=s[i],s[i]=s[j],s[j]=p;
for(i=0;ireturn0;
}
●完善程序(12分)
14.以下程序输出3-3000000范围内的全部梅森素数,并统计输出梅森素数的个数。
梅森数是指值为2p-1的正整数(记为Mp),其中指数p是素数。
若Mp是素数,则称Mp为梅森素数。
例如,7=23-1,3和7均是素数,因此7是梅森素数。
#include
intprime(longn)/*判断n是否是素数*/
{longi;
for(__(19)___;iif(n%i==0)return0;
return1;
}
intisMersenneprime(longn)
{longm=n,k=0;
while(m)
{if(m%2==0)return0;
__(20)___;
k++;
}
if(__(21)___&&prime(n))return1;
elsereturn0;
}
intmain()
{longn,k=0,M=3000000;
for(n=3;n{if(isMersenneprime(n))
{printf("%ld\n",n);
__(22)___;
}
}
printf("%ld-%ld:
%ld\n",3L,M,k);
return0;
}
15.以下程序的功能是统计并输出在一个字符串中某个字符子串的出现次数,记录并输出子串在该字符串中每一次出现的起始下标。
#include
#include
intcount(char*str,char*substr,intc[])
{inti,j,k,num=0;
for(i=0;str[i]!
='\0';i++)
{j=i;k=0;
while(substr[k]!
='\0'&&__(23)___)/*判断str指向的字符串中是否出现str1指向的子串*/
k++,j++;
if(substr[k]=='\0')
{c[num++]=__(24)___;/*记录子串在字符串中出现的起始下标*/
i=i+strlen(substr)-1;
}
}
return__(25)___;
}
intmain()
{charstr[80],substr[80];
inti,num=0,c[80];
gets(str);gets(substr);
num=count(__(26)___);
if(num)
{printf("%d\n",num);
for(i=0;iprintf("%d",c[i]);
}
else
printf("%sisnotsubstring!
\n",substr);
return0;
}
16、约瑟夫问题:
n个人围成一圈,从第一个人开始顺序报数,从1报到m,报到m的人出列;从出列的下一个人开始重新报数,报到m的人又出列;如此重复直到所有人出列为止。
最后出列的人是谁?
structnode*create(intn)函数创建具有n个结点的单向循环链表,并将1~n(代表n个人的编号)顺序保存到每个结点的num成员中,函数返回新建链表首结点的地址。
单向循环链表是指尾结点指向首结点的单向链表。
voidDel(structnode*head,intn,intm)函数模拟约瑟夫问题报数的过程,输出依次出列的所有人的编号,其中形参n表示有n个人参加报数,形参m表示报数的终值。
例如,当n=10、m=3时表示有10个人参加报数,报到3的人出列,因此应输出“36927185104”
#include
#include
structnode{intnum;structnode*next;};
structnode*create(intn)
{inti;
structnode*p,*head=NULL,*rear;
for(i=0;i{p=(structnode*)malloc(sizeof(structnode));
p->num=i+1;
if(head==NULL)
{head=__(27)___;
rear=p;
}
else
{__(28)___=p;
rear=p;
}
}
rear->next=head;/*使尾结点指向首结点*/
returnhead;
}
voidDel(structnode*head,intn,intm)
{inti,j;structnode*p,*q=head,*front=head;
while(q->next!
=head)q=q->next;
for(j=0;j{for(i=1;i{q=front;
front=__(29)___;
}
printf("%d\t",front->