2012秋江苏省计算机二级C考试真题 |
绝密★ 启用前 2012年秋 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试 二级试卷 试卷语种:C语言 说 明: 1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共12 0分钟; 2.本试卷满分为60分,分选择题和填空题,试卷不分A、B类型; 3.计算机基础知识部分全部是选择题(20分),程序设计部分分为选择题(1 0 分)和填空题(30分)两种; 4.选择题用答题卡答题。每一项有A、B、C、D四个可供选择的答案,请选 择其中一个你认为正确的答案,用HB铅笔涂写在答题卡的相应答题号内。 每选对一项得1分,不选或选错不得分; 5.填空题用答题纸答题。请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的 相应答题号内,每个答案只占一行,不得换行。每填对一个答案得1分, 不填或填错不得分; 6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是 否填写正确。 7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。待监考人员收 毕清点后,方可离场。 第一部分 计算机基础知识 一、选择题(用答题卡答题,答案依次填在1--20题号内) 1.下列关于信息、信息技术、信息产业与信息化的叙述中。错误的是___1___ 。 A.世间一切事物都在运动,都具有一定的运行状态,因而都在产生信息 B.现代信息技术的主要特征之一是以数字技术为基础 C.信息产业特指利用信息设备进行信息处理与服务的行业,它不包括任何生产制造行业 D.信息化是一个推动人类社会从工业社会向信息社会转变的社会转型的过程 2.下列关于数字技术与微电子技术的叙述中,错误的是___2___ 。 A.数字技术的处理对象是"比特",它只有两种取值,即数字0和数字1 B.数据通信和计算机网络中传输二进制信息时,传输速率的度量单位通常为B/s、KB/s、MB/s等 C.微电子技术是实现电子电路和电子系统超小型化及微型化的技术,它以集成电路为核心 D.Intel公司创始人之一摩尔曾发表论文预测,单块集成电路的集成度平均每18~24个月翻一番 3.以下选项中,数值相等的一组数是___3___ 。 A.十进制数54020与八进制数54732 B.八进制数13657与二进制数1011110101111 C.十六进制数F429与二进制数1011010000101101 D.八进制数7324与十六进制数B93 4.下列关于台式PC机CPU的叙述中,错误的是___4___。 A.目前的PC机,CPU芯片都是直接固定在主板上的,用户不可对其进行更换 B.PC机CPU芯片有多个生产厂商,例如Intel公司、AMD公司等 C.Intel公司的Core i7/i5/i3处理器是64位多内核CPU芯片 D.目前的CPU芯片中一般都集成了一定容量的高速缓冲存储器cache 5.下列关于台式PC机主板的叙述中,错误的是___5___。 A.为了便于不同PC机主板的互换,主板的物理尺寸已经标准化,例如ATX和BTX规格 B.芯片组是主板上的重要部件,它与CPU芯片及外设同步发展 C.主板上的BIOS集成电路芯片中存储了CMOS设置程序 D.主板上的CMOS存储器是一种非易失性存储器,在任何情况下其信息均不会丢失 6.下列四种I/O总线(接口)中,数据传输方式为并行方式的是___6___ 。 A.PCI-Express B.PCI C.USB D.IEEE-1394 7.下列关于常用I/O设备的叙述中,错误的是___7___ A.鼠标器与主机的接口主要有PS/2和USB两种 B.光学分辨率是扫描仪的重要性能指标,目前普通办公用扫描仪的分辨率可达1000dpi以上 C.数码相机的成像芯片均为CCD类型,且绝大多数相机的存储卡是通用的、可互换的 D.宽屏LCD显示器是目前最常见的PC机显示器,其显示屏的宽度与高度之比为16:9或16:10 8.下列关于PC机外存储器的叙述中,错误的是___8___ A.PC机硬盘接口主要有PATA(并行ATA)和SATA(串行ATA)两种,PATA的传输速率更高些 B.目前U盘不仅能方便地保存数据,还可以模拟光驱和硬盘启动操作系统 C.固态硬盘是基于半导体存储器芯片的一种外存储设备,一般用在便携式计算机中 D.光盘可分为CD光盘、DVD光盘和蓝光光盘 9. 下列关于软件的叙述中,错误的是___9___ A.软件是用于特定用途的一整套程序、数据及相关的文档 B.共享软件是没有版权的软件。允许用户对其进行修改并散发 C.目前,Adobe Reader、360杀毒软件是有版权的免费软件 D.操作系统、程序设计语言处理蚕统、数据库管理系统均属于系统软件 10.下列关于Windows操作系统多任务处理的叙述中,正确的是___10___。 A.如果用户只启动一个应用程序工作(如使用Word写作),那么该程序就可以自始至终地独占CPU B.仅当计算机中有多个处理器或处理器为多内核处理器时,操作系统才能同时执行多个任务处理 C.无论是系统程序还是应用程序,所有运行程序(进程)获得CPU使用权的优先级相同 D.在多任务处理时,后台任务与前台任务都能得到CPU的及时响应 11.下列关于程序设计语言及其处理系统的叙述中,错误的是___11___ A.机器语言就是计算机的指令系统,机器语言程序一般为二进制代码形式 B.汇编程序是指用汇编语言编写的源程序,不同计算机的汇编程序通常是相同的 C.Microsoft Office软件(如Word、Excel等)中包含VBA程序设计语言,VBA是VB的子集 D.高级语言的语言处理系统的工作方式通常分为两种,即"解释"方式和"编译"方式 12.下列关于移动通信的叙述中,错误的是___12___ A.第1代个人移动通信采用的是模拟传输技术,从第2代开始均采用了数字传输技术 B.目前广泛使用的GSM和CDMA都是第2代移动通信 C.我国的 D.目前第4代移动通信( 13.下列关于因特网接入技术的叙述中,错误的是___13___ A.采用电话拨号接入时,需要使用电话MODEM,其主流产品的速率为56kbps B.采用ADSL接入时,数据上传速度低于数据下行速度,理想状态下数据下行速度可达8Mbps C.采用有线电视网接入时,多个终端用户均可独享连接段线路的带宽 D.目前我国许多城市采用"光纤到楼、以太网入户"的做法,用户可享受数兆乃至百兆的带宽 14.Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在Internet上的每一台主机都有一个IP地址。下面不能作为IP地址的是___14___ 。 A.201.109.39.68 B.120.34.0.18 C. D.127.0.257.1 15.现在因特网上的多数邮件系统使用___15___协议,它允许邮件正文具有丰富的排版格式,可以包含图片、声音和超链接,从而使邮件的表达能力更强,内容更丰富。 A.MIME B.SMTP C.POP3 D.HTML 16.下列关于网络信息安全的叙述中,错误的是 ___16___ 。 A.信息在网络传输过程中,会受到窃听、伪造、篡改等安全威胁 B.最简单也是最普遍的身份鉴别方法是使用口令(密码),但其安全性不高 C.数据加密是常用的网络信息安全措施.也是数字签名等安全措施的基础 D.入侵检测与防火墙一样,都是被动保护系统免受攻击的一种网络安全技术 17.下列关于字符编码标准的叙述中,错误的是___17___ 。 A.ASCII标准是美国制定的标准,也是目前使用最为广泛的西文字符编码标准 B.GB2312、GBK和GB18030都是我国制定的标准,在这些标准中所有字符均采用双字节编码 C.目前在台港澳等地区广泛使用BIG5编码标准,它与GB2312不兼容 D.UCS是ISO制定的标准,相应的工业标准称为Unicode 18.人们说话时所产生的语音信号必须数字化才能由计算机存储和处理。假设语音信号数字化时取样频率为8kHz,量化精度为8位,数据压缩比为4,那么1分钟数字语音的数据量(压缩后)大约为___18___ A.960KB B.480KB C.120KB D.60KB 19.目前数字有线电视和卫星电视所传输的数字视频采用的压缩编码标准大多是___19___ A.MPEG-1 B.MPEG 20.下列关于Microsoft Office软件(以2003/2007版本为例)功能的叙述中,错误的是___20___ A.Word编辑处理的文档可以保存为多种文件格式,例如DOC、RTF、TXT、HTML等 B.一个Excel文件不可以引用另一个Excel文件中的数据 C.PowerPoint编辑处理的文档可以另存为网页或图像文件 D.Access是一个数据库管理系统,Access数据库中 第二部分C语言程序设计 一、选择题(用答题卡答题,答案依次填在21—30答题号内,共10分) 21.以下声明中有语法错误的是____(21)___。 A.char *x="thank"; B.char x[]; C.char *x(void); D.char (*x)[2]; 22.假定a为一个一维字符数组名,则引用数组元素a[k]的正确形式为___22___。 A.a+k B.&a+k C. *(a+k) D. *a+k 23.已有声明"int x;",实现"若x的值是奇数,则输出x"这一功能的语句是___23 ___。 A.if(x/2) printf("%d”,x); B.if(x%2)printf("%d”,x); C.if(x/2==1)printf("%d”,x); D.if(x%2==0) printf("%d”,x); 24.假定一个函数的头部为"char *func(int n)",则该函数返回值的类型是 24 。 A.int B.int * C.char D.char * 25.已知fun函数的头部为"void fun(int x[],int n)",main函数中有声明"int a[10]={l},b=10;",欲 在main函数中调用fun函数,则以下调用语句中正确的是 25 。 A.fun(a,fun(a,b)); B.fun(a[10],b); C.fun(a,a[0]); D.fun(b,a); 26.已有声明"int a[3][4]={{3,4},{2,8,6}};",则数组元素a[1][0] 26 。 A.2 B 27.已有声明"int x=0,*p;",则以下赋值表达式中正确的是 27 。 A.p=x B. *p= *x C.&p=&x D.p=&x 28.已有声明"char c='\72';",则变量c包含 28 个字符. A.1 B 29.已有声明"int *p;",若用语句"p=(int *)malloc(20 *sizeof(int));"动态申请一个int型数组存储区,则P所指向的数组中可存储 22 个int型数据。 A.l0 B 30.判断char型变量cl的值是否为小写字母的正确表达式为 30 。 A.'a’<=c1<=’z’ B.cl>=a&&cl<=z C.'a'>=c1||’z’<=c1 D.cl>=’a’&&c1<=’z’ 二、填空题(将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分) .基本概念(5分) 1.已有声明"int a=-3;",则表达式"a>=0?a:-a"的值是___(1)___ 。 2.&&、+、>=是C语言中的三个运算符,其中优先级最高的是 ___ (2) ___ 。 3.假定指针变p指向对象的值为16,p+l指向对象的值为35,则 *p++的值为______(3)______ 。 4.在系统头文件中定义的符号常量NULL代表的数值(整数)是______(4)______ . 5.若需要打开一个已存在的非空文件F.txt并修改其中的部分数据,则打开文件F.txt的语句应是 "fp=fopen("F.txt",_____(5)_____);"。 . 阅读程序(13分) 6.以下程序运行时,输出到屏幕的结果是______(6)______ . #include int main() {int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0; for(i=0;i<3;i++) for(j=2;j>=i;j--) t+=b[i][j]; printf("%d\n",t); return 0; } 7.以下程序运行时,输出到屏幕的结果是___(7)___ 。 #include int main() { char *str[]={"one","two","three","four"}; puts(str[3]+1); return 0; } 8.以下程序运行时,输出到屏幕的结果是___(8)___ 。 #include int fun(int x,int y,int z) {return x*y *z;} int main() {printf("%d",fun(1.5,2.5,3.5)); return 0; } 9.以下程序运行时,输出到屏幕的结果是___(9)___ . #include int fun(char *s) { if(*s=='\0') return 0; else return 1+fun(s+1); } int main() {char str1[]=" printf("%d\n",fun(str1)); return 0; } 10.下程序运行时,输出到屏幕的结果中第一行是___(10)___,第二行是___(11)___. #include int main() {int x; char a; a=x=266; printf("%d\n%d",x,a); return 0; } 11.以下程序运行时,输出到屏幕的结果中第一行是___(12)___ ,第二行是___(13)___ 。 #include int f(int n) {int s=1; return s*=n; } int g(int n) { static int s=1; return s *=n; } int main() { int a=0,b=0,i; for(i=1;i<4;i++) { a=a+f(i); b=b+g(i); } printf("%d\n%d",a,b); return 0; } 12.以下程序运行时,输出到屏幕的结果中第一行是___(14)___ ,第二行是___(15)___ 。 #include void fun(int a[],int b[],int n) {int k,i,j; for(i=0;i {k=n; for(j=0;j if(a[i]<=a[j])k--; b[k]=a[i]; } } int main() {int i,b[6],a[6]={1,3,4,2,5,0}; fun(a,b,6); for(i=0;i<6;i++) printf((i+1)%3==0?"M\n":"M",b[i]); return 0; } 13.以下程序运行时,若输入1到变量kl、输入85到变量k2,则输出到屏幕的结果中第一行是 ___(16)___,第二行是___(17)___ ,最后一行是___(18)___ 。 #include int sieve(int x[][4],int n,int y[][4],int key1,int key2,int *p1,int *p2) { int i=0,k,m=0; while(i { if(x[i][1]==key1 && x[i][2]>=key2 && x[i][3]>=key2) {for(k=0;k<4;k++)y[m][k]=x[i][k]; m++; } i++; } *p1=*p2=0; for(i=0;i { *p1+=y[i][2]; *p2+=y[i][3]; } *p1/=m; *p2/=m; return m; } int main() { int a[6][4]={{101,1,97,90},{102,0,92,89},{103,0,88,78},{104,1,90,90}, {105,1,60,70},{106,1,93,87}},b[6][4]={0}; int count=6,k1,k2,av1,av2,i,j; printf("key1=");scanf("%d",&k1); printf("key2=");scanf("%d",&k2); count=sieve(a,count,b,k1,k2,&av1,&av2); for(i=0;i { for(j=0;j<4;j++) printf("M",b[i][j]); printf("\n"); } printf("ave1=%d,ave2=%d\n",av1,av2); return 0; } . 完善程序(12分) 14.以下程序在20000~21000范围内验证数学命题:如果一个整数的奇数位上各位数字之和与该整数的偶数位上各位数字之和的差是ll的倍数(若奇数位的各位数字之和小于或等于偶数位的各位数字之和,则对奇数位各位数字之和不断加11,直到其值大于偶数位各位数字之和为止),则这个数能被11整除. #include int fun(long m) { int odd,even; odd=even=___(19)___ ; while(m>0) { odd=odd+m; even=even+___(20)___ ; m=m/100; } while( ___(21)___ ) { odd=odd+11; } if((odd-even)==0)return 1; else return 0; } int main() {long k,n=20000,m=21000,j=0; for(k=n;k<=m;k++) {if(___(22)___) if(k==0) { if(j++==0) putchar('\n'); printf("%ld ",k); } else printf("error"); } return 0; } 15.以下程序的功能是反转一个字符串中单词的顺序。例如,将字符串"there is no try"中单词顺序反转后变为"try no is there"。假定以空格作为单词分隔符。 #include #include #include void reverseWords(char str1[],char str2[]) { int tokenPos,wReadPos,wEnd,writePos; writePos=0; /* tokenPos记录向前扫描(从串尾到串首扫描)strl字符串时当前被判断字符的下标 */ tokenPos=___(23)___ ; while(tokenPos>=0) { if(strl[tokenPos]==' ') { str2[writePos++]=str1[tokenPos--]; /*复制单词之间的空格 */ } else { wEnd=tokenPos; /*wEnd记录strl字符串中被处理单词的尾字符下标 */ while(tokenPos>=0 && str1[tokenPos]!=' ') /*向前扫描到空格为止+, tokenPos--; /*wReadPos记录str1字符串中被处理单词的首字符下标 */ wReadPos= ___(24)___ ; while(wReadPos<=wEnd) str2[writePos++]=str1[wReadPos++]; } } str2[writePos]=___(25)___; /*在str2数组中置字符串的终止符*/ } int main() { char *sentence="there is no try", *reverse; reverse=(char *)malloc(strlen( ___(26)___ )+1); printf("%s\n",sentence); reverseWords(sentence,reverse); printf("%s\n",reverse); free(reverse); return 0; } 16.已知一个单向链表结点的数据结构定义如下: typedef struct point {int x; struct point *next; }POT; 函数creat的功能是:找出p指向的单向链表中数据值只出现一次的结点,将这些结点依次复 制链接到q链表,函数返回q链表首结点的地址. POT *creat(POT *p) {POT *q=NULL,*qr, *p0, *p1, *p2; int c; p0=___(27)___; / *p0指向p链表首结点 */ while(p0!=NULL) { c=0; p1=p; / *p1指向p链表首结点*/ while(p1!=NULL)/ *依次将p1指向的每个结点中的数据与p0指向的结点中的数据做比较*/, { if(p1->x==p0->x) c++; p1=___(28)___; } if(c==1) { /*将p0指向的结点中数据复制到p2指向的结点,将p2指向的结点链入q链表*/ p2=(POT *)malloc(sizeof(POT)); p2->x=p0->x; if(q==NULL) q=qr=___(29)___ ; else{ qr->next=p2;qr=p2; } } p0=p0->next; } qr->next=___(30)___ ; return q; } 二级C参考答案 一、选择题 (1)C (2)B (3)B (4)A (5)D (6)B (7)C (8)A (9)B (10)D 21.B 22.C 23.B 24.D 25.C 26.A 27.D 28.A 29.B 30.D 二、填空题 (1)3 (2)+ (3)16 (4)0 (5)r+(6)8 (7)our (8)6 (9)5 (10)266 (11)10 (12)6 (13)9 (14)0 1 2 (15)3 4 5(16)101 1 97 90 (17)104 1 90 90 (18)ave1=93,ave2=89 (19)0 (20)m/10(21)odd<=even (22)fun(k) (23)strlen(str1)-1 (24)tokenPos+1 (25)'\0'(26)sentence (27)p (28)p1->next (29)p2 (30)0 |