![全国计算机等级考试二级c语言试题分析_第1页](http://file4.renrendoc.com/view10/M02/2C/03/wKhkGWV3QveAdP09AAIWKAv11VA847.jpg)
![全国计算机等级考试二级c语言试题分析_第2页](http://file4.renrendoc.com/view10/M02/2C/03/wKhkGWV3QveAdP09AAIWKAv11VA8472.jpg)
![全国计算机等级考试二级c语言试题分析_第3页](http://file4.renrendoc.com/view10/M02/2C/03/wKhkGWV3QveAdP09AAIWKAv11VA8473.jpg)
![全国计算机等级考试二级c语言试题分析_第4页](http://file4.renrendoc.com/view10/M02/2C/03/wKhkGWV3QveAdP09AAIWKAv11VA8474.jpg)
![全国计算机等级考试二级c语言试题分析_第5页](http://file4.renrendoc.com/view10/M02/2C/03/wKhkGWV3QveAdP09AAIWKAv11VA8475.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试〔二级c语言〕试卷分析一、选择题(每题140小题,共40分)前面的10道题涉及计算机根底学问〔程等方面学问〕,在这里就不针对计算机根底学问局部进展分析。11.在C语言程序中,main函数必需放在其他函数的最前面每个后缀为CC语言源程序都可以单独进展编译在C语言程序中,只有main函数才可单独进展编译每个后缀为.C的C语言源程序都应当包含一个main函数【解析】BC语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C的C语言源程序都可以单独进展编译;C语言程序中,不管包含多少个后缀为.Cmain函数,而且main函数在程序中可以放在任何其他函数之前或之后。语言中的标识符分为关键字、预定义标识符和用户标识符,以下表达正确的选项是()。预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义用户标识符可以由字母和数字任意挨次组成在标识符中大写字母和小写字母被认为是一样的字符关键字可用做用户标识符,但失去原有含义【解析】A。用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。13.99B。当用指数形式表示浮点数据时,E后都要有数据,并且E的后面数要为整数;整型常量:0123表示八进制整型常量,0xab表示十六进制整型常量,123为十进制整型常量,123L表示长整型常量,123U表示无符号整型常量,123UL表示无符号长整型A没有这种常量,假设加上双引号是可以表示字符串常量。语言主要是借助以下哪个功能来实现程序模块化?()A.定义函数 B.定义常量和外部变量C.三种根本构造语句 D.丰富的数据类型【解析】A。C语言是由函数组成的,函数是C语言的根本单位。所以可以说C语言主要是借助定义函数来实现程序模块化。以下表达中错误的选项是()。非零的数值型常量有正值和负值的区分常量是在程序运行过程中值不能被转变的量定义符号常量必需用类型名来设定常量的类型用符号名表示的常量叫符号常量【解析】C。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必需先定义,其一般形式为:#define标识符常量。假设有定义和语句:intab;scanf(“%d,%d“&a&b);项中的输人数据,不能把值3赋给变量a、5赋给变量b,5, ,5,45 ,5【解析】C。在输入3和5之间除逗号外不能有其他字符。答案BA是可以的,缘由是用scanf函数输入时,从左往右对应给值,右边多余的值不输入进去。语言中char类型数据占字节数为()。【解析】C。在标准C〔ANSI-C〕char类型数据占1个字节。A.(3+4)>6 B.(3!=4)>2<=4‖3 D.(3<4)=1B。在一个表达式中,括号的优先级高,先计算3!=4真即是l1>2为假。假设以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是()。(a+9)}a*b}(a+b)case0:case4:y=a-b;}(a*a+b*b){default:break;case2:y=a-b;break;}D。选项A,switch语句中要求case后面必需是常量,不能是变量;选项Ba*bCcase与后面的数字用空格隔开。留意switch语句语句完毕的方式:一是见到break执行到}自然完毕。有以下程序:#includemain{inta=-2,b=0;while(a++&&++b);printf(“%d,%d\n“,a,b);}程序运行后的输出结果是()。,3 ,2 ,3 ,2【解析】D。while循环第一次完毕后a,b取值为:-11;其次次完毕后ab02;第三次没有执行循环体〔空语句〕,了一下a++是否为真,因a0,所以a++a1,所以a的值变成1&&运算符的第一个表达式为假时,其次个表达式不计算,所以++b不执行,故b的值还是2。所以,最终a,b的值为1,2。设有定义:x=0=x; B.*p=x; =NULL;D.*p=NULL;【解析】C。对于指针变量p,假设没有把p指向一个指定的值,则说明指针变量p内的值是NULL,即空值,也就是说没有存放任何存储空间的地址,所以*p是不能被赋值的。定义指针变量不赋初始值时默认为NULL以下表达中正确的选项是()。可以用关系运算符比较字符串的大小空字符串不占用内存,其内存空间大小是0两个连续的单引号是合法的字符常量两个连续的双引号是合法的字符串常量【解析】D。比较两个字符串大小用函数strcomp(s,t)系运算符比较字符串的大小;空字符串有完毕符〔\0〕,所以也要占用1字节;两个连续的单引号是不合法,单引号中间必需有一个字符〔一般字符或转义字符〕;两个连续的双引号表示的是空字符串。有以下程序:#includemain{rhara=’H’;a=(a>=’A’&&a<=’2’)?(a-’A’+’a’):a;printf(“%c\n“,a);}程序运行后的输出结果是()。【解析】D。多元运算符问号前面表达式为真,所以(a-’A’+’a’)赋值给a,括号里的运算是把大写字母变成小写字母,所以答案应为选D。有以下程序:#includeintf(intx);main{inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar(’A’ +b);}}intf(intx){returnx*xl;}程序运行后的输出结果是()。B。第一次循环时,b=1B;其次次循环时,b=3,输出结果为D;第三次循环时,b=8,输出结果为I。设有定义:intx[2][3];,则以下关于二维数组X的表达错误的选项是[0]可看做是由3个整型元素组成的一维数组[0]x[l]是数组名,分别代表不同的地址常量C.X包含6个元素D.可以用语句x[0]=0;为数组全部元素赋初值0【解析】D。对于二维数组来说,数组的名字x是一个二级指针常量;第一维表示行地址,比方:x[0]表示第一行的地址,而且是个地址〔一级指针〕常量,所以x[0]是不能赋值的。设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于()。=““; =“0“; =0; =“;【解析】C。在C语言中NULL等价于整数0。有以下程序:#include <>main,40},*p=a,j;for(i=0;i<=3;i++){a[i]=*p;p++;}printf(“%d\n“,a[2]);}程序运行后的输出结果是()。【解析】A。for循环中第一次循环时,a[0]=*p,由于有p=a;当于a[0]=*a;依据一维数组的定式:a[i]=*(a+i),说明每次循环是将数组的当前元素赋值给自己,后面每次循环依此类推。所以,for循环完毕后,数组a的值并没有变化,由于数组下标是由0开头,所以a[2]的值是30有以下程序:#include<>#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<N;i++){b[i]=a[i][0];for(j=0;j<N;j++)if(a[i][j]>b[i]) b[i]=a[i][j];}}main{intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d,”,y[i]);}程序运行后的输出结果是()。,4,8, ,6,9,,5,7, ,3,5,B。fun函数功能是把数组a的每一行的最大值赋给ba的第一行的最大值是3,其次行的最大值是6,第三行的最大值是9,所以答案是369。有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):#include<>#include<>mainb[10]=“012“,c[10]=“xyz“;strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是()。【解析】C。第一次执行字符串的复制函数后,字符串a中的值是a2a字符串变成了a2yz再输出,所以运行结果为a2yz。此题最主要的是了解字符串名加一个整型常量所代表的字符串是什么,比方:有chara[10]=“abc“;定义,则字符串aabc;而字符串a+1的值是bca+2的值是c;字符串b+3的值是\0,即不空串。以下选项中,合法的是()。str3[]={’d’,’e’,’b’,’u’,’g’,’\0’};str4;str4=“helloworld“;name[10];name=“china“;A。选项B不能把一个字符串赋值给一个字符变量str4选项C和D犯了同样的错误是把字符串赋给了数组名,数组名是一个指针常量,常量是不能被赋值的。有以下程序:#include<>main{char*s=“[2]34“;intk=0 while(s[k+1]!=’\0’){k++;if(k%2==0){a=a+(s[k]- a=a+(s[k]-’0’);printf(“k=%da=%d\n“ ,k,a);}程序运行后的输出结果是()。=6a=11 =3a=14=4a=12 =5a=15C。输出结果:k=1a=2k=2a=4k=3a=7k=4a=12有以下程序:#include<>main{chara[5][10]={“one“ ,“two“,“three“,“four“,“five“};chart:for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是()。【解析】Afor循环完成的功能是把二维数组a的第一列的字母按从小到大排序,其他列的字母不变。排序方法是类冒泡排序。有以下程序:#include<>inta=1,b=2;voidfunl(inta,intb){printf(“%d%d“,a,b);}voidfun2{a=3;b=4;}main{funl(5,6);fun2;printf(“%d%d\n“,a,b);}程序运行后的输出结果是()。256634612456【解析】B。funl是输出局部变量的值,fun2是把全局变量的值改34,所以输出的结果是5634。当全局变量与局部变量同名时,在重叠的作用域中,局部变量起作用〔可怜原则,即谁的作用域小谁就在重叠的作用域中起作用〕有以下程序:#includevoidfunc(intn){staticintnum=1;num=num+n;printf(“%d“ }main{func(3);func(4);printf(“\n“);}程序运行后的输出结果是()。8 4 5 5【解析】A。第一调用func函数时输出4,其次次调用func函数时num的值并不会释放,仍旧是上次〔第一次调用func函数时〕修改后的4,其次次调用结果为8,所以输出结果是48。此题考的是静态局部变量的作用域与生存期〔存放在静态存储区〕不一致的状况,第一次调用完后,静态局部变量num的值为4,存放到静态存储区,函数func执行完毕,其作用域消逝,但存放在静态存储区的num变量的值4但仍旧不能拿出来用,只能等下次再进入作用域时,即第二次调用函数func时,又进入静态局部变量num的作用域,此时,变量num又可以拿出来使用,由于已经存在静态存储区,所以不用重定义该变量,可以直接从静态存储区取出变量num的值〔4〕来使用,所以其次次调用后,num的值变成了8。有以下程序:#include<>#include<>voidfun(int*pl,int*p2,int*s){s=(int*)malloc(sizeof(int));*s=*pl+*p2;free(s);}main{inta=1,b=40,*q=&a;fun(&a,&b,q);printf(“%d\n“,*q);}程序运行后的输出结果是()。C。fun函数功能是开拓内存空间〔地址s〕ab的值〔&a、&b将地址复制给p1p2〕,q的地址并没有变化,所以应当还是指向地址a。有以下程序:#include<>structSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={“Zhao“ ,’m’,85,90);a[1]=b;}mainSTUc[2]={{“Qian“,’f’,95,92},{“Sun“,’m’98,99}};f(c);c[o].score[1]);c[1].score[1]);}程序运行后的输出结果是()。,m,85,90,Sun,m,98,99,m,85,90,Qian,f,95,92,f,95,92,Sun,m,98,99,f,95,92,Zhao,m,85,90【解析】D。f函数是为构造体数组的其次个元素〔构造体类型的元素〕赋值,数组的第一个元素没有变化,所以正确答案应选D。以下表达中错误的选项是()。A.typedef说明的类型名来定义变量说明的类型名必需使用大写字母,否则会出编译错误C.typedef可以为根本数据类型说明一个名称D.typedef说明类型的作用是用一个的标识符来代表已存在的类型名【解析】Btypedef是用来定义类型,或定义原有类型的别名〔名称〕typedef说明的类型不是必需用大写,而是习惯上用大写。以下表达中错误的选项是()。函数的返回值类型不能是构造体类型,只能是简洁类型函数可以返回指向构造体变量的指针可以通过指向构造体变量的指针访问所指构造体变量的任何成员只要类型一样,构造体变量之间可以整体赋值A。函数返回值类型可以是简洁类型和构造体类型。假设有定义语句intb=2;,则表达式(b<<2)/(3‖b)B。2的二进制数为010,移两位后的二进制数为01000转成十制数为8,(3||2)为真即18/1=88。有以下程序:#include<>main{FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen(““,“w+“);for=(i=0;i<6;i++)fpintf(fp ,“%d\n“,a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp ,“%d“,&a[5-i]);fclose(fp);for(i=0;i%6;i++)printf(“%d ,“,a[i]);}程序运行后的输出结果是()。,5,6,1,2,3,,2,3,3,2,1,,2,3,4,5,6,,5,4,3,2,1,D。这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为654321。二、根本操作题(共18分)str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。str=“abcl23de45f967“,结果为:l234567留意:局部源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填入所编写的假设干表达式或语句。试题程序:#include<>#defineM80intbb[M];intproc(charstr[],intbb[],intnum){inti,n=0;if(【1】){bb[n]=2】;n++;}}return 【3】;}voidmain{charstr[M];intnum=0,n,i;printf(“Enterastring :\n“);gets(str);while(str[num]) n=proc(str,bb,num);printf(“\nbb=“);for(i=0;i<n;i++)printf(“%d“ ,bb[i]);}1】str[i]>=’0’&&str[i]<=’9’【2】str[i]-’O’3】n【解析】题目中要求把字符串str中的数字字符转换成数字并存放到整型数组bb中。首先,应推断字符串str中每个字符是否是数字字符。因此,【1】处填“str[i]>=’0’&&str[i]<=’9’”将每一个数字字符转化为数字放在整型数组bb2“str[i]-’0’;由函数proc可知,变量n中存放整型数组bb中的元素个数,最终要返回到主函数当中,因此,【3n’三、程序改错题(共24分)以下给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的全部字符按ASCIl码升序排序后输出。例如,输入opdyedeopy请修改程序中的错误,使它能得到正确结果。main函数,不得增行或删行,也不得更改程序的构造。试题程序:#include<>#include<>#include//****found****intproc(charstr[]){charc;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j++)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=c;}}voidmain{charstr[81];system(“CLS“);printf(“\nPleaseenteracharacterstring :“);gets(str);printf(“\nk
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023八年级历史上册 第五单元 从国共合作到国共对立第17课 中国工农红军长征说课稿 新人教版
- 3 欢欢喜喜庆国庆(说课稿)-2024-2025学年统编版道德与法治二年级上册
- Module 3 Unit 1 What are you doing?(说课稿)-2024-2025学年外研版(三起)英语四年级上册
- 11《赵州桥》说课稿-2023-2024学年统编版语文三年级下册
- 1学会尊重(说课稿)-2023-2024学年道德与法治六年级下册统编版001
- Unit 3 Festivals and Customs Extended reading 说课稿-2024-2025学年高中英语译林版(2020)必修第二册
- 2023九年级物理下册 专题六 材料、信息和能源B 能源学说课稿 (新版)新人教版
- 2023二年级数学下册 六 田园小卫士-万以内的加减法(二)我学会了吗说课稿 青岛版六三制
- 2024-2025学年高中化学 专题五 电化学问题研究 5.1 原电池说课稿 苏教版选修6
- 《10 身边的新闻调查》(说课稿)-2023-2024学年三年级上册综合实践活动吉美版
- 父母赠与协议书
- 员工之爱岗敬业培训课件1
- 高校铸牢中华民族共同体意识教育的路径研究
- 医疗机构依法执业自查管理办法
- 《个人所得税征管问题及对策研究》
- 2022年云南省公务员录用考试《申论》真题(县乡卷)及答案解析
- 驾照体检表完整版本
- m拱顶储罐设计计算书
- 2023外贸业务协调期中试卷
- 新人教鄂教版(2017)五年级下册科学全册教学课件
- GB/T 29361-2012电子物证文件一致性检验规程
评论
0/150
提交评论