《江苏省计算机等级考试二级C语言笔试辅导.ppt》由会员分享,可在线阅读,更多相关《江苏省计算机等级考试二级C语言笔试辅导.ppt(155页珍藏版)》请在三一办公上搜索。
1、1,江苏省计算机等级考试二级C语言笔试辅导,2,笔试概况,考试时间:2小时合格、优秀成绩要求内容题型及分值信息技术 选择题(20分)C语言 选择题(10分)填空题(30分):简单填空(5分)阅读程序(13分)完善程序(12分)答题策略,3,语法考试要求及考题解析(2007秋2010春),1.C语言基本概念 源程序格式、风格和结构。main函数特性。C程序保存。注释位置。【考题解析】填空题在一个C语言源程序中,必不可少的是。答案:main函数定义单选题.以下叙述中正确的是。A在编译时可以发现注释中的拼写错误BC语言程序的每一行只能写一条语句Cmain()必须位于程序的开始DC语言程序可以由一个或
2、多个函数组成 答案:D,4,单选题 在一个源程序中main函数的位置。A必须在最开始 B必须在最后 C必须在预处理命令的后面 D可以在其他函数之前或之后答案:D单选题 下列叙述中正确的是。A.main函数必须出现在其他函数之前B.main函数中至少必须有一条语句C.C程序总是从main函数的第一条语句开始执行D.C程序总是在执行完main函数的最后一条语句后结束答案:C,5,单选题 以下叙述中正确的是。A.C语言系统以函数为单位编译源程序B.main函数必须放在程序开始C.用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数答案:C全国选择题 以下叙述中正确的是
3、()。A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数答案:C,6,全国选择题 以下叙述中正确的是()。A)C程序中的注释只能出现在程序的开始位置和语句的后面。B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中答案:C全国选择题 以下叙述中正确的是()。A)C程序的基本组成单位是语句 B)C程序中的每一行只能写一
4、条语句C)简单C语句必须以分号结束 D)C语句必须在一行内写完答案:C,7,基本类型数据的表示及使用 系统预定义类型标识符、类型修饰符的使用 基本类型常量的表示及使用 字符串常量形式 关键字。标识符。符号常量的定义与使用 基本类型变量的声明、初始化,直接引用变量【考题解析】单选题 在C语言源程序中,不带任何修饰符的浮点数直接量(例如:3.14)都是按 类型数据存储的。答案:double单选题已知sizeof(int)的值为2,为将10!的值存储到变量f中(10!=3628800),变量f的类型应声明为。Along int Bint Cshort int Dunsigned int答案:A,8,
5、单选题 以下常量表示中正确的是(22)。A.xff B.5L C.aEb D.3.14U 答案:B单选题 以下语句中有语法错误的是。printf(%d,0e);B.printf(%f,0e2);C.printf(%d,0 x2);D.printf(%s,0 x2);答案:A,9,单选题以下选项中不能用作变量名的是。A_float Bswitch Csum D_123 答案:B 填空题在C语言系统中,如果一个变量能正确存储的数据范围为整数-3276832767,则该变量在内存中占(3)个字节。答案:2 单选题以下选项中,不能用作标识符的是。print B.FOR C.”时输出到屏幕的结果为(22
6、)。答案:byye101A,10,学校单选题 表达式“1e-8/2+1.0f”值的数据类型是(3)。int B.long C.float D.double 答案:D学校单选题以下局部变量声明中正确的是(2)。int char=2;B.void a=0;C.int a=b=0;D.int a,b=a=0;答案:D,11,运算符和表达式的表示及使用 赋值表达式,赋值运算符的左值要求 算术表达式。+、-运算符左值要求。溢出。关系表达式与逻辑表达式,逻辑表达式优化处理 逗号表达式 条件表达式 表达式运算中操作数类型自动转换与强制转换【考题解析】单选题 若有声明“double x=3,c,*a=答案:C
7、,12,单选题 若有声明“char ss8=”Red“;”,则sizeof(ss)的值是。A8 B4 C3 D1 答案:A 单选题 设有定义和声明如下:#define d 2int x=5;float y=3.83;char c=d;以下表达式中有语法错误的是。x+B.y+C.c+D.d+答案:D单选题 数学式 在C程序中正确的表示形式为。Asqrt(a)/2*b Bsqrt(a)/2/b Csqrt(a)/2b Dsqrt a/(2*b)答案:B,13,单选题 已知有声明“long x,y;”且x中整数的十进制表示有n位数字(4n10),若要求去掉整数x十进制表示中的最高位,用剩下的数字组成
8、一个新的整数并保存到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,则当x值为 时“x+1x”为假。答案:32767,14,填空题 若有声明“float y=3.14619;int x;”,则计算表达式“x=y*100+0.5,y=x/100.0”后y的值是。答案:3.1
9、5 单选题 已知有声明“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”运算后b的值为。答案:5填空题 已知有声明“char ch=g;”,则表达式ch=ch-a+A的值为字符 的编码。答案:G,15,单选题 已有声明“int a=3,b=3,c=2;”,以下选项中值为0的表达式是。!a”,则下列关系表达式中有语法错误的是。.xy=2.zyx.xy=1.x=(x=0,y=1,z=2)答案:A,16,填空题 数学式 对应的C语
10、言表达式为。答案: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=25,e;”,则执行语句“e=ab?-c:+c;”后变量e的值是。答案:26,17,单选题 以下选项中,不能表示函数 功能的表达式是。A.s=(x0)?1:(x0?1:0)C.s=x0?1
11、:x=0?0:-1答案:C单选题 若有程序段“char c=256;int a=c;”,则执行该程序段后a的值是。256 B.65536 C.0 D.-1答案:C,18,填空题 设有声明“int a=3,b=4;float x=4.5,y=3.5;”,则表达式“(float)(a+b)/2+(int)x%(int)y”的值是。答案:4.5 3.5+4%3=4.5*填空题若有声明“int r=2;”,则执行语句“printf(”%d“,sizeof(2*3.14*r);”时输出。答案:8单选题 已知有声明“int n;float x,y;”,则执行语句“y=n=x=3.89;”后,y的值为。3
12、B.3.0 C.3.89 D.4.0答案:B x=3.89,n=3,y=3.0单选题 已知有声明“int a=3,b=4;”,下列表达式中合法的是。A.a+b=7 B.a=|b|C.a=b=0 D.(a+)+答案:C学校单选题 已知有声明“int a=1,b=2;”,执行语句“while(-a 0”后变量a、b的值是。0,2 B.0,1 C.1,1 D.2,2答案:A 短路运算,-b不执行,19,2.语句 实现顺序结构的语句 表达式语句,空语句,复合语句,函数调用语句 标准输入输出库函数printf(),scanf(),getchar(),putchar(),gets(),puts()【考题解
13、析】单选题 已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是。printf(%d,32768);B.printf(%ld,32768);C.printf(%f,32768);D.printf(%c,32768);答案:B,20,学校单选题 已知某编译系统中sizeof(int)的值为2,在该编译系统中执行以下(10)语句时输出结果不是39999。A.printf(%u,39999);B.printf(%d,39999);C.printf(%ld,39999);D.printf(%lu,39999);答案:B 单选题 若有声明“float f=123.4567
14、8;”,则执行语句“printf(”%.3f“,f);”后,输出结果是。.1.23e+02.123.457.123.456780.1.234e+02答案:B,21,单选题 已知有声明“char s80;”,若需要将键盘输入的一个不含空格的字符串保存到s数组中,则下列语句中正确的是。scanf(%s,s);B.scanf(%s,s0);C.s=gets();D.s=getchar();答案:A 填空题 已知有声明和语句“int a;scanf(”a=%d“,答案:D,22,实现选择结构的语句:if-else,switch【考题解析】单选题 若在一个C语言源程序中“e1”和“e3”是表达式,“s;
15、”是语句,则下列选项中与语句“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;答案: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;defa
16、ult:y=-1;答案:C,23,学校单选题 已知有声明“int a=1,b=2,c=0;”,执行语句“if(ab)c=a;a=b;b=c;”后变量a、b的值是(21)。答案:2,0,24,阅读程序 下列程序运行后的输出结果第一行是(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)other,25,阅读程序 以下程序运行时输出
17、结果为(6)#include void main()int i,sum=0;for(i=0;i5;i+)switch(i)case 0:case 1:sum+;case 3:sum+;case 4:sum-;break;printf(%dn,sum);答案:1,26,实现循环结构的语句:while,do-while,for,goto【考题解析】单选题 若有声明“int i,k=1;unsigned j;”,则下列语句执行时会出现无限循环的语句是。.for(j=15;j0;j-=2)k+;B.for(j=0;j0;i-=2)k+;答案:A学校单选题 以下语句中有语法错误的是。for(;);B.d
18、o;while(1);C.while();D.p:;goto p;答案:C,27,阅读程序 以下程序运行时输出结果最后一行是。#includevoid main()int a=1,b=1,i;for(i=1;i=2;i+)a=a+b;printf(%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);答案:30,29,跳转语句:break,continue
19、,return【考题解析】全国选择题 有以下程序#include#include main()int x=8;for(;x0;x-)if(x%3)printf(%d,x-);continue;printf(%d,-x);程序的运行结果是()。A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,答案:D,30,3.构造类型数据 基本类型数组(一维,二维)数组声明及初始化 数组存储结构 使用数组名引用数组元素【考题解析】单选题 以下声明中错误的是。Aint a2;Bint a=0,1;Cint a3=0;Dint a34=0;答案:C全国单选题 下列选项中,能正确定义数组的
20、语句是()。A)intnum0.2008;B)intnum;C)intN=2008;D)#defineN 2008 intnumN;intnumN;答案:D,31,单选题 设有声明“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 全国单选题 已知有声明“int m=5,4,3,2,1,i=0;”,下列对m数组元素的引用中,正确的是。m-i B)m2*2 C)mm0 D)mmi答案:B,32,填空题 若有声明“char s110=ABCDE,s210=A0;”,则语句
21、“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答案:C,33,单选题 已知有声明“char s20=”Hello“;”,在程序运行过程中,若要想使数组s中的内容修改为“Good”,则以下语句中能够实现此功能的是。As=Good;Bs20=Good;Cstrcat(s,Good);Dstrcpy(s,
22、Good);答案:D,34,单选题 已知有声明“int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;”,若需要引用值为12的数组元素,则下列选项中错误的是。A*(a+2)+3 B*(*(a+2)+3)C*(a2+3)Da23答案:A,35,阅读程序 以下程序运行时输出结果中第一行是(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;tstart;i-)aij=ch;for(j=end;js
23、tart;j-)aij=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)12321,36,阅读程序 以下程序运行时输出结果的第一行是(1),第三行是(2)。#include void main()int i,j,a33;for(i=0;i3;i+)for(j=0;j3;j+)if(ij)aij=1;else aij=
24、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,结构类型变量与数组 定义结构类型 结构类型变量、数组声明及初始化 用变量名引用结构变量(结构数组元素)的全体成员 用变量名引用结构变量(结构数组元素)的基本类型成员【考题解析】单选题 若有结构类型定义“typedef struct test int x,y2;TEST;”,则以下声明中正确的是(27)。Astruct test x;Bstruct x;Ctest x;Dstruct
25、TEST x;答案:A,38,单选题 以下结构变量stu1的声明形式中,错误的是。typedef struct stuchar name10;float score;STU;STU stu1;#define STU struct stu STU char name10;float score;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;st
26、ruct d double x,y;d1=1.2,1.3,d2=1.2,1.3,d3;”,则以下表达式中正确的是。c3=0 B.c1=c2 C.c3=c1 D.d3=c1 答案:C,39,阅读程序 以下程序运行后的输出结果第一行是(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);答案:(
27、1)10(2)20,40,4.指针类型数据 基本类型变量的指针操作 基本类型变量地址的获取与保存。指向基本类型变量的指针变量声明、初始化与赋值。引用指针变量指向的基本类型变量(使用运算符*)【考题解析】填空题 若有声明char*p=%d,%dn;int a=1,b=2;则执行语句“printf(p,a,b);”时输出(4)。答案:1,2全国选择题 若有定义语句:doublex,y,*px,*py,执行了px=答案:C,41,全国 选择题 有以下程序#includemain()intm=1,n=2,*p=程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1
28、,1,2答案:B,42,全国选择题 有以下程序#include#includeint fun(int n)int*p;p=(int*)malloc(sizeof(int);*p=n;return*p;main()int a;a=fun(10);printf(“%dn”,a+fun(10);程序的运行结果是()。0 B)10 C)20 D)出错 答案:C,43,(2)基本类型数组的指针操作 基本类型数组元素地址的获取、保存与算术运算。引用指针变量指向的基本类型数组元素 二维数组行地址的获取、保存及算术运算。行指针变量的声明、初始化。引用行指针变量指向的基本类型数组元素【考题解析】单选题 设指针变
29、量占2个字节的内存空间,若有声明“char*p=”123“;int c;”,则执行语句“c=sizeof(p);”后,c的值为。A.1 B.2 C.3 D.4 答案:B全国选择题 若有定义语句:double x5=1.0,2.0,3.0,4.0,5.0,*p=x;则错误引用x数组元素的是()。*p B)x5 C)*(p+1)D)*x答案:B,44,单选题 若有声明“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单选题 已知有程序段“char str 10=Ao
30、yun,Beijing,*p=”,则执行printf语句后输出为。ABeijing BAoyun Cing Dng 答案:A,45,单选题 已知有声明“int i,a10,*p=a;”,现需要将110保存到a0a9中,以下程序段中不能实现这一功能的是。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);”后的输出结果为。答
31、案:5单选题 若有声明“int a34,*p=a0,(*q)4=a;”,则下列叙述中错误的是。.a23与q23等价.a23与p23等价.a23与*(p+11)等价.a23与p=p+11,*p等价答案:B,46,单选题 已知有声明“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填空题 若有声明“char s10=”remind“;”,执行“puts(s+2);”后的输出结果是。答案:mind单选题 已知有声明:“char a=It is mi
32、ne,*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,47,全国完善程序 以下程序的功能是:借助指针变量找出数组元素中的最大值所在数组元素的下标值。#includemain()inta10,*p,*s;for(p=a;p-a*s)s=_;printf(“index=%dn”,s-a);答案:p,48,(3)结构类型变量、数组的指针操作 结构变量地址、结构数组元素地址的获取与保存。指向结构变量指
33、针变量的声明、初始化与赋值。引用指针指向的结构类型变量(结构类型数组元素)的基本类型成员结构变量成员的地址、结构数组元素成员的地址获取与保存。指向结构变量成员的指针变量声明、初始化与赋值。【考题解析】,49,单选题 已知有结构定义和变量声明如下:struct student char name20;int score;struct student*h;stu,*p;int*q;以下选项中错误的是。Ap=答案:C,50,阅读程序 以下程序运行时输出结果的第一行是(1),第二行是(2)#include struct s int x,*y;*p;int d5=10,20,30,40,50;struc
34、t s a5=100,答案:(1)100 101(2)10 20,51,单选题 设有结构定义及变量声明如下: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,52,(4)指针类型数组的声明和使用【考题解析】全国单选题 有以下程序#includemain()char*a=abcd,ef,gh,ijk;int i;for(i=0;i4;i+)printf(%c,*ai);程序运行后输出的结果是A)aegi
35、B)dfhk C)abcd D)abcdefghijk答案:A全国单选题 若有定义语句:inta410,*p,*q4;且0=i4,则错误的赋值是()。A)p=aB)q=a c)q0=a D)p=&a21答案:B,53,全国填空题 有以下程序#includemain()int a=1,2,3,4,5,6,*k3,i=0;while(i3)ki=程序运行后的输出的结果是_ 答案:135,54,5.函数 函数定义、函数声明、函数调用(2)函数调用时基本类型实参的传递与使用。实参与形参的类型兼容性要求。实参类型的自动转换【考题解析】单选题 以下函数定义中正确的是(25)。A.double fun(do
36、uble x,double y)B.double fun(double x;double y)C.double fun(double x,double y);D.double fun(double x,y)答案:A,55,单选题 以下选项均为fun函数定义的头部,其中错误的是。A.int fun(int x,int y)B.int fun(int x,int yx)C.int fun(int x,int y3)D.int fun(int x,int*y)答案:B学校单选题 已知函数fun定义的头部为“void fun(int x,int y)”,以下fun函数声明中正确的是。void fun(
37、int x,int y);B.void fun(int x,int*y);void fun(int,int);D.void fun(int,int*);答案:C单选题 若有声明“long fun(int*x,int n,long*s);int a4=1,2,3,4;long b,c;”,则以下函数调用形式中正确的是。A.c=fun(a,4,b);B.c=fun(a,4,答案:D,56,单选题 若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是。A.实参和其对应的形参占用同一存储单元B.形参不占用存储单元C.同名的实参和形参占用同一存储单元D.形参和实参占用不同的存储单元答案:D
38、 全国选择题 函数调用语句func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8);中func函数的实参个数是()。A)3 B)4 C)5 D)8答案:A,57,阅读程序 以下程序运行时输出结果是。#include void func(int b)int a;a=b;b=10;void main()int a=10,b=20;func(b);printf(%d,%d,a,b);答案:10,20,58,阅读程序 以下程序运行时输出到屏幕的结果是。#include void swap(int a,int b)int t;if(ab)t=a,a=b,b=t;void main
39、()int x=13,y=11,z=12;if(xy)swap(x,y);if(xz)swap(x,z);if(yz)swap(y,z);printf(%dt%dt%dn,x,y,z);答案:8 13 11 12,59,阅读程序 以下程序运行时输出结果是。#includeint f(int x,int y)return x+y;void main()double a=5.5,b=2.5;printf(%d,f(a,b);答案:7,60,阅读程序 以下程序运行后的输出结果是。#include int fun(int w1,int w2)return w2-w1;main()int w=1,k;k
40、=fun(fun(w+1,w),w);printf(%dn,k);答案:2,61,全国选择题 有以下程序#includevoid fun(int a,int b)int t;t=a;a=b;b=t;main()int c10=1,2,3,4,5,6,7,8,9,0,i;for(i=0;i10;i+=2)fun(ci,ci+1);for(i=0;i10;i+)printf(“%d,”,ci);printf(“n”);程序的运行结果是()A)1,2,3,4,5,6,7,8,9,0,B)2,1,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6
41、,7,8,9,答案:A,62,(3)函数调用时结构类型实参的传递与使用阅读程序 以下程序运行时输出到屏幕的结果第一行是(1),第二行是(2)。#include typedef struct int x,y;direction;int visible(direction s,direction A,direction B,direction C)direction p1,p2;int d;p1.x=B.x-A.x;p1.y=B.y-A.y;p2.x=C.x-A.x;p2.y=C.y-A.y;d=s.x*p1.x*p2.x+s.y*p1.y*p2.y;printf(%4dn,d);return d
42、0;void main()char*ss=invisible,visible;direction s=1,1,T=1,1,A=0,0,B=2,1;puts(ssvisible(s,T,A,B);答案:(1)-1(2)invisible,63,(4)函数调用时指针类型实参的传递与使用【考题解析】单选题 若需要通过调用f函数得到一个数的平方值,以下f函数定义中不能实现该功能的是。A.void f(double*a)*a=(*a)*(*a);B.void f(double a,double*b)*b=a*a;C.void f(double a,double b)b=a*a;D.double f(do
43、uble a)return a*a;答案:C,64,全国选择题 有以下程序#includevoidfun(int*a,int*b)int*c;c=a;a=b;b=c;main()intx=3,y=5,*P=程序运行后的输出结果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3、答案:B,65,阅读程序 以下程序运行时输出结果是。#include void change(int x,int y,int*z)int t;t=x;x=y;y=*z;*z=t;void main()int x=18,y=27,z=63;change(x,y,答案:x=18,y=27,z=1
44、8,66,全国选择题 有以下程序#include void fun(int a,int n)int i,t;for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;main()int k10=1,2,3,4,5,6,7,8,9,10,i;fun(k,5);for(i=2;i8;i+)printf(“%d”,ki);printf(“n”);程序的运行结果是 A)345678 B)876543 C)1098765 D)321678答案:D,67,阅读程序 以下程序运行时输出结果中第一行是(1),第二行是(2)#includevoid fun(int x,int p,int*
45、n)int i,j=0;for(i=1;i=x/2;i+)if(x%i=0)pj+=i;*n=j;void main()int x,a10,n,i;fun(27,a,答案:(1)1 3 9(2)3,68,阅读程序 以下程序运行时输出结果中第一行是(1),第二行是(2)#includeint fun(char*a,char*b)int m=0,n=0;while(*(a+m)!=0)m+;while(bn)*(a+m)=bn;m+;n+;*(a+m)=0;return m;void main()char s120=yes,s25=no;printf(%dn,fun(s1,s2);puts(s1)
46、;答案:(1)5(2)yesno,69,阅读程序 以下程序运行时输出到屏幕的结果第一行是(1),第二行是(2)。#include void fun(char*p1,char*p2);void main()int i;char a=54321;puts(a+2);fun(a,a+4);puts(a);void fun(char*p1,char*p2)char t;while(p1p2)t=*p1;*p1=*p2;*p2=t;p1+=2,p2-=2;答案:(1)321(2)14325,70,完善程序 以下程序的功能是:求a数组中前4个元素之和及后6个元素之和。#include int fsum(i
47、nt*array,int n)int i,s=0;for(i=0;(1);i+)s+=arrayi;return(s);void main(void)int a15=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;int sumh,sumt;sumh=fsum(a,4);sumt=(2);printf(“%d%dn”,sumh,sumt);答案:(1)in(2)fsum(&a9,6)或 fsum(a+9,6),71,(5)函数返回值的产生【考题解析】填空题 已知有函数定义“int fun()return(3,4);”,则调用fun后的函数返回值是(1)。答案:4 全国选
48、择题 以下叙述中错误的是()。A)用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式答案:B,72,全国选择题 以下关于return语句的叙述中正确的是()。A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同的情况设置多条return语句C)定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束语句时不能返回到调用处 答案:B,73,(6
49、)全局变量、局部变量与形式参数的作用域【考题解析】阅读程序 以下程序运行时输出结果是。#include int t;int sub(int*s)*s+=1;t+=*s;return t;main()int i;for(i=1;i4;i+)printf(%4d,sub(答案:2 6,74,(7)局部变量、形式参数的存储类型和生存期【考题解析】单选题 已知在函数f中声明了局部变量x,如果希望f函数第一次被调用返回后变量x中存储的数据保持到下次f函数被调用时仍可以使用,则在声明x时必须指定其存储类型为(30)。A.auto B.register C.static D.extern答案:C填空题 声明
50、局部变量时若缺省存储类别,该变量的存储类别是。答案:auto填空题 可以改变局部变量的生存期、但不能改变它的作用域的存储类别是。答案:static,75,阅读程序 以下程序运行时输出结果的第一行是(1),第二行是(2)。#includeint f1()static int i=0,f=1;return f*=+i;int f2()int i=0,f=1;return f*=+i;void main()printf(%dn,f1()+f1();printf(%dn,f2()+f2();答案:(1)3(2)2,76,阅读程序 以下程序运行时输出到屏幕的结果第一行是(1),第二行是(2),第三行是(