1、二级 C+-169 及答案解析(总分:100.00,做题时间:90 分钟)一、判断题(总题数:18,分数:45.00)1.数组下标从 0 开始。 (分数:2.50)A.正确B.错误2.用初值表给数组赋初值时,初值表中数据项的个数可以多于数组元素的个数。 (分数:2.50)A.正确B.错误3.一维数组属于构造数据类型。 (分数:2.50)A.正确B.错误4.一维字符数组就是字符串。 (分数:2.50)A.正确B.错误5.数组可以通过值参数和引用参数两种方式传递给函数。 (分数:2.50)A.正确B.错误6.一个数组的数组名与指向该数组的指针是一样的。 (分数:2.50)A.正确B.错误7.用下标
2、表示数组和用指针表示数组对程序计算速度没有什么影响。 (分数:2.50)A.正确B.错误8.函数可以返回数组类型的返回值。 (分数:2.50)A.正确B.错误9.数组的大小必须在编译时确定。 (分数:2.50)A.正确B.错误10.int 类型数组上唯一允许的整体操作是增量运算和减量运算。 (分数:2.50)A.正确B.错误11.假设: int v10; 则语句: v6=v2+v4; 更新了该数组中第 6 个元素中的值。 (分数:2.50)A.正确B.错误12.C+允许在字符串上进行整体操作。 (分数:2.50)A.正确B.错误13.语句: char vn=“Brown“; 将 vn 定义成一
3、个有 5 个元素的数组,因为“Brown“中含有 5 个字符。 (分数:2.50)A.正确B.错误14.对指针只要赋给一个地址值就可以了。 (分数:2.50)A.正确B.错误15.使用没有赋地址值的指针,只有当程序比较长的时候才可能造成系统崩溃。 (分数:2.50)A.正确B.错误16.带有返回值的函数只能有一个返回值。 (分数:2.50)A.正确B.错误17.当在用户自定义函数中使用 return 语句时,函数立即终止执行。 (分数:2.50)A.正确B.错误18.函数的默认参数没有次序要求,可以随意定义。 (分数:2.50)A.正确B.错误二、选择题(总题数:5,分数:13.00)19.设
4、有如下程序: #include iostream.h using namespace std; int main() int *x,*y,z=10; y= x= cout*x+1 endl; return 0; 上述程序的输出结果是_。(分数:2.50)A.y 的地址B.z 的地址C.11D.运行错误20.下面程序的输出结果是_。 int main() int x6=1,3,5,7,9,11,*k,*s; k=x; s= (分数:2.50)A.3, 3B.1, 1C.3, 5D.1, 321.考虑下面的函数原型: void testDefaulParam(int a, int b=7, cha
5、r z=“*“); 下面的函数调用中,不合法的是_。(分数:2.50)A.testDefaulParam(5);B.testDefaulParam(5,8);C.testDefaulParam(6,“#“);D.testDefaulParam(0,0,“*“);22.下面程序的输出结果是_。 #include iostream using namespace std; void fun(int i); int main() int n=2; fun(n); return 0; void fun(int i) static int x=1; int y=1; if(i0) +x; +y; cou
6、tx“y; fun(i-1); (分数:2.50)A.语法错,不能输出正确结果B.2 2 2 2C.2 2 3 3D.2 2 3 223.下面程序的输出结果是_。 #include iostream using namespace std; int fun(char *s); int main() coutfun(“Hello“); return 0; int fun(char *s) char *t=s; while(*t!=“/0“)t+; return(t-s); (分数:3.00)A.语法错,不能输出正确结果B.5C.6D.0三、填空题(总题数:14,分数:42.00)24.下面程序的
7、输出结果是 1。 #include iostream.h using namespace std; int main () int m5, n5, *px, *py, k; px=m; py=n; for(k=1;k4;k+,px+,py+) *px=k; *py=2*k; coutmk-1“ “nk-1endl; px= py= for(k=1; k3; k+) *px+=k; *py*=k; cout *px+“ “ *py+endl; return 0; (分数:6.00)25.下面程序的输出结果是 1。 #include iostream.h using namespace std;
8、int n 3=10,20,30,40,50,60; int main () int (*p) 3; p=n; cout p0 0 “,“ *(p0+1) “,“ (*p)2endl; return 0; (分数:2.50)26.下面程序的输出结果是 1。 #include iostream.h using namespace std; int main() int j; int m3 2=10,20,30,40 ,50 ,60; for(j=0; j2; j+) coutm2-jjendl; return 0; (分数:2.50)27.下面程序的输出结果是 1。 #include iostr
9、eam.h using namespace std; int x=5,4,3,2,1; int main() int i,*p, m=0; for(p=x,i=1;p+i=x+4;i+) cout*(p+i); for(i=0;i4;i+) m+=pj; cout“/t“m; return 0; (分数:2.50)28.下面程序的输出结果是 1。 #include iostream.h using namespace std; char *x=“First“,“Second“, “Third“; void f(char *z) cout*+zendl; int main() char *y;
10、y=x; f(y); return 0; (分数:2.50)29.定义如下变量和数组: int i; int y2 3=2,4,6,8,10,12; 则下面语句的输出结果是: 1。 for (i=0;i2;i+) couty1-ii+1endl; (分数:2.50)30.下面程序的运行结果是: 1。(假设输入的值为24;4) #include iostream.h using namespace std; int Factor(int, int int main() int number, squared, cubed, error; cout“Enter a number (0-20):“;
11、 cinnumber; error=Factor(number, squared, cubed); if(error) cout“Error encountered!/n“; else cout “Number: “number endl; cout “Squared: “squared endl; cout “Cubed:“ cubed endl; return 0; int Factor(int n, int rSquared=n*n; rCubed=n*n*n; return 0; (分数:2.50)31.下列函数用来在 x 数组中插入 a 值,x 数组中的数据已由小到大顺序存放,指针
12、n 所指内存单元中存放数组中数据的个数,插入后数组中的数据仍有序。请将横线处的程序补充完整。 void fun(char* x,char a,int* n) int k,p=0; x*n=a; while(axp) p+; for(k=*n;kp;k-) xk= 1; xp=a; +*n; (分数:3.00)32.若给 f 函数的形参 m 传递字符串“4321cde“(表示空格),则函数的返回值是 1。 long f(char m) long a; int s: while(*m=|*m=“/t“| *m=“/n“) m+; s=(*m=“-“?-1:1); if(*m=“+“ | *m=“-
13、1“) m+; for(a=0; *m=“0“m+) a=10*a+(*m-“0“); return s*a; (分数:3.00)33.函数 m(x,n)计算并返回具有 n 个元素的数组 x 中的最小元素下标。请将横线处程序补充完整。 int m(int* x,int n) int i=0,j; for(j=0;jn;j+) if(xjxi) 1; return i; (分数:3.00)34.下面 f 函数的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位数放在一维数组 y 中返回。二进制的最低位放在下标为 0 的位置上。请将横线处的程序补充完整。 void f(int x,int
14、y) int a=0,b; do b=x% 1; ya+=b; x/=2; while(x); (分数:3.00)35.下面程序的输出结果是 1。 #include iostream using namespace std; const int N=5; int fun(char *s, char a, int n); int main() char sN+1; int k,p; for(k=1; k=N; k+) sk=“A“+k+1; coutfun(s,“E“,N)endl; int fun(char *s, char a, int n) int j; *s=a;j=n; while(a
15、sj) j-; return j; (分数:3.00)36.下面程序的输出结果是 1。 #include iostream using namespace std; void f(int x) if (x) cout.put(“0“+x% 10); f(x/10); int main() f(11001); return 0; (分数:3.00)37.下面程序的输出结果 1。 #include iostream using namespace std; int x; void funA(int void funB(int,int int main() int first; int second
16、=5; x=6; funA(first,second); coutfirst“second“xendl; funB(first,second); coutfirst“second“xendl; return 0; void funA(int first=b+12; a=2*b; b=first+4; void funB(int u,int second=x; v=second+4; x=u+v; (分数:3.00)二级 C+-169 答案解析(总分:100.00,做题时间:90 分钟)一、判断题(总题数:18,分数:45.00)1.数组下标从 0 开始。 (分数:2.50)A.正确 B.错误解
17、析:2.用初值表给数组赋初值时,初值表中数据项的个数可以多于数组元素的个数。 (分数:2.50)A.正确B.错误 解析:3.一维数组属于构造数据类型。 (分数:2.50)A.正确 B.错误解析:4.一维字符数组就是字符串。 (分数:2.50)A.正确B.错误 解析:5.数组可以通过值参数和引用参数两种方式传递给函数。 (分数:2.50)A.正确B.错误 解析:6.一个数组的数组名与指向该数组的指针是一样的。 (分数:2.50)A.正确B.错误 解析:7.用下标表示数组和用指针表示数组对程序计算速度没有什么影响。 (分数:2.50)A.正确B.错误 解析:8.函数可以返回数组类型的返回值。 (分
18、数:2.50)A.正确B.错误 解析:9.数组的大小必须在编译时确定。 (分数:2.50)A.正确 B.错误解析:10.int 类型数组上唯一允许的整体操作是增量运算和减量运算。 (分数:2.50)A.正确B.错误 解析:11.假设: int v10; 则语句: v6=v2+v4; 更新了该数组中第 6 个元素中的值。 (分数:2.50)A.正确B.错误 解析:12.C+允许在字符串上进行整体操作。 (分数:2.50)A.正确 B.错误解析:13.语句: char vn=“Brown“; 将 vn 定义成一个有 5 个元素的数组,因为“Brown“中含有 5 个字符。 (分数:2.50)A.正
19、确B.错误 解析:14.对指针只要赋给一个地址值就可以了。 (分数:2.50)A.正确B.错误 解析:15.使用没有赋地址值的指针,只有当程序比较长的时候才可能造成系统崩溃。 (分数:2.50)A.正确B.错误 解析:16.带有返回值的函数只能有一个返回值。 (分数:2.50)A.正确B.错误 解析:17.当在用户自定义函数中使用 return 语句时,函数立即终止执行。 (分数:2.50)A.正确 B.错误解析:18.函数的默认参数没有次序要求,可以随意定义。 (分数:2.50)A.正确B.错误 解析:二、选择题(总题数:5,分数:13.00)19.设有如下程序: #include iost
20、ream.h using namespace std; int main() int *x,*y,z=10; y= x= cout*x+1 endl; return 0; 上述程序的输出结果是_。(分数:2.50)A.y 的地址B.z 的地址C.11 D.运行错误解析:20.下面程序的输出结果是_。 int main() int x6=1,3,5,7,9,11,*k,*s; k=x; s= (分数:2.50)A.3, 3B.1, 1C.3, 5D.1, 3 解析:21.考虑下面的函数原型: void testDefaulParam(int a, int b=7, char z=“*“); 下面
21、的函数调用中,不合法的是_。(分数:2.50)A.testDefaulParam(5);B.testDefaulParam(5,8);C.testDefaulParam(6,“#“); D.testDefaulParam(0,0,“*“);解析:22.下面程序的输出结果是_。 #include iostream using namespace std; void fun(int i); int main() int n=2; fun(n); return 0; void fun(int i) static int x=1; int y=1; if(i0) +x; +y; coutx“y; fu
22、n(i-1); (分数:2.50)A.语法错,不能输出正确结果B.2 2 2 2C.2 2 3 3D.2 2 3 2 解析:23.下面程序的输出结果是_。 #include iostream using namespace std; int fun(char *s); int main() coutfun(“Hello“); return 0; int fun(char *s) char *t=s; while(*t!=“/0“)t+; return(t-s); (分数:3.00)A.语法错,不能输出正确结果B.5 C.6D.0解析:三、填空题(总题数:14,分数:42.00)24.下面程序的
23、输出结果是 1。 #include iostream.h using namespace std; int main () int m5, n5, *px, *py, k; px=m; py=n; for(k=1;k4;k+,px+,py+) *px=k; *py=2*k; coutmk-1“ “nk-1endl; px= py= for(k=1; k3; k+) *px+=k; *py*=k; cout *px+“ “ *py+endl; return 0; (分数:6.00)解析:1 2 2 4 3 6 3 4 5 1225.下面程序的输出结果是 1。 #include iostream.
24、h using namespace std; int n 3=10,20,30,40,50,60; int main () int (*p) 3; p=n; cout p0 0 “,“ *(p0+1) “,“ (*p)2endl; return 0; (分数:2.50)解析:10,20,3026.下面程序的输出结果是 1。 #include iostream.h using namespace std; int main() int j; int m3 2=10,20,30,40 ,50 ,60; for(j=0; j2; j+) coutm2-jjendl; return 0; (分数:2.
25、50)解析:50 4027.下面程序的输出结果是 1。 #include iostream.h using namespace std; int x=5,4,3,2,1; int main() int i,*p, m=0; for(p=x,i=1;p+i=x+4;i+) cout*(p+i); for(i=0;i4;i+) m+=pj; cout“/t“m; return 0; (分数:2.50)解析:4 5 9 12 1428.下面程序的输出结果是 1。 #include iostream.h using namespace std; char *x=“First“,“Second“, “T
26、hird“; void f(char *z) cout*+zendl; int main() char *y; y=x; f(y); return 0; (分数:2.50)解析:Second29.定义如下变量和数组: int i; int y2 3=2,4,6,8,10,12; 则下面语句的输出结果是: 1。 for (i=0;i2;i+) couty1-ii+1endl; (分数:2.50)解析:10 630.下面程序的运行结果是: 1。(假设输入的值为24;4) #include iostream.h using namespace std; int Factor(int, int int
27、 main() int number, squared, cubed, error; cout“Enter a number (0-20):“; cinnumber; error=Factor(number, squared, cubed); if(error) cout“Error encountered!/n“; else cout “Number: “number endl; cout “Squared: “squared endl; cout “Cubed:“ cubed endl; return 0; int Factor(int n, int rSquared=n*n; rCube
28、d=n*n*n; return 0; (分数:2.50)解析:Error encountered! Number:4 Squared:16 Cubed:6431.下列函数用来在 x 数组中插入 a 值,x 数组中的数据已由小到大顺序存放,指针 n 所指内存单元中存放数组中数据的个数,插入后数组中的数据仍有序。请将横线处的程序补充完整。 void fun(char* x,char a,int* n) int k,p=0; x*n=a; while(axp) p+; for(k=*n;kp;k-) xk= 1; xp=a; +*n; (分数:3.00)解析:xk-132.若给 f 函数的形参 m
29、传递字符串“4321cde“(表示空格),则函数的返回值是 1。 long f(char m) long a; int s: while(*m=|*m=“/t“| *m=“/n“) m+; s=(*m=“-“?-1:1); if(*m=“+“ | *m=“-1“) m+; for(a=0; *m=“0“m+) a=10*a+(*m-“0“); return s*a; (分数:3.00)解析:432133.函数 m(x,n)计算并返回具有 n 个元素的数组 x 中的最小元素下标。请将横线处程序补充完整。 int m(int* x,int n) int i=0,j; for(j=0;jn;j+)
30、if(xjxi) 1; return i; (分数:3.00)解析:i=j34.下面 f 函数的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位数放在一维数组 y 中返回。二进制的最低位放在下标为 0 的位置上。请将横线处的程序补充完整。 void f(int x,int y) int a=0,b; do b=x% 1; ya+=b; x/=2; while(x); (分数:3.00)解析:235.下面程序的输出结果是 1。 #include iostream using namespace std; const int N=5; int fun(char *s, char a, i
31、nt n); int main() char sN+1; int k,p; for(k=1; k=N; k+) sk=“A“+k+1; coutfun(s,“E“,N)endl; int fun(char *s, char a, int n) int j; *s=a;j=n; while(asj) j-; return j; (分数:3.00)解析:336.下面程序的输出结果是 1。 #include iostream using namespace std; void f(int x) if (x) cout.put(“0“+x% 10); f(x/10); int main() f(110
32、01); return 0; (分数:3.00)解析:1001137.下面程序的输出结果 1。 #include iostream using namespace std; int x; void funA(int void funB(int,int int main() int first; int second=5; x=6; funA(first,second); coutfirst“second“xendl; funB(first,second); coutfirst“second“xendl; return 0; void funA(int first=b+12; a=2*b; b=first+4; void funB(int u,int second=x; v=second+4; x=u+v; (分数:3.00)解析:10 5 6 10 10 20