【计算机类职业资格】二级C语言-112及答案解析.doc

上传人:eventdump275 文档编号:1324862 上传时间:2019-10-17 格式:DOC 页数:27 大小:93KB
下载 相关 举报
【计算机类职业资格】二级C语言-112及答案解析.doc_第1页
第1页 / 共27页
【计算机类职业资格】二级C语言-112及答案解析.doc_第2页
第2页 / 共27页
【计算机类职业资格】二级C语言-112及答案解析.doc_第3页
第3页 / 共27页
【计算机类职业资格】二级C语言-112及答案解析.doc_第4页
第4页 / 共27页
【计算机类职业资格】二级C语言-112及答案解析.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、二级 C 语言-112 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:41,分数:100.00)1.若有代数式 (分数:2.00)A.sqrt(fabs(pow(n,x)+exp(x)B.sqrt(fabs(pow(n,x)+pow(x,e)C.sqrt(abs(nx+ex)D.sqrt(fabs(pow(x,n)+exp(x)2.以下叙述中错误的是_。(分数:2.00)A.可以给指针变量赋一个整数作为地址值B.函数可以返回地址值C.改变函数形参的值,不会改变对应实参的值D.当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL3.有以下程序: #

2、include stdio.h int a =4; int f(int n) int t = 0; static int a=5; if (n%2) int a=6; t + = a+ +; else int a=7; t + = a+ +; return t + a+ +; main( ) int s=a, i=0; for (; i2;i+ +) s + = f(i); printf(“%d/n“, s) ; 程序运行后的输出结果是_。(分数:2.50)A.36B.24C.32D.284.有以下程序: #include stdio.h int f(int n) int t = 0, a=5

3、; if (n/2) int a=6; t + = a+ +; else int a=7; t + = a+ +; return t + a+ +; main( ) int s=0, i=0; for (; i2;i+ +) s + = f(i); printf( “ % d/n“ , s) ; 程序运行后的输出结果是_。(分数:2.50)A.28B.24C.32D.365.若有以下程序: #include stdio.h int a=2; int f(int m) static int n; n=0; n+ +; a+ +; return n+m+a; main( ) int k; for

4、(k=0; k4; k+ +) printf(“%d,“,f(k); 则程序的输出结果是_。(分数:2.50)A.4,5,6,7,B.4,7,10,13,C.4,6,8,10,D.3,5,7,9,6.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是_。(分数:1.00)A.丙数的形参和实参分别占用不同的存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的实参和其对应的形参共占同一存储单元7.以下叙述中错误的是_。(分数:2.50)A.C 程序必须由一个或一个以上的函数组成B.函数调用可以作为一个独立的语句存在C.若函数有返回值,必须

5、通过 return 语句返回D.函数形参的值也可以传回给对应的实参8.以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。#include stdio.h void f(int b, int n, int flag) int i,j,t; for (i=0; in-1; i+ +) for (j=i+1; jn; j+ +) if (flag ? bibj : bibj) t=bi; bi=bj; bj=t; main( ) int a10=5,4,3,2,1,6,7,8,9,10,i; f( f(a,5,1); for(i=0

6、;i10;i+ +) printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:2.50)A.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8,9,10,C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,9.以下关于 return 语句的叙述中正确的是_。(分数:2.50)A.一个自定义函数中必须有一条 return 语句B.一个自定义函数中可以根据不同情况设置多条 return 语句C.定义成 void 类型的函数中可以有带返回值的 return 语句D.没有 return 语句的自定义函数在执行结束时不能返回

7、到调用处10.已定义以下函数: int fun(int *p) return *p; fun 函数返回值是_。(分数:2.50)A.一个整数B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值11.以下叙述中错误的是_。(分数:2.50)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式12.若各选项中所用变量已正确定义,函数 fun 中通过 return 语句返回一个函数值,以下选

8、项中错误的程序是_。(分数:2.50)A.main ( ) . x=fun(2,10); .float fun(int a,int B) .B float fun (int a,intB.t .main( ). x=fun(i,j); .C.float fun(int ,int);main ( ) . x=fun(2,10); .float fun(int a,int ).D.main( ) float fun(int i,int j);. x=fun(i,j); .float fun(int a,int B) .13.有以下程序: #include stdio.h void fun( int

9、 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“ ); 程序的运行结果是_。(分数:2.50)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,7,8,9,14.有以下程序: #include stdio

10、.h double f(double x); main( ) double a=0; int i; for(i=0; i30; i+ =10) a+ =f(double)i); printf(“%3.0f/n“,a); double f(double x) return x*x+1; 程序运行后的输出结果是_。(分数:2.50)A.500B.401C.503D.140415.有以下程序: #include stdio.h main( ) int m=1,n=2,*p= r=p; p=q; q=r; printf(“%d,%d,%d,%d/n“,m,n,*p,*q); 程序运行后的输出结果是_。

11、(分数:2.50)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,116.有以下程序: #include stdio.h void f(int *q) int i=0; for( ;i5;i+ +)(*q)+ +; main( ) int a5=1,2,3,4,5,i; f(a); for(i=0;i5;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:2.50)A.6,2,3,4,5,B.2,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,17.有以下程序: #include stdio.h void fun(int *a,in

12、t *b) int * c; c=a; a=b;b=c; main( ) int x=3,y=5,*p= fun(p,q); printf(“%d,%d,“,*p,*q); fun( printf(“%d,%d/n“,*p,*q); 程序运行后的输出结果是_。(分数:2.50)A.3,5,3,5B.3,5,5,3C.5,3,3,5D.5,3,5,318.有以下程序: #include stdio.h void fun(int *a, int n)/* fun 函数的功能是将 a 所指数组元素从大到小排序*/ int t,i,j; for (i=0; in-1;i+) for(j=i+1;jn;

13、j+) if(aiaj) t=ai;ai=aj;aj=t; main( ) int c10=1,2,3,4,5,6,7,8,9,0,i; fun(c+4,6); for(i=0;i10;i+ +) printf(“%d,“,ci); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.1,2,3,4,9,8,7,6,5,0,B.0,9,8,7,6,5,1,2,3,4,C.0,9,8,7,6,5,4,3,2,1,D.1,2,3,4,5,6,7,8,9,0,19.若有以下程序: #include stdio.h void sp(int *a) int b=2; *a=*a*2;

14、printf(“%d,“,*a); a= *a=*a*2; printf(“%d,“,*a); main( ) int k=3; sp( printf(“%d/n“,k); 则程序的输出结果是_。(分数:2.50)A.6,12,12B.6,4,3C.6,4,6D.9,4,920.若有以下程序: #include stdio.h int *f(int *s, int *t) int k; if(*s*t) k=*s; *s=*t; *t=k; return s; main( ) int i=3,j=5, *p= r=f(p,q); printf(“%d,%d,%d,%d,%d/n“,i,j,*p

15、,*q,*r);; 则程序的输出结果是_。(分数:2.50)A.5,3,3,5,5B.3,5,5,3,5C.3,5,3,5,5D.5,3,5,3,521.有以下程序: #include stdio.h int funa(int a,intB)return a+b; int funb(int a,intB)return a-b; int sss(int(*t)(),int x,int y)retllrn(*t)(x,y); main( ) int x; x=sss(funa, 9,3); x+=sss(funb,8,3); printf(“%d/n“,x); 程序运行后的输出结果是_。(分数:2

16、.50)A.24B.23C.17D.2222.有以下程序: #include stdio.h void fun(int a,int b,int c) a=b; b=c; c=a; main( ) int a=10, b=20, c=30; fun(a,b,c); printf(“%d,%d,%d/n“,c,b,a); 程序运行后的输出结果是_。(分数:2.50)A.10,20,30B.30,20,10C.20,30,10D.0,0,023.若有以下函数首部: int fun(double x10, int *n) 则下面针对此函数的函数声明语句中正确的是_。(分数:2.50)A.int fun

17、(double, int);B.int fun(double *, int *);C.int fun(double *x, int n);D.int fun(double x, int *n);24.有以下程序: #include stdio.h int f(int x); main( ) int n=1,m; m=f(f(f(n); printf(“%d/n“,m); int f(int x) return x*2; 程序运行后的输出结果是_。(分数:2.50)A.8B.2C.4D.125.有以下程序: #include stdio.h int fun(int x, int y) if(x!

18、=y) return (x+y)/2); else return (x); main( ) int a=4, b=5, c=6; printf(“%d/n“, fun(2*a,fun(b,c); (分数:2.50)A.6B.3C.8D.1226.有以下程序: #include stdio.h int f(int x,int y) return(y-x)*x); main( ) int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c); printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:2.50)A.7B.10C.8D.927.以下叙述中正确的是_。(分数:2

19、.50)A.如果函数带有参数,就不能调用自己B.所有函数均不能接受函数名作为实参传入C.函数体中的语句不能出现对自己的调用D.函数名代表该函数的入口地址28.设有如下函数定义: #include stdio.h int fun(int k) if(k1) return 0; else if(k= =1) return 1; else return fun(k-1)+1; 若执行调用语句:n=fun(3);,则函数 fun 总共被调用的次数是_。(分数:2.50)A.2B.3C.4D.529.有以下程序: #include stdio.h int f(int x) int y; if(x = =

20、0 | x= =1) return(3); y = x*x -f(x-2); return y; main( ) int z; z=f(3); printf(“%d/n“,z); 程序的运行结果是_。(分数:2.50)A.0B.9C.6D.830.有以下程序: #include stdio.h int fun(int n) if(n= =1) return 1; else return(n+fun(n-1); main( ) int x; seanf(“%d“, x=fun(x); printf(“%d/n“,x); 执行程序时,给变量 X 输入 10,程序的输出结果是_。(分数:2.50)A

21、.55B.54C.65D.4531.有以下程序: #nclude stdio.h void f(int b) int i; for(i=2;i6; i+ +) bi* = 2; main( ) int a10=1,2,3,4,5,6,7,8,9,10,i; f(a); for (i=0; i10; i+ +) printf(“%d,“, ai); 程序运行后的输出结果是_。(分数:2.50)A.1,2,3,4,5,6,7,8,9,10,B.1,2,6,8,10,12,7,8,9,10,C.1,2,3,4,10,12,14,16,9,10,D.1,2,6,8,10,12,14,16,9,10,3

22、2.有以下程序: #include stdio.h void fun2(char a,charB) pfinff(“%c%c“,a,b); char a=“A“, b=“B“; void fun1() a=“C“; b=“D“; main( ) fun1(); printf(“%c%c“,a,b); fun2(“E“,“F“); 程序的运行结果是_。(分数:2.50)A.A B E FB.C D E FC.A B C DD.C D A B33.若有以下程序: #include stdio.h char *a=“you“; char b=“Welcome you to China!“; main

23、( ) int i,j=0; char *p; for (i=0; bi!=“/0“;i + +) if(*a= =bi) p=a; for(j=i; *p!=“/0“;j+ +) if(*p! =bj) break; P+; if(*p= =“/0“) break; printf(“%s“, 则程序的输出结果是_。(分数:2.50)A.China!B.to China!C.me you to China!D.you to China!34.若有以下程序: #include stdio.h char *a=“you“, b=“welcome#you#to#China!“; main( ) t

24、int i,j=0; char *p; for (i=0; bi!=“/0“; i+ +) if(sa= =bi) p= for(j=0; aj!=“/0“;j+ +) if(aj!=*p) break; p+; if (aj= =“/0“) break; printf(“%s/n“,p); 则程序的输出结果是_。(分数:2.50)A.#to#China!B.#you#to#China!C.me#you#to#China!D.#China!35.以下叙述中正确的是_。(分数:2.50)A.局部变量不能被说明为 staticB.只有全局变量才有自己的作用域,函数中的局部变量没有作用域C.只有在函

25、数内部定义的变量才是局部变量D.只要是用户定义的标识符,都有一个有效的作用域36.在一个 C 源程序文件中定义的全局变量,其作用域为_。(分数:2.50)A.由具体定义位置和 extern 说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围37.在 C 语言中,只有在使用时才占用内存单元的变量,其存储类型是_。(分数:2.50)A.auto 和 staticB.extern 和 registerC.auto 和 registerD.static 和 register38.有以下程序: #include stdio.h fun(int x,int y) static

26、 int m=0, i=2; i+=m+1; m=i+x+y; return m; main( ) int j=1, m=1, k; k=fun(j,m); printf(“%d,“,k); k=fun(j,m); printf(“%d/n“,k); 执行后的输出结果是_。(分数:2.50)A.5,11B.5,5C.11,11D.11,539.有以下程序: #include stdio.h int fun() static int x=1; x*=2; return x; main( ) int i,s=1; for(i=1; i=3; i+ +) s*=fun(); printf(“%d/n

27、“,s); 程序运行后的输出结果是_。(分数:2.50)A.10B.30C.0D.6440.有以下程序: #include stdio.h int f(int n); main( ) int a=3, s; s=f(a);s=s+f(a);printf(“%d/n“,s); int f(int n) static int a=1; n + =a+ +; return n; 程序运行后的输出结果是_。(分数:2.50)A.9B.8C.7D.1041.有以下程序: #include stdio.h int fun() static int x=1; X+ =1; return x; main( )

28、 int i, s=1; for(i=1;i=5;i+ +) s+ =fun(); printf(“%d/n“,s); 程序运行后的输出结果是_。(分数:2.50)A.120B.11C.6D.21二级 C 语言-112 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:41,分数:100.00)1.若有代数式 (分数:2.00)A.sqrt(fabs(pow(n,x)+exp(x) B.sqrt(fabs(pow(n,x)+pow(x,e)C.sqrt(abs(nx+ex)D.sqrt(fabs(pow(x,n)+exp(x)解析:解析 B 选项中,函数 pow(x,e)

29、错误,应该直接使用 exp(x)函数。C 选项中,函数 abs(nx+ex)错误,应该使用 fabs()返回浮点数的绝对值。D 选项中,pow(x,n)参数腰序错误。2.以下叙述中错误的是_。(分数:2.00)A.可以给指针变量赋一个整数作为地址值 B.函数可以返回地址值C.改变函数形参的值,不会改变对应实参的值D.当在程序的开头包含头文件 stdio.h 时,可以给指针变量赋 NULL解析:解析 不能将一个整数直接赋给指针变量作为地址,所以 A 选项是错误的。函数的返回值可以是地址,印指针。函数调用中形参值的变化不会传递给实参。3.有以下程序: #include stdio.h int a

30、=4; int f(int n) int t = 0; static int a=5; if (n%2) int a=6; t + = a+ +; else int a=7; t + = a+ +; return t + a+ +; main( ) int s=a, i=0; for (; i2;i+ +) s + = f(i); printf(“%d/n“, s) ; 程序运行后的输出结果是_。(分数:2.50)A.36B.24C.32D.28 解析:解析 在主函数 main( )中定义了两个变量 s 和 i,同时给 s 赋初值。a=4,i 赋初值 0。当 i=0 时。执行“s+=f(i);

31、”语句,调用 f()并将 i 的初值 0 传递给形参 n。首先执行 if 语句中的条件:n%2,若条件为假,则执行 else 下的语句,a=7,t=7+0=7,使用 return 返回 t,t=7+(a+)=7+5=12,此时 a 运算完后自增 1,变为 6;返回主函数中,s=4+12=16。当 i=1 时,执行“s+=f(i);”语句,调用 f()并将 i 的初值传递给形参 n。首先执行 if 语句中的条件:n%2,条件为真,执行 if 下面的语句,t=0,a=6 t=0+6=6,使用 return 返回 t,t=6+6=12,返回主函数中,s=16+12=28。最后输出的结果为 28。因此

32、 D 选项正确。4.有以下程序: #include stdio.h int f(int n) int t = 0, a=5; if (n/2) int a=6; t + = a+ +; else int a=7; t + = a+ +; return t + a+ +; main( ) int s=0, i=0; for (; i2;i+ +) s + = f(i); printf( “ % d/n“ , s) ; 程序运行后的输出结果是_。(分数:2.50)A.28B.24 C.32D.36解析:解析 在主函数 main( )中定义了两个变量 s 和 i,同时给 s 和 i 赋初值 0。当

33、i=0 时,执行“s+=f(i);”语句,调用 f()并将 i 的初值 0 传递给形参 n。首先执行 if 语句中的条件:n/2,条件为假,则执行 else 下的语句,a=7,t=7+0=7,使用 return 返回 t,t=7+(a+)=7+5=12,此时 a 运算完后自增1,变为 6;返回主函数中,s=0+12=12。当 i=1 时,执行“s+=f(i);”语句,调用 f()并将 i 的初值 1 传递给形参 n。首先执行 if 语句中的条件:n/2,条件为真,执行 if 下面的语句,t=0,a=6 t=0+6=6,使用 return 返回 t,t=6+6=12,返回主函数中,s=12+12

34、=24。最后输出的结果为 24。因此 B 选项正确。5.若有以下程序: #include stdio.h int a=2; int f(int m) static int n; n=0; n+ +; a+ +; return n+m+a; main( ) int k; for (k=0; k4; k+ +) printf(“%d,“,f(k); 则程序的输出结果是_。(分数:2.50)A.4,5,6,7,B.4,7,10,13,C.4,6,8,10, D.3,5,7,9,解析:解析 主函数中变量 k 作为 for 语句的循环变量,取值 0、1、2、3,同时也作为实参通过调用函数 f 传递给形参

35、变量 m。由于变量 a 是全局变量,变量 n 静态变量,因此 k=0 时,f 函数中,语句returnm n+m+a;即 1+0+3=4;k=1 时,f 函数中,语句 retrun n+m+a;即 2+1+3=6;k=2 时,f 函数中,语句return n+m+a;即 3+2+3=8; k=3 时,f 函数中,语句 retun n+m+a;即 4+3+3=10。因此 C 选项正确。6.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是_。(分数:1.00)A.丙数的形参和实参分别占用不同的存储单元 B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元

36、D.函数的实参和其对应的形参共占同一存储单元解析:解析 本题重点考查的是函数的形参和实参。在定义函数时,函数名后面括弧中的变量名称为形式参数(简简形参);在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为实际参数(简称实参)。C 语言中规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。因此 A 选项正确。7.以下叙述中错误的是_。(分数:2.50)A.C 程序必须由一个或一个以上的函数组成B.函数调用可以作为一个独立的语句存在C.若函数有返回值,必须通过 return 语句返

37、回D.函数形参的值也可以传回给对应的实参 解析:解析 形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的数据。在 C 语言中,实参向形参传送数据的方式是“值传递”。因此 D 选项正确。8.以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。#include stdio.h void f(int b, int n, int flag) int i,j,t; for (i=0; in-1; i+ +) for (j=i+1; jn; j+ +) if (flag ? bibj : bibj) t=b

38、i; bi=bj; bj=t; main( ) int a10=5,4,3,2,1,6,7,8,9,10,i; f( f(a,5,1); for(i=0;i10;i+ +) printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:2.50)A.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8,9,10, C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,解析:解析 本题重点考查函数的参数传递。函数的参数传递分为传值和传地址两种情况。本题就是结合数组考查参数传递的情形。函数 f 完成的功能是对数据进行排序,语句

39、f( fun 函数返回值是_。(分数:2.50)A.一个整数 B.不确定的值C.形参 p 中存放的值D.形参 p 的地址值解析:解析 返回值为指针变量指向的数据,该数据已被定义为整型。因此 A 选项正确。11.以下叙述中错误的是_。(分数:2.50)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式解析:解析 本题重点考查函数返回值的相关知识。函数的值只能通过 return 语句返回主调函

40、数,在函数中允许有多个 return 语句,但每次调用只能有一个 return 语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此 B 选项正确。12.若各选项中所用变量已正确定义,函数 fun 中通过 return 语句返回一个函数值,以下选项中错误的程序是_。(分数:2.50)A.main ( ) . x=fun(2,10); .float fun(int a,int B) .B float fun (int a,int B.t .main( ). x=fun(i,j); .C.float fun(int ,int);main

41、( ) . x=fun(2,10); .float fun(int a,int ).D.main( ) float fun(int i,int j);. x=fun(i,j); .float fun(int a,int B) .解析:解析 在调用子函数时,应对其进行说明。A 选项中,调用时,没有对子函数进行说明。B 选项和C 选项中,被调用函数在主调函数之前定义,不用说明;D 选项中,在主函数中对被调用函数的返回值类型进行了说明。因此 A 选项正确。13.有以下程序: #include stdio.h void fun( int a, int b ) int t; t=a; a=b; b=t;

42、 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“ ); 程序的运行结果是_。(分数:2.50)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,7,8,9,解析:解析 函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此

43、在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组 c 中的元素的值并没有变化,故选择 A。14.有以下程序: #include stdio.h double f(double x); main( ) double a=0; int i; for(i=0; i30; i+ =10) a+ =f(double)i); printf(“%3.0f/n“,a); double f(double x) return x*x+1; 程序运行后的输出结果是_。(分数:2.50)A.500B.401C.503 D.1404解析:解析 本题重点考查函数的定义和调用。第一次循环,a=0,i=0,

44、返回值 a=0*0+1=1;第二次循环,a=1,i=10,返回值 a=10*10+1+1=102;第三次循环,a=102,i=20,返回值 a=20*20+1+102=503;第四次循环,a=503,i=30,不符合 j30,跳出循环,最后结果输出 a=503。15.有以下程序: #include stdio.h main( ) int m=1,n=2,*p= r=p; p=q; q=r; printf(“%d,%d,%d,%d/n“,m,n,*p,*q); 程序运行后的输出结果是_。(分数:2.50)A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1 解析:解析 语句

45、int m=1,n=2,* p=表示指针变量 p 指向 m,指针变量 q 指向 n;语句r=p;p=q;q=r;表示通过指针变量 r,将指针 p 和指针 q 指向交换。因此最后输出 1,2,2,1。16.有以下程序: #include stdio.h void f(int *q) int i=0; for( ;i5;i+ +)(*q)+ +; main( ) int a5=1,2,3,4,5,i; f(a); for(i=0;i5;i+)printf(“%d,“,ai); 程序运行后的输出结果是_。(分数:2.50)A.6,2,3,4,5, B.2,2,3,4,5,C.1,2,3,4,5,D.

46、2,3,4,5,6,解析:解析 本题考查的是函数的地址调用。将数组名作为数组首地址进行传递,然后取数据元素值进行加 1 运算。因此 A 选项正确。17.有以下程序: #include stdio.h void fun(int *a,int *b) int * c; c=a; a=b;b=c; main( ) int x=3,y=5,*p= fun(p,q); printf(“%d,%d,“,*p,*q); fun( printf(“%d,%d/n“,*p,*q); 程序运行后的输出结果是_。(分数:2.50)A.3,5,3,5 B.3,5,5,3C.5,3,3,5D.5,3,5,3解析:解析 fun 函数的功能是交换形式参数的值,即交换指针变量 a 和 b 的值。但是 fun 函数并不能够交换实参的值,因此 fun(p,q)不能交换 p 和 q 的值,所以第一个 printf 语句的输出为 3,5。第二个fan 函数对 x 和 y 的地址进行了操作,同样不能交换 x 和 y 的值,但并不影响 p 和 q 指针指向的数据,因此第二个 printf 语句的输出也是 3,5。因此 A 选项正确。18.有以下程序: #include stdio.h void fun(int *a, int n)/* fun 函数的功能是将 a 所指数组元素从

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1