【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷14及答案解析.doc
《【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷14及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷14及答案解析.doc(10页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(函数和数组)模拟试卷 14及答案解析(总分:56.00,做题时间:90 分钟)一、选择题(总题数:28,分数:56.00)1.在一个 C源程序文件中所定义的全局变量,其作用域为(分数:2.00)A.由具体定义位置和 extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围2.有以下程序 void fun2(char a,char b) main() printf(“cc“,a,b); fun1(); char a=A,b=B;printf(“cc“,a,b); void fun1() fun2(E,F); a=C;b=D; 程序的运行结
2、果是(分数:2.00)A.A B E FB.C D E FC.A B C DD.C D A B3.有以下程序 #include main() int k:4,m=1,p: fun(int a,int b)int static m=0,i=2;p=fun(k,m); i=i+m+1;printf(“0d,“,p); m=i+a+b;p=fun(k,m); return m;printf(“dn“,p); 程序运行后的输出结果是(分数:2.00)A.8,17B.7,16C.8,8D.7,174.有以下程序 #include func(int n) void main() static int nu
3、m=1; func(3);func(4);printf(“n“); num=num+n;printf(“d“,num); 程序运行后的输出是(分数:2.00)A.45B.35C.48D.345.有以下程序 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(j,m);printf(“dn“,k); 执行后的输出结果是(分数:2.00)A.5,5B.5,11C.11,11D.11,56.在 C语言中,只有在使用时才占用
4、内存单元的变量,其存储类型是(分数:2.00)A.extern和 registerB.auto和 staticC.static和 registerD.auto和 register7.有以下程序 #include main()int i,s=1: int fun()static int x=1; for(i=l;i=3;i+) x*=2; s*=fun(); return x; printf(“dn“,s); 程序运行后的输出结果是(分数:2.00)A.0B.10C.30D.648.有以下程序 #include int flint n); main()int a=3,s; int flint n
5、)static int a=1; s=f(a);n+=a+; s=s+f(a); return n; printf(“dn“,s); 程序运行后的输出结果是(分数:2.00)A.9B.8C.7D.109.有以下程序 #include int fun()static int x=1; main()int i,s=1; x+=1; for(i=1;i=5;i+)s+=fun(); return x;printf(“dn“,s); 程序运行后的输出结果是(分数:2.00)A.11B.21C.6D.12010.有以下程序 int fun(int x,int n) main() static int s
6、um=0,i; int a=1,2,3,4,5,b=6,7,8,9,s=0; for(i=0;iA.50B.45C.60D.5511.有以下程序 int f(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.11B.1,2C.2,3D.3,312.有以下程序 #include main() int fun() int i,s=1; static int x=1: for(i=1;iA.4B.1C.0D.813.有下列程序:
7、 int a=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(;iA.28B.24C.32D.3614.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是(分数:2.00)A.数组 a和 b长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度D.上述说法都不对15.若有语句:char*line5;,以下叙述中正确的是(分数:2.00)A.定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量B.定义 line是一个指
8、针变量,该变量可以指向一个长度为 5的字符型数组C.定义 line是一个指针数组,语句中的*号称为间址运算符D.定义 line是一个指向字符型函数的指针16.若有定义语句:int m=5,4,3,2,1,i=4;,则下面对 m数组元素的引用中错误的是(分数:2.00)A.m-iB.m2*2C.mm0/D.mmi/17.若有定义语句:double x5=10,20,30,40,50,*p=x;则错误引用 x数组元素的是(分数:2.00)A.*pB.x5C.*(p+1)D.*x18.若要定义一个具有 5个元素的整型数组,以下错误的定义语句是(分数:2.00)A.int a5=0;B.int b=0
9、,0,0,0,0;C.int c2+3D.int i=5,di;19.以下能正确定义一维数组的选项是(分数: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“;20.有以下程序 void fun(int a,int n)int i,t;for(i=0;in2;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(“
10、n“); 程序的运行结果是(分数:2.00)A.876543B.321678C.1098765D.34567821.下列定义数组的语句中,正确的是(分数:2.00)A.int N=10;int xN;B.#define N 10 int xN;C.int x010;D.int x;22.有以下程序 #include void main() int a=2,3,5,4,i; for(i=0;iA.2 0 5 0B.3 3 4 4C.3 0 4 0D.0 3 0 423.有以下程序 #include main() void fun(int a,int b) int c10=1,2,3,4,5,6,
11、7,8,9,0),i; int t; for(i=0;iA.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,24.有下列程序: main() int i,s=0,t=1,2,3,4,5,6,7,8,9; for(i=0;iA.20B.45C.36D.2525.下列选项中,能正确定义数组的语句是(分数:2.00)A.int num;B.int N=2008;int numN;C.int num02008;D.#define N 2008 int numN;26.若要求定义具
12、有 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;27.下列程序中函数 f的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序 void flint b,int n,int flag) main() int ij,t; int a10=5,4,3,2,1,6,7,8,9,10,i; for(i=0;ibj:biA.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8
13、,9,10,C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,28.有以下程序 #include main() int s12=1,2,3,4,4,3,2,1,1,1,2,3),c5=0,i; for(i=0;iA.4 3 3 2B.2 3 4 4C.1 2 3 4D.1 1 2 3国家二级 C语言机试(函数和数组)模拟试卷 14答案解析(总分:56.00,做题时间:90 分钟)一、选择题(总题数:28,分数:56.00)1.在一个 C源程序文件中所定义的全局变量,其作用域为(分数:2.00)A.由具体定义位置和 extern说明来决定范围 B.所在程
14、序的全部范围C.所在函数的全部范围D.所在文件的全部范围解析:解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用 extern说明符扩展全局变量的作用域(当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用 extern对此全局变量进行说明,以便通知编译程序:该变量是一个己在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从 extern说明处起,延伸到该函数末尾)。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变
15、量,而在其他用到这些全局变量的文件中用 extem对这些变量进行说明。2.有以下程序 void fun2(char a,char b) main() printf(“cc“,a,b); fun1(); char a=A,b=B;printf(“cc“,a,b); void fun1() fun2(E,F); a=C;b=D; 程序的运行结果是(分数:2.00)A.A B E FB.C D E F C.A B C DD.C D A B解析:解析:在 fun1()函数之前定义了全局字符变量 a和 b。这两个变量的作用域是从其定义处到整个程序结束。在 fun1()函数之内定义了两个变量 a和 b,并
16、且分别初始化为字符C和D。在 C语言中,若全局变量和某个函数中的局部变量同名,则在该函数中此全局变量被屏蔽,在该函数内访问的是局部变量,与同名的全局变量不发生任何关系。所以在主函数中,执行 fun1()后,变量 a、b 的值分别等于C、D,打印输出 CD,接着执行 fun2(E,F)语句,变量 a、b 的值变为E、F并输出。3.有以下程序 #include main() int k:4,m=1,p: fun(int a,int b)int static m=0,i=2;p=fun(k,m); i=i+m+1;printf(“0d,“,p); m=i+a+b;p=fun(k,m); return
17、 m;printf(“dn“,p); 程序运行后的输出结果是(分数:2.00)A.8,17 B.7,16C.8,8D.7,17解析:解析:本题考查了静态变量以及局部变量的同名问题。主函数中调用 fun函数两次,第一次调用fun(4,1),形参 a和 b接收以后,i 值为 3,m 的值为 8,调用结束返回 8存放到 p中并且输出 p的值为8,除了静态变量 m和 i,变量 a,b 撤销。第二次调用 fun(4,1),接收实参值以后,i 为 3+8+1,而 m为 12+4+1,即输出函数值 17。4.有以下程序 #include func(int n) void main() static int
18、num=1; func(3);func(4);printf(“n“); num=num+n;printf(“d“,num); 程序运行后的输出是(分数:2.00)A.45B.35C.48 D.34解析:解析:在函数 func(int n)中定义了局部静态变量 num,其初始值等于 1,所以在主函数中执行func(3),输出 4,此时静态变量 num的值等于 4,当退出函数 func(3)时,其值不会丢失,所以当在执行func(4)时,输出 8。5.有以下程序 fun(int x,int y) main() static int m=0,i=2; intj=1,m=1,k; i+=m+1;m=i
19、+x+y;return m; k=fun(j,m);printf(“d,“,k); k=fun(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。6.在 C语言中,只有在使用时才占
20、用内存单元的变量,其存储类型是(分数:2.00)A.extern和 registerB.auto和 staticC.static和 registerD.auto和 register 解析:解析:在 C语言中,动态变量(auto)存储在内存中的动态存储区,在程序运行中,只有当调用变量所在的函数时,系统才临时给变量分配内存单元:全局变量(extem)一经定义,系统为其分配固定的内存单元;静态变量(static),编译系统为其分配固定的存储空间:寄存器变量(register)不保存在内存上,而是直接存储在 CPU的寄存器中。7.有以下程序 #include main()int i,s=1: int
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 函数 数组 模拟 试卷 14 答案 解析 DOC
