2018年10月江苏省计算机二级C语言真题第1套 |
1. 下列PC使用的CPU系列产品中,不属于Intel公司的是_______. A. Celeron系列 B. Pentium系列 C. Core系列 D. FX系列 D 解析:Intel公司推出的CPU,包括入门级的Celeron系列,高于Celeron的Pentium系列,性能比较高的Core系列。 2 2. 扫描仪是目前常用的图像输入设备。下列相关叙述中,错误的是______。 A. 手持式扫描只适用于—行—行地扫描文字稿 B. 目前平板式扫描仪在家庭和办公自动化领域得到了广泛应用 C. 滚筒式扫描仪的技术性能较高,大多数应用于专业印刷排版领域 D. 扫描仪均可以选择黑白、灰度或彩色工作模式,但不可以设置灰度级数或色彩的位数 D 解析: 扫描仪可以选择黑白、灰度或彩色工作模式,也可以设置灰度级数或色彩的位数 。 2 3. 在音频信号的数字化过程中,人的说话声音频带较窄(仅为300~3400Hz),通常语音的取样频率为8kHz、量化位数为8位,这时未压缩的码率大约为____。 A. 8kb/s B. 64kb/s C. 300kb/s D. 1411kb/s B 解析:根据公式 波形声音的码率=取样频率*量化位数*声道数 。 5 4. 下列有关智能手机常用操作系统的叙述中,错误的是_____. A. iPone手机使用由苹果公司开发的iOS操作系统,其系统内核是—种“类Unix"系统 B. Android是—个以Linux内核为基础的开放源代码的操作系统,早先由Android公司开发 C. 我国内地销售的Android智能手机,—般都使用Android所附带的用户界面和应用程序(即GMS) D. iOS和Android属于两种不同的操作系统,其平台上的应用程序也不相同,不能相互通用 C 解析: 我国内地销售的Android智能手机,—般不使用Android所附带的用户界面和应用程序(即GMS) 。 2 5. 字符集及其编码是计算机中表示、存储、处理和交换文本信息的基础。下列有关汉字编码标准的叙述中,错误的是______。 A. 我国1981年颁布的GB2312标准仅包含6000多个汉字和600多个非汉字图形字符 B. 我国1995年发布的GBK,标准与GB2312标准兼容,且将汉字扩充到20000多个 C. 我国在2000年和2005年两次发布GB18030编码标准,它与原先的国家标准GBK兼容 D. 无论是ISO组织制定的UCS、还是一些公司联合制定的Unicode,其汉字部分均与GB 18030兼容 D 解析: GB18030是我国颁布的,也是当前包含的汉字是最多的, UCS是国际标准化组织发布的,与其等同的是由微软等公司共同制定的工业标准Unicode, GB18030与Unicode两者的汉字编码有很大区别 。 5 6. 程序设计语言处理系统是一种重要的系统软件。下列相关的叙述中,错误的是____。 A. 机器语言也需要语言处理系统,其作用是将程序代码转换成二进制指令代码 B. 不同的程序设计语言需要有不同的语言处理系统,它们通常是不通用的 C. 解释程序通常适合于交互方式工作的、或在调试状态下运行的程序 D. 编译程序的作用是将高级语言翻译为机器语言(或汇编语言) A 解析: 机器语言就是二进制指令代码, ,所以不需要语言处理系统 。 3 7. 下列关于常见辅助存储器的叙述中,错误的是_______。 A. 通常—块硬盘由1张或几张盘片组成,其数据需要用柱面号、扇区号和磁头号等参数来定位 B. U盘又称为优盘、闪存盘,其写入速度—般慢于读出速度,且写入次数有—定的限制 C. 目前有些PC使用混合硬盘(SSD+HDD)的做法,以提高系统的整体性能 D. 光盘分为只读盘片、—次可写盘片和可擦写盘片,CD-R、DVD-R和BD-R均为只读盘片 D 解析: CD-R, DVD-R和BD-R是只写入一次光盘片,CD-ROM,DVD-ROM,BD-ROM是只读型光盘片。 2 8. 下列有关智能手机及其功能的叙述中,错误的是_____。 A. 从第2代移动通信开始,所有的手机均可以上互联网,因此均被称为智能手机 B. 所谓”双卡双待”手机,是指手机同时可以安装两张SIM卡,且两张卡均可处于待机状态 C. 全网通手机可以接入国内三大运营商的所有4G、3G和2G网络,支持多种不同的网络制式 D. 国内三大运营商采用的4G技术并不相同,移动采用TD-LTE,电信和联通采用LTE-FDD A 解析: 第一代通信技术采用模拟技术,第二代通信技术采用数字技术,第三代通信技术3G,第4代通信技术称为4G, 按照手机的功能划分为笨手机、功能手机、智能手机,其中智能手机是指可以像PC个人电脑一样安装第3方软件,不断扩充其功能,而功能手机一般不能随意安装和卸载软件,第二代手机属于功能手机,不属于智能机。 2 9. 下列有关PC主板及其中的功能部件的叙述中,错误的是____。 A. 目前许多扩充卡的功能可以部分或全部集成在主板上,因而从外观上看主板的结构越来越简化 B. 主板上的BIOS芯片是一种闪速存储器,PC启动时最先运行BIOS中的软件 C. 主板上的CMOS存储器是—种非易失性存储器,其中存储的配置信息永不丢失 D. 主板上的芯片组早期是由两片集成电路构成的,目前大多为单芯片的芯片组 C 解析: CMOS属于易失性存储器,需要由主板上的电池供电 。 2 10. 通俗地说,算法就是解决问题的方法和步骤。在设计算法时有一些基本要求,下列相关叙述中错误的是_____。 A. 每个算法至少有—个输入,输出有且仅有—个 B. 算法中的每—步操作必须有确切的含义,不能有二义性 C. 一个算法总是在执行了有限步的操作后终止 D. 算法中有待实现的操作都应该是计算机可执行的 A 解析: 算法的基本要素:确定性、有穷性、能行性、输出,算法可以没有输入,但必须有输出。 3
1(单选题): 若有预处理命令“#include<string. h>"和声明“char sl[80]=”world cup”,s2[80]=”2018”;”,则以下库函数调用中错误的是________。 A. strlen(s1); B. strcpy(s1,s2); C. strcat(s1,s2); D. strcmp(s1[0],s2[0]); D 解析: A选项返回s1内存空间中字符个数9,B选项将s2中内存空间的值拷贝给s1内存空间,C选项表示将s2内存空间的值放到s1内存空间原有数值第1个结束标志符\0的后面,题目中s1内存空间形成world cup2018,D选项错误,strcmp(表达式1,表达式2)的作用是比较表达式1指向的内存空间中的字符串与表达式2指向的内存空间中的字符串是否相等,因为strcmp要求表达式必须是内存编号,而s1[0]返回的是w,s2[0]返回的是2,不是内存编号,如果修改为strcmp(s1,s2)就对了,因为在C语言中,只写数组的名字表示该数组的起始内存编号;strlen,strcpy,strcat,strcmp都要求参数是内存编号, 因文字解析不如视频清晰,详细见视频详细讲解。 7 己有声明“double a=1.23456;int i;”,现要求使变量a中实数的十进制表示经过四舍五入处理后仅保留2位小数(即将a值变为1.23000),以下表达式中能实现该功能的是_______。 A. i=a*100+0.5,a=i/100.0 B. a = (a*100+0.5)/100.0 C. a=((int)a*100+0.5)/100.0 D. a=(a/100+0.5)/100.0 A 解析:因为i是整型,所以i=a*100+0.5得到i=123.456+0.5,得到i=123,然后执行a=i/100.0后得到1.23000,注意这里的i/100.0不能写成i/100,因为i是整型,100是整型,整型除以整型得到整型,所以i/100的结果是1而不是1.23 ,写100.0才表示双精度型,所以i/100.0才正确,另外C选项首先执行(int)a得到1,然后(1*100+0.5)/100.0得到结果1.005000 。 4 以下声明中正确的是______。 A. int a[]; B. int a[10]=0; C. int a[10+1]={0}; D. int a[3l={1,2,3,4}; C 解析:声明数组时,数组大小必须是常量,A选项错误,修改为 int a[]={1,2,3};这类格式就对了;B选项错误,给int,double,float类型初始化数组赋值时,不能直接不加{}就赋值,修改为int a[10]; 或者int a[10]={1,2};这类格式就对了;D选项错误, int a[3]大小是3块内存空间,而{1,2,3,4}有4个值了。 7 若有声明“int a=l,x=3,y=4:”,则下列语句中除_______外,其他三条语句功能均相同。 A. if(a) printf("%d ",x); else printf("%d",y); B. if(a == 0) printf("%d",y); else printf("%d”,x); C. if(a! =0) printf("%d",x); else printf('%d",y); D. if(a==0) printf("%d",x); else printf(“%d”,y); D 解析:在C语言中,0表示假值,非0表示真值,因为a=1,所以ABC选项直接输出x值。 5 若有声明“int a[4],j;”及语句“for(j=0;j<4;j++) p[j]=a+j;”,则标识符p应声明为_______。 A. int p[4]; B. int (*p)[4]; C. int **p[4]; D. int *p[4]; D 解析:A选项是指普通数组,声明可以盛放4个int型数值的内存空间区;B选项是指向一维数组的指针变量;C选项是二级指针数组,里面盛放的是一级指针的内存编号;D选项是指针数组, 声明可以盛放4个int型内存编号的内存空间区, 因文字解析不如视频清晰,详细见视频详细讲解 。 10 6(填空题 <3空> ) : 以下程序运行时输出结果中第一行是____________ ,第二行是____________ ,第三行是____________ 。 #include<stdio.h> void change(int x, int m) { char ch[]={"0123456789ABCDEF"},b[80]; int i=0,r; while(x) { r=x%m; x/=m; b[i++]=ch[r]; } for(--i;i>=0;i--) printf("%c",b[i]); } int main() { change(10,2); printf("\n"); change(20,8); printf("\n"); change(30,16); return 0; } 1010@24@1E 7 (填空题 <2空> ) : 以下程序运行时输出结果中第一行是____________ ,第二行是____________ 。 #include<stdio.h> int func(int a) { static int c=1; c*=a; return c; } int main() { int b=1, i; for(i=2;i<4;i++) { b=b+func(i); printf("%d\n",b); } return 0; } 3@9 8(填空题 <2空> ) : 以下程序运行时输出结果中第一行是____________ ,第二行是____________ 。 #include<stdio.h> int f(int a,int b); int main( ) { printf("%d\n%d",f(3,5), f(9,6)); return 0; } int f(int a,int b) { if(a==b) return a; else if(a>b) return f(a-b,b); else return f(a,b-a); } 1@3 9 (填空题 <3空> ) : 以下程序运行时输出结果中第一行是____________ ,第二行是____________ ,第三行是____________ 。 #include<stdio.h> int main( ) { int a[3][3]={0},i,j,k,n=3; j=n/2; i=n-1; a[i][j]=1; for(k=2;k<=n*n;k++) { i++;j++; if(i>n-1&&j>n-1) { i=i-2; j--; } else { if(i>n-1) i=0; if(j>n-1) j=0; } if(a[i][j]==0) a[i][j]=k; else { i=i-2; j--; a[i][j]=k; } } printf("%d\n%d\n%d ",a[2][1], a[0][2], a[1][1]); return 0; } 1@2@5 1(完善程序): 完善程序(共12分,每空3分) 【要求】 1.打开T盘中文件myf0.c,按以下程序功能完善文件中的程序。 2.修改后的源程序仍保存在T盘myf0.c文件中,请勿改变myf0.c的文件名。 【程序功能】 函数f的功能是计算并返回F(x)值,其中x不等于0。 计算F(x)中的无穷级数时,当通项(-1)nx2n/(2n)!的绝对值小于等于10-6时停止累加。 【测试数据与运行结果】 测试数据:x = 1 输出:f(1.000000)=1.278868 【待完善的源程序】 #include<stdio.h> #include<conio.h> #include<math.h> double f(double x) { int n=1,sign=-1; double term= 【1】 ,sum=term; while( 【2】 >1e-6) { term=term*sign*x*x/ 【3】 ; sum=sum+term; n++; } sum=3.14159/2-cos(x)/x* 【4】 ; return sum; } int main() { double x=1; printf("f(%f)=%f\n",x,f(x)); getch(); return 0; } 1@fabs(term)@((2*n-1)*(2*n))@sum (1)1 (2)fabs(term) (3)((2*n-1)*(2*n)) (4)sum 2(改错题): 改错(共16分,每错4分) 【要求】 1.打开T盘中文件myf1.c,按以下程序功能改正文件中程序的错误。 2.可以修改语句中的一部分内容,调整语句次序,增加变量声明或预处理命令,但不能增加其他语句,也不能删去整条语句。 3.修改后的源程序仍保存在T盘myf1.c文件中,请勿改变myf1.c的文件名。 【程序功能】 在一个一维数组中存储的N个互不相同的整数中找出最小值和最大值,将最小值移到第一个数之前,将最大值移到最后一个数之后,其他数保持相对位置不变。 【测试数据与运行结果】 测试数据:8,5,6,9,4,1,-1,7,3,2 输出:-1,8,5,6,4,1,7,3,2,9 【含有错误的源程序】 #include <stdio.h> #include<conio.h> #define N 10 void crl(int *a) { int i,j,max=0,min=0,temp; for(i=1;i<N;i++) if(a[min]>a[i]) min=i; temp=a[min]; j=min; while(j<0) { a[j]=a[j-1]; j--; } a[0]=temp; for(i=1;i<N;i++) if(a[max]<a[i]) max=i; temp=a[max]; j=max; while(j<N-1) { a[j]=a[j-1]; j++; } a[N-1]=temp; } int main() { int a[N]={8,5,6,9,4,1,-1,7,3,2}; int i; crl(int a); for(i=0;i<N;i++) printf("%5d",*a+i); printf("\n"); getch(); return 0; } while(j<0) 修改为 while(j>0)@ a[j]=a[j-1]; 修改为 a[j]=a[j+1];@ crl(int a); 修改为 crl(a);@ printf("%5d",*a+i); 修改为 printf("%5d",*(a+i)); (1) while(j<0) 修改为 while(j>0) (2) a[j]=a[j-1]; 修改为 a[j]=a[j+1]; (3) crl(int a); 修改为 crl(a); (4) printf("%5d",*a+i); 修改为 printf("%5d",*(a+i)); 3(编程题): 编程(共22分) 【要求】 1.打开T盘中文件myf2.c,在其中输入所编写的程序。 2.数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。 3.请勿改变myf2.c的文件名。 【程序功能】 在一个字符串中所有数字子串前插入指定字符。例如,原字符串为"AB1CD12EF123GH",在所有数字字符子串前插入一个指定字符'-'后字符串变为"AB-1CD-12EF-123GH"。 【编程要求】 1.编写void insert(char *p)函数。函数功能:在p指向的字符串中所有数字字符子串前插入一个字符‘-’。 2.编写main函数。函数功能:声明1个一维数组并用测试数据初始化,用数组作实参调用insert函数对数组中字符串做处理,将处理后的字符串输出到显示器屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。 【测试数据与运行结果】 测试数据:"AB1CD12EF123GH" 输出:AB-1CD-12EF-123GH #include <stdio.h> void insert(char *p) { char *t,*q; int judge=0; q=p; while(*p) { if(*p>='0' && *p<='9' && judge==0) { while(*q) q++; for(t=p;t<q;q--) { *q=*(q-1); } *t='-'; judge=1; } if(*p>='A' && *p<='Z' || *p>='a' && *p<='z') { judge=0; } p++; } } int main() { FILE *fp; char c[100]={"AB1CD12EF123GH"}; insert(c); fp=fopen("myf2.out","w+"); printf("%s",c); fprintf(fp,"%s\n",c); fprintf(fp,"My Exam is 001122"); fclose(fp); }
|