1、江苏省计算机等级考试江苏省计算机等级考试二级二级C语言语言笔试辅导笔试辅导1笔试概况笔试概况考试时间:考试时间:2小时小时合格、优秀成绩要求合格、优秀成绩要求内容题型及分值内容题型及分值信息技术信息技术选择题(选择题(20分)分)C语言语言选择题(选择题(10分)分)填空题(填空题(30分):简单填空(分):简单填空(5分)分)阅读程序(阅读程序(13分)分)完善程序(完善程序(12分)分)答题策略答题策略2语法考试要求及考题解析语法考试要求及考题解析(2007秋秋2010春)春)1.C语言基本概念语言基本概念源程序格式、风格和结构。源程序格式、风格和结构。main函数特性。函数特性。C程序保
2、存程序保存。注释位置。注释位置。【考题解析考题解析】填空题填空题在一个在一个C语言源程序中,语言源程序中,必不可少的是必不可少的是。答案:答案:mainmain函数定义函数定义单选题单选题.以下叙述中正确的是以下叙述中正确的是。A在编译时可以发现注释中的拼写错误在编译时可以发现注释中的拼写错误BC语言程序的每一行只能写一条语句语言程序的每一行只能写一条语句Cmain()必须位于程序的开始必须位于程序的开始DC语言程序可以由一个或多个函数组成语言程序可以由一个或多个函数组成答案:答案:D D3单选题单选题在一个源程序中在一个源程序中main函数的位置函数的位置。A必须在最开始必须在最开始B必须在
3、最后必须在最后C必须在预处理命令的后面必须在预处理命令的后面D可以在其他函数之前或之后可以在其他函数之前或之后答案:答案:D单选题单选题下列叙述中正确的是下列叙述中正确的是。A.main函数必须出现在其他函数之前函数必须出现在其他函数之前B.main函数中至少必须有一条语句函数中至少必须有一条语句C.C程序总是从程序总是从main函数的第一条语句开始执行函数的第一条语句开始执行D.C程序总是在执行完程序总是在执行完main函数的最后一条语句后结束函数的最后一条语句后结束答案:答案:C 4单选题单选题以下叙述中正确的是以下叙述中正确的是。A.C语言系统以函数为单位编译源程序语言系统以函数为单位编
4、译源程序B.main函数必须放在程序开始函数必须放在程序开始C.用户定义的函数可以被一个或多个函数调用任意多次用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数在一个函数体内可以定义另外一个函数答案:答案:C全国选择题全国选择题以下叙述中正确的是以下叙述中正确的是()()。A)C语言程序将从源程序中第一个函数开始执行语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行序将从此开始执行C)C语言规定必须用语言规定必须用main作为主函数名,程序将从此开始作为主函
5、数名,程序将从此开始执行,在此结束执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主可作为用户标识符,用以命名任意一个函数作为主函数函数答案:答案:C5全国选择题全国选择题以下叙述中正确的是以下叙述中正确的是()。A)C程序中的注释只能出现在程序的开始位置和语句的后程序中的注释只能出现在程序的开始位置和语句的后面。面。B)C程序书写格式严格,要求一行内只能写一个语句程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上程序书写格式自由,一个语句可以写在多行上D)用用C语言编写的程序只能放在一个程序文件中语言编写的程序只能放在一个程序文件中答
6、案:答案:C全国选择题全国选择题以下叙述中正确的是以下叙述中正确的是()。A)C程序的基本组成单位是语句程序的基本组成单位是语句B)C程序中的每一行只能写一条语句程序中的每一行只能写一条语句C)简单简单C语句必须以分号结束语句必须以分号结束D)C语句必须在一行内写完语句必须在一行内写完答案:答案:C6基本类型数据的表示及使用基本类型数据的表示及使用系统预定义类型标识符、类型修饰符的使用系统预定义类型标识符、类型修饰符的使用基本类型常量的表示及使用基本类型常量的表示及使用字符串常量形式字符串常量形式 关键字。关键字。标识符。标识符。符号常量的定义与使用符号常量的定义与使用基本类型变量的声明、初始
7、化基本类型变量的声明、初始化,直接引用变量直接引用变量【考题解析考题解析】单单选选题题在在C语语言言源源程程序序中中,不不带带任任何何修修饰饰符符的的浮浮点点数数直直接接量量(例如:(例如:3.14)都是按)都是按类型数据存储的。类型数据存储的。答案:答案:double单单选选题题已已知知sizeof(int)的的值值为为2,为为将将10!的的值值存存储储到到变变量量f中中(10!=3628800),变量),变量f的类型应声明为的类型应声明为。AlongintBintCshortintDunsignedint答案:答案:A A7单选题单选题以下常量表示中正确的是以下常量表示中正确的是(22)。
8、A.xff B.5L C.aEbD.3.14U答案:答案:B B单选题单选题以下语句中有语法错误的是以下语句中有语法错误的是。A.printf(%d,0e);B.printf(%f,0e2);C.printf(%d,0 x2);D.printf(%s,0 x2);答案:答案:A A8单选题单选题以下选项中不能用作变量名的是以下选项中不能用作变量名的是。A_floatBswitchCsumD_123答案:答案:B B填填空空题题在在C语语言言系系统统中中,如如果果一一个个变变量量能能正正确确存存储储的的数数据据范范围围为为整整数数-32768 32767,则则该该变变量量在在内内存存中中占占(3
9、)个个字字节。节。答案:答案:2 2单选题单选题以下选项中,不能用作以下选项中,不能用作标识符的是标识符的是。A.print B.FORC.&aD._00答案:答案:C单选题单选题以下选项中,以下选项中,是是C语言关键字。语言关键字。AprintfBincludeCfunDdefault答案:答案:D学校单选题学校单选题执行语句执行语句“printf(”byebye101101“);”时时输出到屏幕的结果输出到屏幕的结果为为(22)。答案:答案:byye101A9学校单选题学校单选题表达式表达式“1e-8/2+1.0f”值的数据类型是值的数据类型是(3)。A.intB.longC.floatD
10、.double答案:答案:D学校单选题学校单选题以下局部变量声明中正确的是以下局部变量声明中正确的是(2)。A.intchar=2;B.voida=0;C.inta=b=0;D.inta,b=a=0;答案:答案:D10运算符和表达式的表示及使用运算符和表达式的表示及使用赋值表达式,赋值运算符的左值要求赋值表达式,赋值运算符的左值要求算术表达式。算术表达式。+、-运算符左值要求。溢出。运算符左值要求。溢出。关系表达式与逻辑表达式,逻辑表达式优化处理关系表达式与逻辑表达式,逻辑表达式优化处理逗号表达式逗号表达式条件表达式条件表达式表达式运算中操作数类型自动转换与强制转换表达式运算中操作数类型自动转
11、换与强制转换【考题解析考题解析】单单选选题题若若有有声声明明“doublex=3,c,*a=&x,*b=&c;”,则则下下列列语语句中错误的是句中错误的是 。Aa=b=0;Ba=&c,b=a;C&a=&b;D*b=*a;答案:答案:C C11单选题单选题若有声明若有声明“charss8=”Red“;”,则则sizeof(ss)的值是的值是。A8B4C3D1答案答案:A单选题单选题设有定义和声明如下:设有定义和声明如下:#defined2intx=5;floaty=3.83;charc=d;以下表达式中有语法错误的是以下表达式中有语法错误的是。A.x+B.y+C.c+D.d+答案:答案:D D单
12、选题单选题数学式数学式在在C程序中正确的表示形式为程序中正确的表示形式为。Asqrt(a)/2*bBsqrt(a)/2/bCsqrt(a)/2bDsqrta/(2*b)答案答案:B12单选题单选题已知有声明已知有声明“longx,y;”且且x中整数的十进制表示有中整数的十进制表示有n位数字(位数字(4n10),若要求去掉整数),若要求去掉整数x十进制表示中的最十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到高位,用剩下的数字组成一个新的整数并保存到y中,则以中,则以下表达式中能正确实现这一功能的是下表达式中能正确实现这一功能的是。A.y=x/(10*(n-1)B.y=x%(10*(n
13、-1)C.y=x%(long)pow(10,n-1)D.y=x%(10(n-1)答案:答案:C填空题填空题若有声明若有声明“doublex=10,y=5;”,则计算,则计算xy的库函数调的库函数调用形式是用形式是。答案:答案:pow(x,y)或或pow(10,5)填空题填空题若有声明若有声明“intx;”且且sizeof(x)的值为的值为2,则当,则当x值为值为时时“x+1x”为假。为假。答案:答案:3276713填空题填空题若若有声明有声明“floaty=3.14619;intx;”,则计算表达式则计算表达式“x=y*100+0.5,y=x/100.0”后后y的值是的值是。答案:答案:3.1
14、5 3.15 单选题单选题已知有声明已知有声明“inta=3,b=4,c;”,则执行语句,则执行语句“c=1/2*(a+b);”后,后,c的值为的值为。A.0B.3C.3.5D.4 答案:答案:A填空题填空题若有声明若有声明“inta=5,b=2;”,则表达式,则表达式“b+=(float)(a+b)/2”运算后运算后b的值为的值为。答案:答案:5填空题填空题已知有声明已知有声明“charch=g;”,则表达式,则表达式ch=ch-a+A的值为字符的值为字符的编码。的编码。答案:答案:G 14单选题单选题已有声明已有声明“inta=3,b=3,c=2;”,以下选项中值为以下选项中值为0的表的表
15、达式是达式是。A.!a&!b&cB.!a|!b|cC.a=b&b=cD.a=b&bc答案答案:A单选题单选题已知有声明已知有声明“inta=3,b=4,c=5;”,以下表达式中值为,以下表达式中值为0的是的是。A.a&bB.ay=2.zyx.xy=1.x=(x=0,y=1,z=2)答案:答案:A15填空题填空题数学式数学式对应的对应的C语言表达式为语言表达式为。答案:答案:sqrt(fabs(x)!=4*a/(b*c)或或sqrt(fabs(x)!=4*a/b/c单选题单选题已知有声明已知有声明“inta=12,b=15,c;”,则执行表达式,则执行表达式“c=(a|(b-=a)”后,变量后,
16、变量b和和c的值分别为的值分别为。A3.1B15,12C15,1D3,12答案答案:C填空题填空题数学式数学式所对应的所对应的C语言表达式为语言表达式为pow(x,)。答案:答案:1.0/3填空题填空题若有声明若有声明“inta=15,b=20,c=25,e;”,则执行语句,则执行语句“e=ab?-c:+c;”后变量后变量e的值是的值是。答案:答案:2616单单选选题题以以下下选选项项中中,不不能能表表示示函函数数功功能的表达式是能的表达式是。A.s=(x0)?1:(x0)?-1:0B.s=x0?1:0)C.s=x0?1:x=0?0:-1答案:答案:C C单选题单选题若有程序段若有程序段“ch
17、arc=256;inta=c;”,则执行该程,则执行该程序段后序段后a的值是的值是。A.256B.65536C.0D.-1答案:答案:C C17填填空空题题设设有有声声明明“inta=3,b=4;floatx=4.5,y=3.5;”,则则表表达式达式“(float)(a+b)/2+(int)x%(int)y”的值是的值是。答案答案:4.5填空题填空题若有声明若有声明“intr=2;”,则执行语句则执行语句“printf(”%d“,sizeof(2*3.14*r);”时输出时输出。答案:答案:8单选题单选题已知有声明已知有声明“intn;floatx,y;”,则执行语句,则执行语句“y=n=x=
18、3.89;”后,后,y的值为的值为。A.3B.3.0C.3.89D.4.0答案:答案:B单选题单选题已知有声明已知有声明“inta=3,b=4;”,下列表达式中合法的,下列表达式中合法的是是。A.a+b=7B.a=|b|C.a=b=0D.(a+)+答案:答案:C学校单选题学校单选题已已知知有声明有声明“inta=1,b=2;”,执行语句执行语句“while(-a0&-b0)a=b;”后变量后变量a、b的值是的值是。A.0,2B.0,1C.1,1D.2,2答案:答案:A182.语句语句实现顺序结构的语句实现顺序结构的语句 表达式语句,空语句,复合语句,函数调用语句表达式语句,空语句,复合语句,函
19、数调用语句 标准输入输出库函数标准输入输出库函数printf(),scanf(),getchar(),putchar(),gets(),puts()【考题解析考题解析】单选题单选题已知已知int类型数据在内存中存储长度为类型数据在内存中存储长度为2个字节,以下个字节,以下语句中能正确输出整数语句中能正确输出整数32768的是的是。A.printf(%d,32768);B.printf(%ld,32768);C.printf(%f,32768);D.printf(%c,32768);答案:答案:B19学校单选题学校单选题已知某编译系统中已知某编译系统中sizeof(int)的值为的值为2,在该编
20、译,在该编译系统中执行以下系统中执行以下(10)语句时输出结果不是语句时输出结果不是39999。A.printf(%u,39999);B.printf(%d,39999);C.printf(%ld,39999);D.printf(%lu,39999);答案:答案:B单选题单选题若有声明若有声明“floatf=123.45678;”,则执行语句,则执行语句“printf(”%.3f“,f);”后,输出结果是后,输出结果是。.1.23e+02.123.457.123.456780.1.234e+02答案:答案:B20单选题单选题已知有声明已知有声明“chars80;”,若需要将键盘输入的一,若需要
21、将键盘输入的一个不含空格的字符串保存到个不含空格的字符串保存到s数组中,则下列语句中正确数组中,则下列语句中正确的是的是。A.scanf(%s,s);B.scanf(%s,s0);C.s=gets();D.s=getchar();答案:答案:A填空题填空题已知有声明和语句已知有声明和语句“inta;scanf(”a=%d“,&a);”,欲,欲从键盘上输入数据使从键盘上输入数据使a中的值为中的值为3,则正确的输入应是,则正确的输入应是。答案:答案:a=3单选题单选题若有声明若有声明“longa,b;”且变量且变量a和和b都需要通过键盘输都需要通过键盘输入获得初值,则下列语句中正确的是入获得初值,
22、则下列语句中正确的是。A.scanf(%ld%ld,&a,&b);B.scanf(%d%d,a,b);C.scanf(%d%d,&a,&b);D.scanf(%ld%ld,&a,&b);答案:答案:D21实现选择结构的语句实现选择结构的语句:if-else,switch【考题解析考题解析】单选题单选题若在一个若在一个C语言源程序中语言源程序中“e1”和和“e3”是表达式,是表达式,“s;”是语句,则下列选项中与语句是语句,则下列选项中与语句“for(e1;e3)s;”功能功能等同的语句是等同的语句是。A.e1;while(10)s;e3;B.e1;while(10)s;e3;C.e1;whil
23、e(10)e3;s;D.while(10)e1;s;e3;答案:答案:B单选题单选题已知有声明已知有声明“intx,y;”,若要求编写一段程序实现,若要求编写一段程序实现“当当x大于等于大于等于0时时y取值取值1,否则,否则y取值取值-1”,则以下程序段中,则以下程序段中错误的是错误的是。A.if(x=0)y=1;elsey=-1;B.y=x=0?1:-1;C.switch()D.switch(x-abs(x)casex=0:y=1;break;case0:y=1;break;default:y=-1;default:y=-1;答案:答案:C22学校单选题学校单选题已知有声明已知有声明“int
24、a=1,b=2,c=0;”,执行语句,执行语句“if(ab)c=a;a=b;b=c;”后变量后变量a、b的值是的值是(21)。答案:答案:2,023阅读程序阅读程序下列程序运行后的输出结果第一行是下列程序运行后的输出结果第一行是(1);第二;第二行是行是(2)。#includemain()inti,a=0,c=2;for(i=0;i2;i+)switch(+a,a*c)case1:printf(1);case2:printf(2);case3:printf(3n);break;default:printf(othern);答案答案:(1)23(2)other24阅读程序阅读程序以下程序运行时输
25、出结果为以下程序运行时输出结果为(6)#includevoidmain()inti,sum=0;for(i=0;i0;j-=2)k+;B.for(j=0;j15;j+=2)k+;.for(i=0;i0;i-=2)k+;答案答案:A学校单选题学校单选题以下语句中有语法错误的是以下语句中有语法错误的是。A.for(;);B.do;while(1);C.while();D.p:;gotop;答案:答案:C26阅读程序阅读程序 以下程序运行时输出结果最后一行是以下程序运行时输出结果最后一行是 。#includevoidmain()inta=1,b=1,i;for(i=1;i=2;i+)a=a+b;pr
26、intf(%d/%d,b,a);b=a+b;printf(%d/%dn,a,b);printf(n);答案答案:3/5,5/827阅读程序阅读程序 以下程序运行时输出结果是以下程序运行时输出结果是。#includemain()ints=1,n=235;dos*=n%10;n/=10;while(n);printf(%dn,s);答案:答案:3028跳转语句跳转语句:break,continue,return【考题解析考题解析】全国选择题全国选择题有以下程序有以下程序#include#includemain()intx=8;for(;x0;x-)if(x%3)printf(%d,x-);cont
27、inue;printf(%d,-x);程序的运行结果是程序的运行结果是()。A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,答案:答案:D293.构造类型数据构造类型数据基本类型数组(一维,二维)基本类型数组(一维,二维)数组声明及初始化数组声明及初始化 数组存储结构数组存储结构使用数组名引用数组元素使用数组名引用数组元素【考题解析考题解析】单选题单选题以下声明中错误的是以下声明中错误的是。Ainta2;Binta=0,1;Cinta3=0;Dinta34=0;答案答案:C C全国单选题全国单选题下列选项中,能正确定义数组的语句是()。下列选项中,能正确定义数组的语
28、句是()。A)intnum0.2008;B)intnum;C)intN=2008;D)#defineN2008intnumN;intnumN;答案:答案:D30单选题单选题设有声明设有声明“intp10=1,2,i=0;”,以下语句中与以下语句中与“pi=pi+1,i+;”等价的是等价的是。A.pi=pi+;B.p+i=pi;C.p+i=pi+1;D.i+,pi-1=pi;答案:答案:D D全国单选题全国单选题已知有声明已知有声明“intm=5,4,3,2,1,i=0;”,下列对,下列对m数组元素的引用中,正确的是数组元素的引用中,正确的是。A)m-iB)m2*2C)mm0D)mmi答案:答案
29、:B31填空题填空题若有声明若有声明“chars110=ABCDE,s210=A0;”,则语句,则语句“printf(%d,strlen(strcpy(s1,s2);”的输出结果是的输出结果是。答案:答案:3全国选择题全国选择题有以下程序有以下程序#includemain()inta5=1,2,3,4,5,b5=0,2,1,3,0,i,s=0;for(i=0;i5;i+)s=s+abi;printf(%dn,s);程序运行后的输出结果是():程序运行后的输出结果是():A)6B)10C)11D)15答案:答案:C32单选题单选题已知有声明已知有声明“chars20=”Hello“;”,在程序运
30、行过程,在程序运行过程中,若要想使数组中,若要想使数组s中的内容修改为中的内容修改为“Good”,则以下语,则以下语句中能够实现此功能的是句中能够实现此功能的是。As=Good;Bs20=Good;Cstrcat(s,Good);Dstrcpy(s,Good);答案:答案:D D33单选题单选题已知有声明已知有声明“inta44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;”,若,若需要引用值为需要引用值为12的数组元素,则下列选项中错误的是的数组元素,则下列选项中错误的是。A*(a+2)+3B*(*(a+2)+3)C*(a2+3)Da23答案:答案:A34阅
31、阅读读程程序序以以下下程程序序运运行行时时输输出出结结果果中中第第一一行行是是(1),第三行是第三行是(2)。#include#defineN5voidmain()staticcharaNN;inti,j,t,start=0,end=N-1;charstr=123,ch;for(t=0;t=N/2;t+)ch=strt;for(i=j=start;iend;i+)aij=ch;for(j=start;jstart;i-)aij=ch;for(j=end;jstart;j-)aij=ch;if(start=end)astartend=ch;start+,end-;生成矩阵:生成矩阵:111111
32、2221123211222111111for(i=0;iN;i+)for(j=0;jN;j+)printf(%c,aij);printf(n);答案:答案:(1)11111(2)1232135阅阅读读程程序序以以下下程程序序运运行行时时输输出出结结果果的的第第一一行行是是(1),第三行是,第三行是(2)。#includevoidmain()inti,j,a33;for(i=0;i3;i+)for(j=0;j3;j+)if(ij)aij=1;elseaij=i-j+1;for(i=0;i3;i+)for(j=0;j3;j+)printf(%4d,aij);printf(n);生成矩阵:生成矩阵:
33、111211321答案答案:(1)111(2)32136结构类型变量与数组结构类型变量与数组定义结构类型定义结构类型 结构类型变量、数组声明及初始化结构类型变量、数组声明及初始化用变量名引用结构变量(结构数组元素)的全体成员用变量名引用结构变量(结构数组元素)的全体成员用变量名引用结构变量(结构数组元素)的基本类型成员用变量名引用结构变量(结构数组元素)的基本类型成员【考题解析考题解析】单选题单选题若有结构类型定义若有结构类型定义“typedefstructtestintx,y2;TEST;”,则以下声明中正确,则以下声明中正确的是的是(27)。Astructtestx;Bstructx;Ct
34、estx;DstructTESTx;答案:答案:A37单选题单选题以下结构变量以下结构变量stu1的声明形式中,错误的是的声明形式中,错误的是。typedefstructstucharname10;floatscore;STU;STUstu1;#defineSTUstructstuSTUcharname10;floatscore;stu1;structstucharname10;floatscore;stu1;structstucharname10;floatscore;STU;STUstu1;答案:答案:D学校单选题学校单选题若有定义若有定义“structcdoublex,y;c1=1.2,
35、1.3,c2=1.2,1.3,c3;structddoublex,y;d1=1.2,1.3,d2=1.2,1.3,d3;”,则以下表达式中正确的是则以下表达式中正确的是。A.c3=0B.c1=c2C.c3=c1D.d3=c1答案:答案:C38阅读程序阅读程序以下程序运行后的输出结果第一行是以下程序运行后的输出结果第一行是(1);第二;第二行是行是(2)。#includestructnumintx,y;st=1,10,2,20,3,30,4,40,-1,-1,s12,s22;main()inti=0,j=0,k;for(k=0;stk.x!=-1;k+)if(stk.x%2)s1i+=stk;e
36、lses2j+=stk;printf(%dn%dn,s10.y,s20.y);答案:答案:(1)10(2)20394.指针类型数据指针类型数据基本类型变量的指针操作基本类型变量的指针操作基本类型变量地址的获取与保存。基本类型变量地址的获取与保存。指向基本类型变量的指针变量声明、初始化与赋值。指向基本类型变量的指针变量声明、初始化与赋值。引用指针变量指向的基本类型变量(使用运算符引用指针变量指向的基本类型变量(使用运算符*)【考题解析考题解析】填空题填空题若有声明若有声明char*p=%d,%dn;inta=1,b=2;则执行语句则执行语句“printf(p,a,b);”时输出时输出(4)。答案
37、:答案:1,2全国选择题全国选择题若有定义语句:若有定义语句:doublex,y,*px,*py,执行了执行了px=&x,py=&y;之后,正确的输入语句是()。之后,正确的输入语句是()。A)scanf(”%f%f”,x,y);B)scanf(”%f%f”,&x,&y);C)scanf(”%lf%le”,px,py);D)scanf(”%lf%lf”,x,y);答案:答案:C40全国全国选择题选择题有以下程序有以下程序#includemain()intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%dn”,m,n,*p,*q);程序运
38、行后的输出结果是程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2答案:答案:B41全国选择题全国选择题有以下程序有以下程序#include#includeintfun(intn)int*p;p=(int*)malloc(sizeof(int);*p=n;return*p;main()inta;a=fun(10);printf(“%dn”,a+fun(10);程序的运行结果是()。程序的运行结果是()。A)0B)10C)20D)出错出错答案:答案:C42(2)基本类型数组的指针操作基本类型数组的指针操作基本类型数组元素地址的获取、保存与算术运算。基本
39、类型数组元素地址的获取、保存与算术运算。引用指针变量指向的基本类型数组元素引用指针变量指向的基本类型数组元素 二维数组行地址的获取、保存及算术运算。二维数组行地址的获取、保存及算术运算。行指针变量的声明、初始化。行指针变量的声明、初始化。引用行指针变量指向的基本类型数组元素引用行指针变量指向的基本类型数组元素【考题解析考题解析】单选题单选题设指针变量占设指针变量占2个字节的内存空间,若有声明个字节的内存空间,若有声明“char*p=”123“;intc;”,则执行语句,则执行语句“c=sizeof(p);”后,后,c的值为的值为。A.1B.2C.3D.4答案答案:B B全国选择题全国选择题若有
40、定义语句:若有定义语句:doublex5=1.0,2.0,3.0,4.0,5.0,*p=x;则错误引用则错误引用x数组元素的是()。数组元素的是()。A)*pB)x5C)*(p+1)D)*x答案:答案:B43单选题单选题若有声明若有声明“intx10=0,1,2,3,4,5,6,7,8,9,*p;”,则值,则值不为不为4的表达式是的表达式是。Ap=x,*(p+4)Bp=x+4,*p+Cp=x+3,*(p+)Dp=x+3,*+p答案答案:C C单选题单选题已知有程序段已知有程序段 “charstr10=Aoyun,Beijing,*p=&str00;printf(%sn,p+10);”,则执行则
41、执行printf语句后输出为语句后输出为 。ABeijingBAoyunCingDng答案答案:A A44单选题单选题已知有声明已知有声明“inti,a10,*p=a;”,现需要将,现需要将1 10保存到保存到a0 a9中,以下程序段中不能实现这一功能的是中,以下程序段中不能实现这一功能的是。A.for(i=0;i10;i+)ai=i+1;B.for(i=0;i10;i+)pi=i+1;C.i=1;while(pa+10)*p+=i+;D.i=1;while(pa+10)*a+=i+;答案:答案:D填空题填空题已知有声明已知有声明“inta32=1,2,3,4,5,6,*p=a0;”,则执行语
42、句,则执行语句“printf(”%dn“,*(p+4);”后的输出结果为后的输出结果为。答案:答案:5单选题单选题若有声明若有声明“inta34,*p=a0,(*q)4=a;”,则下列叙,则下列叙述中错误的是述中错误的是。.a23与与q23等价等价.a23与与p23等价等价.a23与与*(p+11)等价等价.a23与与p=p+11,*p等价等价答案:答案:B45单选题单选题已知有声明已知有声明“int a33=0,*p1=a1,(*p2)3=a;”,以以下下表表达达式式中中与与“a11=1”不等价的表达式是不等价的表达式是。A.*(p1+1)=1B.p111=1C.*(*(p2+1)+1)=1
43、D.p211=1答案:答案:B B填填 空空 题题 若若 有有 声声 明明“char s10=”remind“;”,执执 行行“puts(s+2);”后的输出结果是后的输出结果是。答案答案:mind单选题单选题已知有声明:已知有声明:“chara=Itismine,*p=Itismine;”,下列叙述中错误的是下列叙述中错误的是。A.strcpy(a,“yes”)和和strcpy(p,“yes”)都是正确的都是正确的B.a=“yes”和和p=“yes”都是正确的都是正确的C.*a等于等于*pD.sizeof(a)不等于不等于sizeof(p)答案:答案:B B46全国完善程序全国完善程序以下程
44、序的功能是:借助指针变量找出数组以下程序的功能是:借助指针变量找出数组元素中的最大值所在数组元素的下标值。元素中的最大值所在数组元素的下标值。#includemain()inta10,*p,*s;for(p=a;p-a10;p+)scanf(“%d”,p);for(p=a,s=a;p-a*s)s=_;printf(“index=%dn”,s-a);答案:答案:p47(3)结构类型变量、数组的指针操作结构类型变量、数组的指针操作结构变量地址、结构数组元素地址的获取与保存。结构变量地址、结构数组元素地址的获取与保存。指向结构变量指针变量的声明、初始化与赋值。指向结构变量指针变量的声明、初始化与赋值
45、。引用指针指向的结构类型变量(结构类型数组元素)的基引用指针指向的结构类型变量(结构类型数组元素)的基本类型成员本类型成员结构变量成员的地址、结构数组元素成员的地址获取与保结构变量成员的地址、结构数组元素成员的地址获取与保存。存。指向结构变量成员的指针变量声明、初始化与赋值。指向结构变量成员的指针变量声明、初始化与赋值。【考题解析考题解析】48单选题单选题已知有结构定义和变量声明如下:已知有结构定义和变量声明如下:structstudentcharname20;intscore;structstudent*h;stu,*p;int*q;以下选项中错误的是以下选项中错误的是。Ap=&stu;Bq
46、=&stu.score;Cscanf(%s%d,&stu);Dstu.h=p;答案答案:C C 49阅阅读读程程序序以以下下程程序序运运行行时时输输出出结结果果的的第第一一行行是是(1),第第二行是二行是(2)#includestructsintx,*y;*p;intd5=10,20,30,40,50;structsa5=100,&d0,200,&d1,300,&d2,400,&d3,500,&d4;voidmain()p=a;printf(%5d,p-x+);printf(%5dn,p-x);printf(%5d,*p-y);printf(%5dn,*+p-y);答案答案:(1)100101
47、(2)1020 50单选题单选题设有结构定义及变量声明如下:设有结构定义及变量声明如下:structproductcharcode5;floatprice;y4=100,100;以下表达式中错误的是以下表达式中错误的是。A.(*y).code0=2;B.y0.code0=2;C.y-price=10;D.(*y)-price=10;答案:答案:D D 51(4)指针类型数组的声明和使用指针类型数组的声明和使用【考题解析考题解析】全国单选题全国单选题有以下程序有以下程序#includemain()char*a=abcd,ef,gh,ijk;inti;for(i=0;i4;i+)printf(%c
48、,*ai);程序运行后输出的结果是程序运行后输出的结果是A)aegiB)dfhkC)abcdD)abcdefghijk答案:答案:A全国单选题全国单选题若有定义语句:若有定义语句:inta410,*p,*q4;且且0=i4,则错误的赋值是()。则错误的赋值是()。A)p=aB)q=ac)q0=aD)p=&a21答案:答案:B52全国填空题全国填空题有以下程序有以下程序#includemain()inta=1,2,3,4,5,6,*k3,i=0;while(i3)ki=&a2*i;printf(%d,*ki);i+;程序运行后的输出的结果是程序运行后的输出的结果是_答案:答案:135535.函数
49、函数函数定义、函数声明、函数调用函数定义、函数声明、函数调用(2)函数调用时函数调用时基本类型基本类型实参的传递与使用。实参与形参的实参的传递与使用。实参与形参的类型兼容性要求。实参类型的自动转换类型兼容性要求。实参类型的自动转换【考题解析考题解析】单选题单选题以下函数定义中正确的是以下函数定义中正确的是(25)。A.doublefun(doublex,doubley)B.doublefun(doublex;doubley)C.doublefun(doublex,doubley);D.doublefun(doublex,y)答案:答案:A A54单选题单选题以下选项均为以下选项均为fun函数定
50、义的头部,其中错误的是函数定义的头部,其中错误的是。A.intfun(intx,inty)B.intfun(intx,intyx)C.intfun(intx,inty3)D.intfun(intx,int*y)答案:答案:B学校单选题学校单选题已知函数已知函数fun定义的头部为定义的头部为“voidfun(intx,inty)”,以下,以下fun函数声明中正确的是函数声明中正确的是。A.voidfun(intx,inty);B.voidfun(intx,int*y);C.voidfun(int,int);D.voidfun(int,int*);答案:答案:C单选题单选题若有声明若有声明“lon