1、1江苏省计算机等级考试江苏省计算机等级考试二级二级C语言语言笔试辅导笔试辅导2笔试概况笔试概况 考试时间:考试时间:2小时小时 合格、优秀成绩要求合格、优秀成绩要求 内容题型及分值内容题型及分值 信息技术信息技术 选择题(选择题(20分)分)C语言语言 选择题(选择题(10分)分)填空题(填空题(30分):简单填空(分):简单填空(5分)分)阅读程序(阅读程序(13分)分)完善程序(完善程序(12分)分)答题策略答题策略3语法考试要求及考题解析语法考试要求及考题解析(2007秋秋2010春)春)1.C语言基本概念语言基本概念 源程序格式、风格和结构。源程序格式、风格和结构。main函数特性。函
2、数特性。C程序保存程序保存。注释位置。注释位置。【考题解析考题解析】填空题填空题在一个在一个C语言源程序中,语言源程序中,必不可少的是必不可少的是 。答案:答案:mainmain函数定义函数定义单选题单选题.以下叙述中正确的是以下叙述中正确的是 。A在编译时可以发现注释中的拼写错误在编译时可以发现注释中的拼写错误BC语言程序的每一行只能写一条语句语言程序的每一行只能写一条语句Cmain()必须位于程序的开始必须位于程序的开始DC语言程序可以由一个或多个函数组成语言程序可以由一个或多个函数组成 答案:答案:D D4 单选题单选题 在一个源程序中在一个源程序中main函数的位置函数的位置 。A必须
3、在最开始必须在最开始 B必须在最后必须在最后 C必须在预处理命令的后面必须在预处理命令的后面 D可以在其他函数之前或之后可以在其他函数之前或之后答案:答案:D单选题单选题 下列叙述中正确的是下列叙述中正确的是 。A.main函数必须出现在其他函数之前函数必须出现在其他函数之前B.main函数中至少必须有一条语句函数中至少必须有一条语句C.C程序总是从程序总是从main函数的第一条语句开始执行函数的第一条语句开始执行D.C程序总是在执行完程序总是在执行完main函数的最后一条语句后结束函数的最后一条语句后结束答案:答案:C 5单选题单选题 以下叙述中正确的是以下叙述中正确的是 。A.C语言系统以
4、函数为单位编译源程序语言系统以函数为单位编译源程序B.main函数必须放在程序开始函数必须放在程序开始C.用户定义的函数可以被一个或多个函数调用任意多次用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数在一个函数体内可以定义另外一个函数答案:答案:C全国选择题全国选择题 以下叙述中正确的是以下叙述中正确的是()()。A)C语言程序将从源程序中第一个函数开始执行语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行序将从此开始执行 C)C语言规定必须用语言规定必须
5、用main作为主函数名,程序将从此开始作为主函数名,程序将从此开始执行,在此结束执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主可作为用户标识符,用以命名任意一个函数作为主函数函数答案:答案:C 6全国选择题全国选择题 以下叙述中正确的是以下叙述中正确的是()。A)C程序中的注释只能出现在程序的开始位置和语句的后程序中的注释只能出现在程序的开始位置和语句的后面。面。B)C程序书写格式严格,要求一行内只能写一个语句程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上程序书写格式自由,一个语句可以写在多行上D)用用C语言编写的程序只能放在
6、一个程序文件中语言编写的程序只能放在一个程序文件中答案:答案:C全国选择题全国选择题 以下叙述中正确的是以下叙述中正确的是()。A)C程序的基本组成单位是语句程序的基本组成单位是语句 B)C程序中的每一行只能写一条语句程序中的每一行只能写一条语句C)简单简单C语句必须以分号结束语句必须以分号结束 D)C语句必须在一行内写完语句必须在一行内写完答案:答案:C7 基本类型数据的表示及使用基本类型数据的表示及使用 系统预定义类型标识符、类型修饰符的使用系统预定义类型标识符、类型修饰符的使用 基本类型常量的表示及使用基本类型常量的表示及使用 字符串常量形式字符串常量形式 关键字。关键字。标识符。标识符
7、。符号常量的定义与使用符号常量的定义与使用 基本类型变量的声明、初始化基本类型变量的声明、初始化,直接引用变量直接引用变量【考题解析考题解析】单选题单选题 在在C语言源程序中,不带任何修饰符的浮点数直接量语言源程序中,不带任何修饰符的浮点数直接量(例如:(例如:3.14)都是按)都是按 类型数据存储的。类型数据存储的。答案:答案:double单选题单选题已知已知sizeof(int)的值为的值为2,为将,为将10!的值存储到变量的值存储到变量f中中(10!=3628800),变量),变量f的类型应声明为的类型应声明为 。Along int Bint Cshort int Dunsigned i
8、nt答案:答案:A A 8单选题单选题 以下常量表示中正确的是以下常量表示中正确的是 (22)。A.xff B.5L C.aEb D.3.14U 答案:答案:B B单选题单选题 以下语句中有语法错误的是以下语句中有语法错误的是 。A.printf(%d,0e);B.printf(%f,0e2);C.printf(%d,0 x2);D.printf(%s,0 x2);答案:答案:A A9单选题单选题以下选项中不能用作变量名的是以下选项中不能用作变量名的是 。A_float Bswitch Csum D_123 答案:答案:B B 填空题填空题在在C语言系统中,如果一个变量能正确存储的数据范语言系
9、统中,如果一个变量能正确存储的数据范围为整数围为整数-32768 32767,则该变量在内存中占,则该变量在内存中占 (3)个字个字节。节。答案:答案:2 2 单选题单选题以下选项中,不能用作以下选项中,不能用作标识符的是标识符的是 。A.print B.FOR C.&a D._00答案:答案:C单选题单选题 以下选项中,以下选项中,是是C语言关键字。语言关键字。A printf Binclude Cfun Ddefault答案:答案:D学校单选题学校单选题 执行语句执行语句“printf(”byebye101101“);”时输出到时输出到屏幕的结果屏幕的结果为为 (22)。答案:答案:byy
10、e101A 10学校单选题学校单选题 表达式表达式“1e-8/2+1.0f”值的数据类型是值的数据类型是 (3)。A.int B.long C.float D.double 答案:答案:D学校单选题学校单选题以下局部变量声明中正确的是以下局部变量声明中正确的是 (2)。A.int char=2;B.void a=0;C.int a=b=0;D.int a,b=a=0;答案:答案:D11 运算符和表达式的表示及使用运算符和表达式的表示及使用 赋值表达式,赋值运算符的左值要求赋值表达式,赋值运算符的左值要求 算术表达式。算术表达式。+、-运算符左值要求。溢出。运算符左值要求。溢出。关系表达式与逻辑
11、表达式,逻辑表达式优化处理关系表达式与逻辑表达式,逻辑表达式优化处理 逗号表达式逗号表达式 条件表达式条件表达式 表达式运算中操作数类型自动转换与强制转换表达式运算中操作数类型自动转换与强制转换【考题解析考题解析】单选题单选题 若有声明若有声明“double x=3,c,*a=&x,*b=&c;”,则下列语则下列语句中错误的是句中错误的是 。Aa=b=0;Ba=&c,b=a;C&a=&b;D*b=*a;答案:答案:C C12单选题单选题 若有声明若有声明“char ss8=”Red“;”,则则sizeof(ss)的值的值是是 。A8 B4 C3 D1 答案答案:A 单选题单选题 设有定义和声明
12、如下:设有定义和声明如下:#define d 2int x=5;float y=3.83;char c=d;以下表达式中有语法错误的是以下表达式中有语法错误的是 。A.x+B.y+C.c+D.d+答案:答案:D D单选题单选题 数学式数学式 在在C程序中正确的表示形式为程序中正确的表示形式为 。Asqrt(a)/2*b Bsqrt(a)/2/b Csqrt(a)/2b Dsqrt a/(2*b)答案答案:B ba213单选题单选题 已知有声明已知有声明“long x,y;”且且x中整数的十进制表示有中整数的十进制表示有n位数字(位数字(4n10),若要求去掉整数),若要求去掉整数x十进制表示中
13、的十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到最高位,用剩下的数字组成一个新的整数并保存到y中,中,则以下表达式中能正确实现这一功能的是则以下表达式中能正确实现这一功能的是 。A.y=x/(10*(n-1)B.y=x%(10*(n-1)C.y=x%(long)pow(10,n-1)D.y=x%(10(n-1)答案:答案:C填空题填空题 若有声明若有声明“double x=10,y=5;”,则计算,则计算xy的库函数调的库函数调用形式是用形式是 。答案:答案:pow(x,y)或或 pow(10,5)填空题填空题 若有声明若有声明“int x;”且且sizeof(x)的值为的值为2,
14、则当,则当x值为值为 时时“x+1x”为假。为假。答案:答案:3276714填空题填空题 若若有声明有声明“float y=3.14619;int x;”,则计算表达式则计算表达式“x=y*100+0.5,y=x/100.0”后后y的值是的值是 。答案:答案:3.15 3.15 单选题单选题 已知有声明已知有声明“int a=3,b=4,c;”,则执行语句,则执行语句“c=1/2*(a+b);”后,后,c的值为的值为 。A.0 B.3 C.3.5 D.4 答案:答案:A填空题填空题 若有声明若有声明“int a=5,b=2;”,则表达式,则表达式“b+=(float)(a+b)/2”运算后运算
15、后b的值为的值为 。答案:答案:5填空题填空题 已知有声明已知有声明“char ch=g;”,则表达式,则表达式ch=ch-a+A的值为字符的值为字符 的编码。的编码。答案:答案:G 15单选题单选题 已有声明已有声明“int a=3,b=3,c=2;”,以下选项中值为以下选项中值为0的表达的表达式是式是 。A.!a&!b&c B.!a|!b|c C.a=b&b=c D.a=b&bc 答案答案:A 单选题单选题 已知有声明已知有声明“int a=3,b=4,c=5;”,以下表达式中值为,以下表达式中值为0的是的是 。A.a&b B.ay=2 .zyx.xy=1.x=(x=0,y=1,z=2)答
16、案:答案:A16填空题填空题 数学式数学式 对应的对应的C语言表达式为语言表达式为 。答案:答案:sqrt(fabs(x)!=4*a/(b*c)或或 sqrt(fabs(x)!=4*a/b/c 单选题单选题 已知有声明已知有声明“int a=12,b=15,c;”,则执行表达式,则执行表达式“c=(a|(b-=a)”后,变量后,变量b和和c的值分别为的值分别为 。A3.1 B15,12 C15,1 D3,12答案答案:C 填空题填空题 数学式数学式 所对应的所对应的C语言表达式为语言表达式为pow(x,)。答案:答案:1.0/3填空题填空题 若有声明若有声明“int a=15,b=20,c=2
17、5,e;”,则执行语句,则执行语句“e=ab?-c:+c;”后变量后变量e的值是的值是 。答案:答案:26bcax43x3x17单选题单选题 以下选项中,不能表示函数以下选项中,不能表示函数 功功能的表达式是能的表达式是 。A.s=(x0)?1:(x0)?-1:0 B.s=x0?1:0)C.s=x0?1:x=0?0:-1答案:答案:C C单选题单选题 若有程序段若有程序段“char c=256;int a=c;”,则执行该程,则执行该程序段后序段后a的值是的值是 。A.256 B.65536 C.0 D.-1答案:答案:C C010001)(xxxxsign18填空题填空题 设有声明设有声明“
18、int a=3,b=4;float x=4.5,y=3.5;”,则表达则表达式式“(float)(a+b)/2+(int)x%(int)y”的值是的值是 。答案答案:4.5 填空题填空题若有声明若有声明“int r=2;”,则执行语句则执行语句“printf(”%d“,sizeof(2*3.14*r);”时输出时输出 。答案:答案:8单选题单选题 已知有声明已知有声明“int n;float x,y;”,则执行语句,则执行语句“y=n=x=3.89;”后,后,y的值为的值为 。A.3 B.3.0 C.3.89 D.4.0答案:答案:B单选题单选题 已知有声明已知有声明“int a=3,b=4;
19、”,下列表达式中合法的,下列表达式中合法的是是 。A.a+b=7 B.a=|b|C.a=b=0 D.(a+)+答案:答案:C学校单选题学校单选题 已已知知有声明有声明“int a=1,b=2;”,执行语句执行语句 “while(-a 0&-b0)a=b;”后变量后变量a、b的值是的值是 。A.0,2 B.0,1 C.1,1 D.2,2答案:答案:A19 2.语句语句 实现顺序结构的语句实现顺序结构的语句 表达式语句,空语句,复合语句,函数调用语句表达式语句,空语句,复合语句,函数调用语句 标准输入输出库函数标准输入输出库函数printf(),scanf(),getchar(),putchar(
20、),gets(),puts()【考题解析考题解析】单选题单选题 已知已知int类型数据在内存中存储长度为类型数据在内存中存储长度为2个字节,以下个字节,以下语句中能正确输出整数语句中能正确输出整数32768的是的是 。A.printf(%d,32768);B.printf(%ld,32768);C.printf(%f,32768);D.printf(%c,32768);答案:答案:B20学校单选题学校单选题 已知某编译系统中已知某编译系统中sizeof(int)的值为的值为2,在该编,在该编译系统中执行以下译系统中执行以下 (10)语句时输出结果不是语句时输出结果不是39999。A.print
21、f(%u,39999);B.printf(%d,39999);C.printf(%ld,39999);D.printf(%lu,39999);答案:答案:B 单选题单选题 若有声明若有声明“float f=123.45678;”,则执行语句,则执行语句“printf(”%.3f“,f);”后,输出结果是后,输出结果是 。.1.23e+02 .123.457 .123.456780 .1.234e+02答案:答案:B 21单选题单选题 已知有声明已知有声明“char s80;”,若需要将键盘输入的一,若需要将键盘输入的一个不含空格的字符串保存到个不含空格的字符串保存到s数组中,则下列语句中正确数
22、组中,则下列语句中正确的是的是 。A.scanf(%s,s);B.scanf(%s,s0);C.s=gets();D.s=getchar();答案:答案:A 填空题填空题 已知有声明和语句已知有声明和语句“int a;scanf(”a=%d“,&a);”,欲,欲从键盘上输入数据使从键盘上输入数据使a中的值为中的值为3,则正确的输入应是,则正确的输入应是 。答案:答案:a=3 单选题单选题 若有声明若有声明“long a,b;”且变量且变量a和和b都需要通过键盘输都需要通过键盘输入获得初值,则下列语句中正确的是入获得初值,则下列语句中正确的是 。A.scanf(%ld%ld,&a,&b);B.s
23、canf(%d%d,a,b);C.scanf(%d%d,&a,&b);D.scanf(%ld%ld,&a,&b);答案:答案:D 22 实现选择结构的语句实现选择结构的语句: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;while(10)e3;s;D.while(10)e1;s;e3;答案:
24、答案:B 单选题单选题 已知有声明已知有声明“int x,y;”,若要求编写一段程序实现,若要求编写一段程序实现“当当x大于等于大于等于0时时y取值取值1,否则,否则y取值取值-1”,则以下程序段,则以下程序段中错误的是中错误的是 。A.if(x=0)y=1;else y=-1;B.y=x=0?1:-1;C.switch()D.switch(x-abs(x)case x=0:y=1;break;case 0:y=1;break;default:y=-1;default:y=-1;答案:答案:C 23学校单选题学校单选题 已知有声明已知有声明“int a=1,b=2,c=0;”,执行语句,执行语
25、句“if(ab)c=a;a=b;b=c;”后变量后变量a、b的值是的值是 (21)。答案:答案:2,024阅读程序阅读程序 下列程序运行后的输出结果第一行是下列程序运行后的输出结果第一行是 (1);第;第二行是二行是 (2)。#include main()int i,a=0,c=2;for(i=0;i2;i+)switch(+a,a*c)case 1:printf(1);case 2:printf(2);case 3:printf(3n);break;default:printf(othern);答案答案:(1)23 (2)other25阅读程序阅读程序 以下程序运行时输出结果为以下程序运行时
26、输出结果为 (6)#include void main()int i,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:;goto p;答案:答案:C27阅读程序阅读程序 以下程序运行时输出结果最后一行是以下程序运行时输出结果最后一行是 。#includevoid main()int a=1,b=1,i;for(i=1;i=2;i+)a=a+b;prin
27、tf(%d/%d,b,a);b=a+b;printf(%d/%d n,a,b);printf(n);答案答案:3/5,5/8 28阅读程序阅读程序 以下程序运行时输出结果是以下程序运行时输出结果是 。#include main()int s=1,n=235;do s*=n%10;n/=10;while(n);printf(%dn,s);答案:答案:3029 跳转语句跳转语句:break,continue,return【考题解析考题解析】全国选择题全国选择题 有以下程序有以下程序#include#include main()int x=8;for(;x0;x-)if(x%3)printf(%d,
28、x-);continue;printf(%d,-x);程序的运行结果是程序的运行结果是()。A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,答案:答案:D303.构造类型数据构造类型数据 基本类型数组(一维,二维)基本类型数组(一维,二维)数组声明及初始化数组声明及初始化 数组存储结构数组存储结构 使用数组名引用数组元素使用数组名引用数组元素【考题解析考题解析】单选题单选题 以下声明中错误的是以下声明中错误的是 。Aint a2;Bint a=0,1;Cint a3=0;Dint a34=0;答案答案:C C全国单选题全国单选题 下列选项中,能正确定义数组的语句是(
29、)。下列选项中,能正确定义数组的语句是()。A)int num0.2008;B)int num;C)int N=2008;D)#define N 2008 int numN;int numN;答案:答案:D31单选题单选题 设有声明设有声明“int p10=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 全国单选题全国单选题 已知有声明已知有声明“int m=5,4,3,2,1,i=0;”,下列对,下列对m数组元素的引用中,正确的是数组元素的引用中,
30、正确的是 。A)m-i B)m2*2 C)mm0 D)mmi答案:答案:B32填空题填空题 若有声明若有声明“char s110=ABCDE,s210=A0;”,则语句则语句“printf(%d,strlen(strcpy(s1,s2);”的输出结果是的输出结果是 。答案:答案:3全国选择题全国选择题 有以下程序有以下程序#includemain()int a5=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)6 B)10 C)11 D)15答案:答案:
31、C33单选题单选题 已知有声明已知有声明“char s20=”Hello“;”,在程序运行过程,在程序运行过程中,若要想使数组中,若要想使数组s中的内容修改为中的内容修改为“Good”,则以下语,则以下语句中能够实现此功能的是句中能够实现此功能的是 。As=Good;Bs20=Good;Cstrcat(s,Good);Dstrcpy(s,Good);答案:答案:D D34单选题单选题 已知有声明已知有声明“int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;”,若,若需要引用值为需要引用值为12的数组元素,则下列选项中错误的的数组元素,则下列选项中错误
32、的是是 。A*(a+2)+3 B*(*(a+2)+3)C*(a2+3)Da23答案:答案:A35阅读程序阅读程序 以下程序运行时输出结果中第一行是以下程序运行时输出结果中第一行是 (1),第三行是第三行是 (2)。#include#define N 5 void main()static char aNN;int i,j,t,start=0,end=N-1;char str=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-)a
33、ij=ch;if(start=end)astartend=ch;start+,end-;生成矩阵:生成矩阵:1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 for(i=0;iN;i+)for(j=0;jN;j+)printf(%c,aij);printf(n);答案:答案:(1)11111 (2)1232136 阅读程序阅读程序 以下程序运行时输出结果的第一行是以下程序运行时输出结果的第一行是 (1),第三行是第三行是 (2)。#include void main()int i,j,a33;for(i=0;i3;i+)for(j=0;j3;j
34、+)if(ij)aij=1;else aij=i-j+1;for(i=0;i3;i+)for(j=0;j3;j+)printf(%4d,aij);printf(n);生成矩阵:生成矩阵:1 1 1 2 1 1 3 2 1答案答案:(1)1 1 1 (2)3 2 1 37 结构类型变量与数组结构类型变量与数组 定义结构类型定义结构类型 结构类型变量、数组声明及初始化结构类型变量、数组声明及初始化 用变量名引用结构变量(结构数组元素)的全体成员用变量名引用结构变量(结构数组元素)的全体成员 用变量名引用结构变量(结构数组元素)的基本类型成员用变量名引用结构变量(结构数组元素)的基本类型成员【考题解
35、析考题解析】单选题单选题 若有结构类型定义若有结构类型定义 “typedef struct test int x,y2;TEST;”,则以下声明中正,则以下声明中正确的是确的是 (27)。Astruct test x;Bstruct x;Ctest x;Dstruct TEST x;答案:答案:A38单选题单选题 以下结构变量以下结构变量stu1的声明形式中,错误的是的声明形式中,错误的是 。typedef struct stuchar name10;float score;STU;STU stu1;#define STU struct stu STU char name10;float sc
36、ore;stu1;struct stuchar name10;float score;stu1;struct stuchar name10;float score;STU;STU stu1;答案:答案:D学校单选题学校单选题 若有定义若有定义 “struct c double x,y;c1=1.2,1.3,c2=1.2,1.3,c3;struct d double x,y;d1=1.2,1.3,d2=1.2,1.3,d3;”,则以下表达式中正确的是则以下表达式中正确的是 。A.c3=0 B.c1=c2 C.c3=c1 D.d3=c1 答案:答案:C39阅读程序阅读程序 以下程序运行后的输出结果
37、第一行是以下程序运行后的输出结果第一行是 (1);第二;第二行是行是 (2)。#include struct num int x,y;st=1,10,2,20,3,30,4,40,-1,-1,s12,s22;main()int i=0,j=0,k;for(k=0;stk.x!=-1;k+)if(stk.x%2)s1i+=stk;else s2j+=stk;printf(%d n%d n,s10.y,s20.y);答案:答案:(1)10 (2)20404.指针类型数据指针类型数据 基本类型变量的指针操作基本类型变量的指针操作 基本类型变量地址的获取与保存。基本类型变量地址的获取与保存。指向基本类
38、型变量的指针变量声明、初始化与赋值。指向基本类型变量的指针变量声明、初始化与赋值。引用指针变量指向的基本类型变量(使用运算符引用指针变量指向的基本类型变量(使用运算符*)【考题解析考题解析】填空题填空题 若有声明若有声明char*p=%d,%dn;int a=1,b=2;则执行语句则执行语句“printf(p,a,b);”时输出时输出 (4)。答案:答案:1,2全国选择题全国选择题 若有定义语句:若有定义语句:double x,y,*px,*py,执行了执行了px=&x,py=&y;之后,正确的输入语句是()。之后,正确的输入语句是()。A)scanf(”%f%f”,x,y);B)scanf(
39、”%f%f”,&x,&y);C)scanf(”%lf%le”,px,py);D)scanf(”%lf%lf”,x,y);答案:答案:C 41 全国全国 选择题选择题 有以下程序有以下程序#includemain()int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%dn”,m,n,*p,*q);程序运行后的输出结果是程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2答案:答案:B42全国选择题全国选择题 有以下程序有以下程序#include#includeint fun(int n)
40、int*p;p=(int*)malloc(sizeof(int);*p=n;return *p;main()int a;a=fun(10);printf(“%dn”,a+fun(10);程序的运行结果是()。程序的运行结果是()。A)0 B)10 C)20 D)出错出错 答案:答案:C 43(2)基本类型数组的指针操作基本类型数组的指针操作 基本类型数组元素地址的获取、保存与算术运算。基本类型数组元素地址的获取、保存与算术运算。引用指针变量指向的基本类型数组元素引用指针变量指向的基本类型数组元素 二维数组行地址的获取、保存及算术运算。二维数组行地址的获取、保存及算术运算。行指针变量的声明、初始
41、化。行指针变量的声明、初始化。引用行指针变量指向的基本类型数组元素引用行指针变量指向的基本类型数组元素【考题解析考题解析】单选题单选题 设指针变量占设指针变量占2个字节的内存空间,若有声明个字节的内存空间,若有声明“char*p=”123“;int c;”,则执行语句,则执行语句“c=sizeof(p);”后,后,c的的值为值为 。A.1 B.2 C.3 D.4 答案答案:B B全国选择题全国选择题 若有定义语句:若有定义语句:double x5=1.0,2.0,3.0,4.0,5.0,*p=x;则错误引用则错误引用x数组元素的是()。数组元素的是()。A)*p B)x5 C)*(p+1)D)
42、*x答案:答案:B44单选题单选题 若有声明若有声明“int x10=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单选题单选题 已知有程序段已知有程序段 “char str 10=Aoyun,Beijing,*p=&str00;printf(%sn,p+10);”,则执行则执行printf语句后输出为语句后输出为 。ABeijing BAoyun Cing Dng 答案答案:A A45单选题单选题 已知有声明已知有声明“int i,a10,*p
43、=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填空题填空题 已知有声明已知有声明 “int a32=1,2,3,4,5,6,*p=a0;”,则执行语句,则执行语句“printf(”%dn“,*(p+4);”后的输出结果为后的输出结果为 。答案:答案:5单选题单选题 若有声明若有声明“int a34,*
44、p=a0,(*q)4=a;”,则下列叙,则下列叙述中错误的是述中错误的是 。.a23与与q23等价等价 .a23与与p23等价等价.a23与与*(p+11)等价等价 .a23与与p=p+11,*p等价等价答案:答案:B46 单选题单选题 已知有声明已知有声明 “int a33=0,*p1=a1,(*p2)3=a;”,以下表达式中与以下表达式中与“a11=1”不等价的表达式是不等价的表达式是 。A.*(p1+1)=1 B.p111=1 C.*(*(p2+1)+1)=1 D.p211=1答案:答案:B B填空题填空题 若有声明若有声明“char s10=”remind“;”,执行,执行“puts(
45、s+2);”后的输出结果是后的输出结果是 。答案答案:mind单选题单选题 已知有声明:已知有声明:“char a=It is mine,*p=It is mine;”,下列叙述中错误的是下列叙述中错误的是 。A.strcpy(a,“yes”)和和strcpy(p,“yes”)都是正确的都是正确的 B.a=“yes”和和p=“yes”都是正确的都是正确的 C.*a 等于等于*p D.sizeof(a)不等于不等于sizeof(p)答案:答案:B B47全国完善程序全国完善程序 以下程序的功能是:借助指针变量找出数组以下程序的功能是:借助指针变量找出数组元素中的最大值所在数组元素的下标值。元素中
46、的最大值所在数组元素的下标值。#includemain()int a10,*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);答案:答案:p48(3)结构类型变量、数组的指针操作结构类型变量、数组的指针操作 结构变量地址、结构数组元素地址的获取与保存。结构变量地址、结构数组元素地址的获取与保存。指向结构变量指针变量的声明、初始化与赋值。指向结构变量指针变量的声明、初始化与赋值。引用指针指向的结构类型变量(结构类型数组元素)的基引用指针指向的结构类型变量(结构类型数组元素)的基本类型
47、成员本类型成员 结构变量成员的地址、结构数组元素成员的地址获取与保结构变量成员的地址、结构数组元素成员的地址获取与保存。存。指向结构变量成员的指针变量声明、初始化与赋值。指向结构变量成员的指针变量声明、初始化与赋值。【考题解析考题解析】49单选题单选题 已知有结构定义和变量声明如下:已知有结构定义和变量声明如下:struct student char name20;int score;struct student*h;stu,*p;int*q;以下选项中错误的是以下选项中错误的是 。Ap=&stu;Bq=&stu.score;Cscanf(%s%d,&stu);Dstu.h=p;答案答案:C
48、C 50阅读程序阅读程序 以下程序运行时输出结果的第一行是以下程序运行时输出结果的第一行是 (1),第,第二行是二行是 (2)#include struct s int x,*y;*p;int d5=10,20,30,40,50;struct s a5=100,&d0,200,&d1,300,&d2,400,&d3,500,&d4;void main()p=a;printf(%5d,p-x+);printf(%5dn,p-x);printf(%5d,*p-y);printf(%5dn,*+p-y);答案答案:(1)100 101 (2)10 20 51单选题单选题 设有结构定义及变量声明如下:
49、设有结构定义及变量声明如下:struct product char code5;float price;y4=100,100;以下表达式中错误的是以下表达式中错误的是 。A.(*y).code0=2;B.y0.code0=2;C.y-price=10;D.(*y)-price=10;答案:答案:D D 52(4)指针类型数组的声明和使用指针类型数组的声明和使用【考题解析考题解析】全国单选题全国单选题 有以下程序有以下程序#includemain()char*a=abcd,ef,gh,ijk;int i;for(i=0;i4;i+)printf(%c,*ai);程序运行后输出的结果是程序运行后输
50、出的结果是A)aegi B)dfhk C)abcd D)abcdefghijk答案:答案:A全国单选题全国单选题 若有定义语句:若有定义语句:int a410,*p,*q4;且且0=i4,则错误的赋值是()。则错误的赋值是()。A)p=a B)q=a c)q0=a D)p=&a21答案:答案:B53全国填空题全国填空题 有以下程序有以下程序#includemain()int a=1,2,3,4,5,6,*k3,i=0;while(i3)ki=&a2*i;printf(%d,*ki);i+;程序运行后的输出的结果是程序运行后的输出的结果是_ 答案:答案:13554 5.函数函数 函数定义、函数声