![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2015年10月江苏省计算机二级C真实考卷 |
2015年10月江苏省高校计算机等级考试 二级C真实考卷 第一部分 计算机基础知识 下列有关数字技术与微电子技术的叙述中,错误的是______ A.数字技术是采用有限个状态(主要是两个状态)来表示、处理、存储和传输信息的技术 B.比特是信息的基本单位,1个比特可以表示8位二进制数 C.集成电路芯片是微电子技术的结晶,是现代信息产业的基础 D.Moore定律是指"单块集成电路的集成度平均每18-24个月翻一番" B 解析: 比特是信息的基本单位,1个比特可以表示1位二进制数 1 下列有关计算机发展与分类的叙述中,错误的是______。 A.数字电子计算机诞生于20世纪40年代,个人计算机(微型计算机)产生于20世纪80年代初 B.第4代计算机的CPU主要采用中小规模集成电路,第5代计算机采用超大规模集成电路 C.计算机分类有多种方法,按其内部逻辑结构通常分为16位机、32位机或64位机等,目前使用的PC机大多是32位机或64位机 D.巨型计算机一般采用大规模并行处理的体系结构,我国国防科技大学研制的"天河1号,巨型计算机,其性能可在全球巨型机排行榜中位居前10名 B 解析:计算机的发展一共4代,第4代计算机的CPU主要采用超大规模与极大规模集成电路 2 下列有关PC机微处理器的叙述中,错误的是_________ A.目前PC机所用的各种微处理器均由Intel公司设计和生产 B.微处理器通常由单片集成电路制成 C.一台高性能PC机中通常包含多个微处理器 D.台式PC机与笔记本PC机采用的微处理器通常有所不同公司 A 解析:目前PC机所使用的各种微处理器主要是由Intel与AMD公司设计和生产的,我们国家也能生产CPU 2 下列是PC机常用的四种外设接口,其中适用于连接硬盘和光驱的是______ A.RS-232 B.SATA C.IEEE-1394 D.VGA B 解析:VGA是连接显示器接口,IEEE-1394用于连接高速数据传输设备 2 按照软件著作权益的处置方式,软件可以分为商品软件、共享软件、自由软件等类型。在下列相关叙述中,错误的是_________。 A.商品软件需要用户付费才能得到其使用权 B.共享软件是具有版权的软件,允许用户有条件的使用 C.自由软件允许使用者随意拷贝、传播,允许修改其源代码但必须公开修改内容 D.共享软件、自由软件均属于免费软件 D 解析:共享软件是买前免费试用,不属于免费软件,自由软件属于免费软件 3 因特网中的IP地址可以分为A类、B类、C类、D类等。在下列4个IP地址中,属于C类地址的是_________ 。 A.28.129.200.19 B.88.129.200.19 C.188.129.200.19 D.222.129.200.19 D 解析:A类IP地址首个数字的范围是0—127, B类IP地址首个数字范围是128-191,C类IP地址首个数字范围是192—223范围内, 4 通常所说的TCP/IP协议,是指由100多个协议组成的协议系列(包含下列几个协议)。在下列协议中,发送电子邮件主要依赖______. A.HTTP协议 B.FTP协议 C.Telnet协议 D.SMTP协议 D 解析:HTTP是上网时所用的协议,FTP是文件传输时使用的协议,Telnet是远程登录协议 4 下列有关采用ADSL技术接入因特网的叙述中,错误的是_________ A.计算机中需要安装(集成)以太网网卡 B.需要使用专用的ADSL MODEM设备 C.上行与下行传输速率相同,传输速率可达100Mbps D.可传送数据、音频、视频等信息 C 解析:ADSL上行与下行传输速率不相同,上行传输速率小于下行传输速率 4 下列有关汉字字符集及其编码的叙述中,错误的是_________ A.GB2312是我国颁布的第一个汉字编码国家标准,该标准包含了6000多个汉字 B.GB2312的所有字符在计算机内都采用2个字节来表示 C.GBK收录了包括繁体字在内的20000多个汉字和符号,它向下兼容GB2312 D.GB18030是我国最新颁布的汉字编码标准,它与GB2312和GBK均不兼容 D 解析: GB18030是我国最新颁布的汉字编码标准,它与GB2312和GBK均保持兼容 5 语音在数字化时常用的取样频率为8kHz、量化位数为8bits。若声道数为2,则每分钟的数字语音数据量在未压缩时大约为_________ A.64KB B.128KB C.1MB D.2MB C 解析:8Khz*8b*2*60=8000b*8b*2*60=8000*960b/8=8000*120B=960 000B大约为1MB 5 第二部分 C程序设计 一、选择题(用答题卡答题,答案依次填在21-30答题号内) 已有声明”int x,a=3,b=2;”,则执行赋值语句”x=a>b++?a++:b++;”后,变量x、a、b的值分别为______ 。 A.3 4 3 B.3 3 4 C.3 3 3 D.4 3 4 A 解析:根据运算符规则,首先执行b++,因为++在b之后,所以首先返回b的值2,然后b自增1变为3,即a>2返回真值,所以执行a++,同样++在后边,首先返回a的值3,然后a自增1变为4,即x=3,所以x,a,b的值分别是3,4,3 5 已有声明"int a,b,k;",以下语句中与"if(a>b) k=0; else k=1;"等价的是_________。 A.k=a<=b; B.k=a C.k=a>b; D.k=(a>b)?1:0; A 解析:题目中if语句作用是a>b条件成立时给k赋值0,不成立执行给k赋值1,与选项A符合 5 已有结构定义和声明如下: A. *p->str++与(*p)->str++等价 B.(p++)->len与p++->len不等价 C.++p->len使p增1 D.++p->len使p指向的结构变量中成员len增1 D 解析:根据运算符的优先级,->的优先级高于++,++的优先级高于*, 所以首先执行->然后执行++,所以A选项错误。B选项是等价的。 11 已有声明“int i; char c, s[20];”,现要求从输入序列“123, b45efg”中将123看作十进制整数字符串转换为int整型数据后读入变量i,将'b'读入变量c、将"45efg"读入数组s,正确的scanf语句应为_______。 A.scanf("%d,%c%s",i,c,s); B.scanf("%d,%c%s",&i,&c,s); C.scanf("%d%c%s",&i,&c,s); D.scanf("%d%c%c%s",&i,&c,s); B 解析: A选项错误,用scanf获取值时,变量必须以地址的形式,i,c要修改为&i,&c。C选项没有在%d与%c之间加,号,这样导致将符号,赋值给变量c了。D选项中格式符与变量不匹配,s是地址,却对应了%c。 5 以下函数的功能是__________。 A.求字符串s和字符串t的长度差 B. 按ASCII编码值比较字符串s和字符串t C. 连接字符串s和字符t D. 将字符串s复制到字符串t中 B 解析:for循环的作用比较*s是否等于*t,如果相等就执行下一次循环,否则for循环停止,具体见视频详细解析 10 C填空题 以下程序运行时,输出结果中第一行是_________,第二行是_________。 dcbaef@dcbfea 解析:具体见视频详细解析 10 以下程序运行时,输出结果中第一行是_________,第二行是_________。 *#@#*# 解析:具体见视频详细解析 6 以下程序运行时,输出结果中第一行是_________,第二行是_________。 6@2 解析:具体见视频详细解析 7 以下程序运行时,输出结果中第一行是_________,第二行是_________。 ABCDE@AB 解析:具体见视频详细解析 10 以下程序运行时,输出结果中第一行是__________,第二行是__________。 Mongland@Korea 解析:具体见视频详细解析 7 C操作题 一、(完善程序): 【要求】 1. 打开T盘中的文件myf0.c,按以下程序功能完善文件中的程序。 2. 修改后的源程序仍保存在T盘myf0.c文件中,请勿改变myf0.c的文件名。 【程序功能】 某人有5张1块,3张2块和4张3块的游戏币,求解使用这些游戏币能组合出多少种不同面值的游戏活动。 【运行结果】 24 kinds: 0,3,6,9,12,2,5,8,11,14,4,7,10,13,16,15,18,1,17,19,20,21,22,23, 【待完善的源程序】 #include #include int getZuhe( (1) ) { int i,j,k,m,s,n=0; for (i=0;i<6;i++) for (j=0;j<4;j++) for (k=0;k<5; k++) { s= (2) ; for (m=0;m if(s==a[m]) break; if( (3) ) a[n++]=s; } return n; } int main() { int k, kind; int a[120]={0}; kind=getZuhe(a); printf("\n%d kinds:",kind); for (k=0; (4) ;k++) printf("%d,", a[k]); getch(); return 0; } int a[]@i+2*j+k*3或i*1+j*2+k*3@m==n或m>=n@k 解析: (1) int a[] (2) i+2*j+k*3 (3) m==n或m>=n (4) k 具体见视频详细解析 二、(改错题): 【要求】 1. 打开T盘中的文件myf1.c,按以下程序功能改正文件中程序的错误。 2. 可以修改语句中的一部分内容,调整语句次序,增加变量声明或预处理命令,但不能增加其他语句,也不能删去整条语句。 3. 修改后的源程序仍保存在T盘myf1.c中,请勿改变myf1.c的文件名。 【程序功能】 函数int fun(int num[],int n,char res[][50])的功能是对num指向的数组中n个整数中的每个整数r寻找满足等式“xyz+yzz=r”的x、y、z(x、y、z分别代表一位十进制数字)。如果找到一组x, y, z使得等式成立则生成一个等式字符串存储到res数组的一行中,如果未找到就将“not found for”字符串存入res数组的一行中,函数返回num数组中满足上述等式的整数个数。 函数void itostr(int n,char *s)的功能是将整数n转换为一个十进制表示的字符串存入s指向的数组中。 【测试数据与运行结果】 测试数据: 762, 145, 678 输出: found 2 equations for 3 nums 251+511=762 not found for 145 334+344=678 【含有错误的源程序】 #include #include #include int main() { int fun(int num[],int n,char res[][50]); int num[3]={762,145,678}; char res[10][50],ct,i; ct=fun(num,3,res); printf("found %d equations for %d nums\n",ct,3); for(i=0;i<3;i++) puts(res); getch(); return 0; } void itostr(int n,char *s) { int i=0,j; char ch; while(n>10) { s[i++]=n+'0'; n=n/10; } s[i]='\0'; j=0,i--; while(j { ch=s[i]; s[i]=s[j]; s[j]=ch; i--,j++; } } int fun(int num[],int n,char res[][50]) { int x,y,z,i,j,k,f,ct=0; char tmp[50]; for(k=0;k { for (f=0,i=100;i<=999;i++) { y=i/10; z=i; if (i+100*y+10*z+z=num[k]) { itostr(i, tmp); strcpy(res[k],tmp); strcat(res[k],"+"); itostr(100*y+10*z+z,tmp); strcat(res[k],tmp); strcat(res[k],"="); itostr(num[k],tmp); strcat(res[k],tmp); f=1; ct++; break; } } if(!f) { strcpy(res[k],"not found for "); itostr(num[k],tmp); strcat(res[k],tmp); } } return ct; } puts(res[i])@i+100*y+10*z+z==num[k]@n>0@y=i/10; 解析: (1) puts(res[i]) (2) i+100*y+10*z+z==num[k] (3) n>0 (4) y= i/10; 具体见视频详细解析 三、(编程题): 【要求】 1. 打开T盘中的文件myf2.c,在其中输入所编写的程序。 2. 数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3. 请勿改变myf2.c的文件名。 【程序功能】 计算一个歌唱比赛参赛选手的得分。 假设有N个裁判给一个参赛选手打分(分值在0到10之间)。选手得分计算方法为:去掉一个最高分和一个次高分,再去掉一个最低分和一个次低分,所剩分数的平均分作为该参赛选手的最后得分。 【编程要求】 1. 编写函数double getscore(double *score) 。函数形参score指向的数组中存放N个裁判给一个参赛选手的打分。函数功能是依据score数组中的分数按上述方法计算一个参赛选手的最后得分,并作为函数返回值返回。 2. 编写main函数。函数功能是声明数组score并用测试数据初始化,用score数组作为实参调用getscore函数计算数组score中参赛选手的最后得分,将score数组中数据及该选手的最后得分输出到屏幕及文件myf2.out中。最后将考生本人准考证号输出到文件myf2.out中。 【测试数据与运行结果】 测试数据: 9.47 9.56 9.96 10.00 9.75 9.78 9.95 9.86 9.82 9.18 输出: 9.47 9.56 9.96 10.00 9.75 9.78 9.95 9.86 9.82 9.18 last score = 9.79 #include #include #define N 10 double getscore(double *score) { int i; double num,sum=0,max=score[0],min=score[0],max2=-1,min2=11; for(i=0;i { if(score[i]>max) max=score[i]; if(score[i] } for(i=0;i { if(score[i]>max2&&score[i] if(score[i] } num=i-4; for(i=0;i { sum=sum+score[i]; } sum=sum-max-max2-min-min2; return sum/num; //返回参赛选手的最后得分 } int main() { int i; double score[20]={9.47,9.56,9.96,10.00,9.75,9.78,9.95,9.86,9.82,9.18},average; FILE *fp; if((fp=fopen("myf2.out","w"))==NULL) { printf("\nCan't open the file!"); exit (0);} average=getscore(score); printf("\n测试数据:\n"),fprintf(fp,"\n测试数据:\n"); for(i=0;score[i]!='\0';i++) printf("%6.2lf",score[i]),fprintf(fp,"%6.2lf",score[i]); printf("\n"),fprintf(fp,"\n"); printf("last score=%4.2lf\n",average),fprintf(fp,"last score=%4.2lf\n",average); printf("\nMy number is:001122\n"),fprintf(fp,"\nMy number is:001122\n"); fclose(fp); return 0; } |