【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷9及答案解析.doc
《【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷9及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷9及答案解析.doc(11页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(函数和数组)模拟试卷 9及答案解析(总分:60.00,做题时间:90 分钟)一、选择题(总题数:30,分数:60.00)1.有以下程序 #includestdioh func(int n) void main() static int num=1; func(3);func(4);printf(“n“); num=num+n;printf(“d“,num); 程序运行后的输出是(分数:2.00)A.4 5B.3 5C.4 8D.3 42.有以下程序 fun(int x,int y) main() static int m=0,i=2; intj=1,m=1,k; i+=m
2、+1;m=i+x+y;return m; k=fun(j,m);printf(“d,“,k); k=fun(j,m);printf(“dn“,k);执行后的输出结果是(分数:2.00)A.5,5B.5,11C.11,11D.11,53.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是(分数:2.00)A.extern和 registerB.auto和 staticC.static和 registerD.auto和 register4.有以下程序 #includestdioh main()int i,s=1; int fun()static int x=1; for(i=1;i=3;
3、i+) x*=2; s*=fun(); return x; printf(“dn“,s);程序运行后的输出结果是(分数:2.00)A.0B.10C.30D.645.有以下程序 #includestdioh int f(int n); main()int a=3,s; int f(int n)static int a=1; s=f(a); n+=a+: s=s+f(a); return n; printf(“dn“,s); 程序运行后的输出结果是(分数:2.00)A.9B.8C.7D.106.有以下程序 #includestdioh int fun()static int x=1; main()
4、int i,s=l; x+=1; for(i=1;i=5;i+)s+=fun(); return x; printf(“dn“,s);程序运行后的输出结果是(分数:2.00)A.11B.21C.6D.1207.有以下程序 int fun(int x,int n) main() static int sum=0,i; int a=1,2,3,4,5,b=6,7,8,9,s=O; for(i=0;in;i+) sum+=xi; s=fun(a,5)+fun(b,4);printf(“dn“,s); return sum; (分数:2.00)A.50B.45C.60D.558.有以下程序 int f
5、(int m) main()int n=0; static int n=0; printf(“d,“,f(+n); n+=m;return n; printf(“dn“,f(n+);程序运行后的输出结果是(分数:2.00)A.1,1B.1,2C.2,3D.3,39.有以下程序 #includestdioh main() int fun() int i,s=1; static int x=1; for(i=1;i=2;i+)s=fun(); x*=2;return x; printf(“dn“,s);程序运行后的输出结果是(分数:2.00)A.4B.1C.0D.810.有下列程序: int a=
6、4: int f(int n) main() int t=0;static int a=5; int s=a,i=0; if(n2)int a=6;t+=a+; for(;i2;i+)s+=f(i); elseint a=7;t+=a+; printf(“dn“,s); return t+a+; 程序运行后的输出结果是(分数:2.00)A.28B.24C.32D.3611.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是(分数:2.00)A.数组 a和 b长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度D.上述说法都不对12.若有语句:char*li
7、ne5;,以下叙述中正确的是(分数:2.00)A.定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量B.定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组C.定义 line是一个指针数组,语句中的*号称为间址运算符D.定义 line是一个指向字符型函数的指针13.若有定义语句:int m=5,4,3,2,1),i=4;,则下面对 m数组元素的引用中错误的是(分数:2.00)A.m-iB.m2*2C.mm0/D.mmi/14.若有定义语句:double x5=10,20,30,40,50,*p=x;则错误引用 x数组元素的是(分数:2.00)A.*PB.
8、x5C.*(p+1)D.*x15.若要定义一个具有 5个元素的整型数组,以下错误的定义语句是(分数:2.00)A.int a5=0;B.int b=0,0,0,0,0;C.int c2+3D.int i=5,di;16.以下能正确定义一维数组的选项是(分数:2.00)A.int a5=0,1,2,3,4,5;B.char a=0,1,2,3,4,5;C.char a=A,B,C;D.int a5=“0123“;17.有以下程序 void fun(int a,int n)int i,t;for(i=0;in2;i+) t=ai; ai=an1i; an1i=t; main() int k10=1
9、,2,3,4,5,6,7,8,9,10,i; fun(k,5); for(i=2;i8;i+)printf(“d“,ki); printf(“n“); 程序的运行结果是(分数:2.00)A.876543B.321678C.1098765D.34567818.下列定义数组的语句中,正确的是(分数:2.00)A.int N=10;int xN;B.#define N 10 int xN;C.int x010;D.int x;19.有以下程序 #includestdioh void main() int a=2,3,5,4,i; for(i=0;i4;i+) switch(i2) case 0:sw
10、itch(ai2) case 0:ai+;break; case 1:ai-; break; case 1:ai=0; for(i=0;i4;i+) printf(“d“,ai); printf(“n“);程序运行后的输出结果是(分数:2.00)A.2 0 5 0B.3 3 4 4C.3 0 4 0D.0 3 0 420.有以下程序 #includestdioh main() void fun(int a,int b) int c10=1,2,3,4,5,6,7,8,9,0),i; int t: for(i=0;i10;i+=2) t=a;a=b;b=t; fun(ci,ci+1); for(
11、i=0;i10;i+)printf(“d,“,ci); printf(“n“);程序的运行结果是(分数:2.00)A.2,1,4,3,6,5,8,7,0,9,B.0,9,8,7,6,5,4,3,2,1,C.1,2,3,4,5,6,7,8,9,0,D.0,1,2,3,4,5,6,7,8,9,21.有下列程序: main() int i,s=0,t=1,2,3,4,5,6,7,8,9; for(i=0;i9;i+=2)s+=*(t+i); printf(“dn“,s); 程序执行后的输出结果是(分数:2.00)A.20B.45C.36D.2522.下列选项中,能正确定义数组的语句是(分数:2.00
12、)A.int num;B.int N=2008;int numN;C.int num02008;D.#define N 2008 int numN;23.若要求定义具有 10个 int型元素的一维数组 a,则以下定义语句中错误的是(分数:2.00)A.#define n 5 int a2*n;B.int a5+5;C.#define N 10 int aN;D.int n=10,an;24.下列程序中函数 f的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序 void f(int b,int n,int flag) main() int i,j,t; in
13、t a10=5,4,3,2,1,6,7,8,9,10,i; for(i=0;in1;i+) f&a2,5,0); for(j=i+1;jn;j+) f(a,5,1); if(flag?bibj:bibj) for(i=0;i10;i+) t=bi;bi=bj;bj=t; printf(“d,“,ai); 程序运行后的输出结果是(分数:2.00)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,25.有以下程序 #includestdioh main() int
14、s12=1,2,3,4,4,3,2,1,1,1,2,3),c5=0,i; for(i=0;i12;i+)csi/+; for(i=1;i5;i+)printf(“d“,ci); printf(“n“);(分数:2.00)A.4 3 3 2B.2 3 4 4C.1 2 3 4D.1 1 2 326.有下列程序: #includestdioh *fun 函数的功能是将 a所指数组元素从大到小排序* void fun(int*a,int n) main() int t,i,j; int c10=1,2,3,4,5,6,7,8,9,0),i; for(i=0;in1;j+) fun(c+4,6); f
15、or(j=i+1;jn;j+) for(i=0;i10;i+)printf(“d,“,ci); if(aiaj)t=ai;ai=aj;aj=t;p printf(“n“); 程序的运行结果是(分数:2.00)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,27.有以下程序 #includestdioh main() int c6=10,20,30,40,50,60,*p,*s; p=c; s=&c5; printf(“dn“,s-P);程序运行后的输出结果是(分数:2
16、.00)A.50B.6C.5D.6028.以下叙述中正确的是(分数:2.00)A.一条语句只能定义一个数组B.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式C.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元D.在引用数组元素时,下标表达式可以使用浮点数29.以下叙述中正确的是(分数:2.00)A.语句 int a=0;是不合法的,遗漏了数组的大小B.语句 char a2=“A“,“B“;是合法的,定义了一个包含两个字符的数组C.语句 int a8=0;是合法的D.语句 char a3;a=“AB“;是合法的,因为数组有三个字符空间的容量,可以保存两个字符30
17、.如果定义 float a10,x;则以下叙述中正确的是(分数:2.00)A.表达式 a+1是非法的B.语句 a=&x;是非法的C.三个表达式 a1、*(a+1)、*&a1表示的意思完全不同D.表达式*&a1是非法的,应该写成*(&(a1)国家二级 C语言机试(函数和数组)模拟试卷 9答案解析(总分:60.00,做题时间:90 分钟)一、选择题(总题数:30,分数:60.00)1.有以下程序 #includestdioh func(int n) void main() static int num=1; func(3);func(4);printf(“n“); num=num+n;printf
18、(“d“,num); 程序运行后的输出是(分数:2.00)A.4 5B.3 5C.4 8 D.3 4解析:解析:在函数 func(int n)中定义了局部静态变量 num,其初始值等于 1,所以在主函数中执行func(3),输出 4,此时静态变量 num的值等于 4,当退出函数 func(3)时,其值不会丢失,所以当在执行func(4)时,输出 8。2.有以下程序 fun(int x,int y) main() static int m=0,i=2; intj=1,m=1,k; i+=m+1;m=i+x+y;return m; k=fun(j,m);printf(“d,“,k); k=fun(
19、j,m);printf(“dn“,k);执行后的输出结果是(分数:2.00)A.5,5B.5,11 C.11,11D.11,5解析:解析:子函数 fun(int x,int y),将变量 m和 i声明为局部静态变量,因此第 1次调用主函数后,局部静态变量 m和 i的值为 5和 3,第 1次函数调用结束时,它们的值不释放保持不变,所以第 2次调用时,局部静态变量 m和 i的初始值分别为 5和 3,即在执行“i+=m+1”时,i 的值为 9,因此最终 m的值为 11。3.在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是(分数:2.00)A.extern和 registerB.auto和
20、 staticC.static和 registerD.auto和 register 解析:解析:在 C语言中,动态变量(auto)存储在内存中的动态存储区,在程序运行中,只有当调用变量所在的函数时,系统才临时给变量分配内存单元;全局变量(extern)一经定义,系统为其分配固定的内存单元:静态变量(static),编译系统为其分配固定的存储空间;寄存器变量(register)不保存在内存上,而是直接存储在 CPU的寄存器中。4.有以下程序 #includestdioh main()int i,s=1; int fun()static int x=1; for(i=1;i=3;i+) x*=2;
21、 s*=fun(); return x; printf(“dn“,s);程序运行后的输出结果是(分数:2.00)A.0B.10C.30D.64 解析:解析:本题考查了静态局部变量,该局部变量的值在函数调用结束后如果不消失而保留原值。函数凡 n的功能返回 2的乘方,主函数 fun函数调用 3次,因此第一次 s累乘 2,第二次累乘 4,第三次累乘8,即为 2*4*8,值为 64。5.有以下程序 #includestdioh int f(int n); main()int a=3,s; int f(int n)static int a=1; s=f(a); n+=a+: s=s+f(a); retu
22、rn n; printf(“dn“,s); 程序运行后的输出结果是(分数:2.00)A.9 B.8C.7D.10解析:解析:在主函数中第一次调用 f(a)时,得到变量 s的值等于 4,在第二次调用 f(a)时,在子函数f中由于变量 a是一个局部静态变量,所以这次其值等于 2,因而在主函数中第二次调用 f(a)后,其返回值等于 5,最后变量 s的值等于 9。6.有以下程序 #includestdioh int fun()static int x=1; main()int i,s=l; x+=1; for(i=1;i=5;i+)s+=fun(); return x; printf(“dn“,s);
23、程序运行后的输出结果是(分数:2.00)A.11B.21 C.6D.120解析:解析:这道试题主要考查了局部静态变量的应用。在函数 fun()中定义了局部静态变量整型 x,其初值等于 1,在主函数中循环执行 5次,第一次变量 s的值等于 3,变量 x的值等于 2,第二次变量 s的值等于 6,变量 x的值等于 3,第三次变量 s的值等于 10,变量 x的值等于 4,第四次变量 s的值等于15,变量 x的值等于 5,第五次变量 s的值等于 21,变量 x的值等于 6。7.有以下程序 int fun(int x,int n) main() static int sum=0,i; int a=1,2,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 函数 数组 模拟 试卷 答案 解析 DOC
