【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷20及答案解析.doc
《【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷20及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷20及答案解析.doc(10页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C语言机试(函数和数组)模拟试卷 20及答案解析(总分:58.00,做题时间:90 分钟)一、选择题(总题数:29,分数:58.00)1.以下选项中叙述错误的是(分数:2.00)A.在 C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内B.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.C程序函数的形参不可以说明为 static型变量2.有以下程序 int flint x); main()int n=1,m; m=f(f(f(n); printf(“n“,m); int f(int x) r
2、eturn x*2; 程序运行后的输出结果是(分数:2.00)A.1B.2C.4D.83.有以下程序 #includestdioh int fun(int x,int y) main() if(x=y)return(x); int a=4,b=5,c=6; else return(x+y)2);printf(“dn“,fun(2*a,fun(b,c); 程序运行后的输出结果是(分数:2.00)A.3B.6C.8D.124.有以下程序 #include main() int flint x,int y) int a=3,b=4,c=5,d; return(y-x)*x);) d=f(f(a,b)
3、,f(a,c); printf(“dn“,d); 程序运行后的输出结果是(分数:2.00)A.10B.8C.9D.75.有以下程序 #include double f(double x); main()double f(double x) double a=0;int i; return x*x+1; for(i=0;iA.401B.500C.503D.14046.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(分数:2.00)A.形参只是形式上的存在,不占用具体存储单元B.函数的形参和实参分别占用不同的存储单元C.同名的实参和形参占同一存储单元D.函数的实参和其对应的形参
4、共占同一存储单元7.有以下程序 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“,c,b,a); 程序运行后的输出结果是(分数:2.00)A.10,20,30B.20,30,10C.30,20,10D.0,0,08.有以下程序 #include int flint x); main() int f(int x) int a,b=0; return x*x+1; for(a=0;aA.BCDB.BDIC.ABED.BCF9.若有以下程序 void flint
5、x) main()int z=123456; if(x=10) f(z); printf(“d-“,x10);f(x10); else printf(“d“,x);则程序的输出结果是(分数:2.00)A.6-5-4-3-2-1B.6-5-4-3-2-1-C.1-2-3-4-5-6D.1-2-3-4-5-6-10.以下与函数 fseek(fp,OL,SEEK SET)有相同作用的是(分数:2.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)11.以下程序的功能是:给 r输入数据后计算半径为 r的圆面积 s。程序在编译时出错 main() *Begin
6、ning* int r;float s; scanf(“d“,r); s=*r*r;printf(“s=fn“,s); 出错的原因是(分数:2.00)A.注释语句书写位置错误B.存放圆半径的变量 r不应该定义为整型C.输出语句中格式描述非法D.计算圆面积的赋值语句使用了非法变量12.以下程序函数 f的功能是:当 flag为 1时,进行由小到大排序:当 flag为 0时,进行由大到小排序 void flint b,int n,int flag) main() int i,j,t; int a10=5,4,3,2,1,6,7,8,9,10,i; for(i=0;iblj:biA.1,2,3,4,5
7、,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,13.有以下程序,其中 k的初值为八进制数 #include main() int k=011; printf(“dn“,k+); 程序运行后的输出结果是(分数:2.00)A.12B.11C.10D.914.有以下程序 #include int fun(int x)int p; if(x=0 x=1)return(3); p=x-fun(x-2);return(p); main()printf(“dn“,fun(9); 程序运行后的输
8、出结果是(分数:2.00)A.5B.9C.4D.715.有以下程序 #include int fun(int n)int a; main() if(n=1)return 1; a=n+fun(n-1);printf(“dn“,fun(5); return(a); j 程序的输出结果是(分数:2.00)A.14B.10C.15D.916.有以下程序 #include int fun(int a,int b)return a+b; main()int x=6,y=7,z=8,r; r=fun(fun(x,y),z-); printf(“dn“,r); 程序运行后的输出结果是(分数:2.00)A.1
9、5B.21C.20D.3117.以下选项中函数形参不是指针的是(分数:2.00)A.fun(int&p)B.fun(int a10)C.fun(int*a)D.fun(int P)18.设有如下函数定义 int fun(int k) if(kA.2B.4C.3D.519.有以下程序 #include int f(int x) main() int y; int z; if(x=0x=1)return(3); z=f(3);printf(“dn“,z); y=x*x-f(x-2); return y; 程序的运行结果是(分数:2.00)A.9B.0C.6D.820.有以下程序(strcat 函数
10、用以连接两个字符串) #include #include main() char a20=“ABCD0EFG0“,b=“IJK“; strcat(a,b);printf(“sn“,a); 程序运行后的输出结果是(分数:2.00)A.ABCDE0FG0IJKB.ABCDIJKC.IJKD.EFGIJK21.有以下程序 int fun(int n) main() if(n=1)return 1; int x; Else scanf(“d”,&x);x=fun(x); return(n+fun(n1); printf(“dn“,x); 执行程序时,给变量 x输入 10,程序的输出结果是(分数:2.0
11、0)A.54B.65C.45D.5522.有以下程序 fun(int x) main() int p; if(x=0 x=1)return(3);printf(“dn“,fun(7);p=x-fun(x-2); return p; 执行后的输出结果是(分数:2.00)A.3B.7C.0D.223.若有以下程序 int f(int a,int n) main() if(n1) int a=8,2,9,1,3,6,4,7,5; int t;t=f(a,n1); printf(“dn“,f(a,9);return tan-1?t:an-1; else return a01;则程序的输出结果是(分数:
12、2.00)A.9B.1C.8D.524.在一个 C源程序中所定义的伞局变量。其作用域为(分数:2.00)A.所在文件的全部范围B.所存程序的全部范围C.所在函数的全部范围D.由具体定义位置和 extern说明来决定范围25.以下叙述中正确的是(分数:2.00)A.只有全局变量才有自己的作用域,函数中的局部变量没有作用域B.只要是用户定义的标识符,都有一个有效的作用域C.只有在函数内部定义的变量才是局部变量D.局部变量不能被说明为 static26.以下叙述中正确的是(分数:2.00)A.对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B.在复合语句中不能定义变量C.全局变量的存储类别
13、可以是静态类D.函数的形式参数不属于局部变量27.有以下程序 int d=1; void fun(int p) main()int a=3; int d=5; fun(a); d+=p+; d+=a+; printf(“d“,d);) printf(“dn“,d); 程序的输出结果是(分数:2.00)A.9 6B.9 4C.8 4D.8 528.有以下程序 #include int a=1,b=2; void fun1(int a,int b) main() printf(“dd“,a,b);)。 fun1(5,6);fun2(); void fun2() printf(“ddn“,a,b);
14、 a=3;b=4; 程序运行后的输出结果是(分数:2.00)A.1 2 5 6B.5 6 l 2C.5 6 3 429.在一个 C源程序文件中所定义的全局变量,其作用域为(分数:2.00)A.由具体定义位置和 extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围国家二级 C语言机试(函数和数组)模拟试卷 20答案解析(总分:58.00,做题时间:90 分钟)一、选择题(总题数:29,分数:58.00)1.以下选项中叙述错误的是(分数:2.00)A.在 C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内B.C程序函数中定义的赋有初值的静
15、态变量,每调用一次函数,赋一次初值 C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.C程序函数的形参不可以说明为 static型变量解析:解析:在函数定义的静态变量,只需要赋值 1次,即可保存初始值,不需要每次调用时都赋初始值。2.有以下程序 int flint x); main()int n=1,m; m=f(f(f(n); printf(“n“,m); int f(int x) return x*2; 程序运行后的输出结果是(分数:2.00)A.1B.2C.4D.8 解析:解析:程序考查了函数的调用。对于 m=f(f(f(n);首先计算最内层的函数调用 f(n),执行 f函数,得
16、到返回值 2,然后计算 f(2),得到返回值为 4,最后计算 f(4),得到计算结果为 8。3.有以下程序 #includestdioh int fun(int x,int y) main() if(x=y)return(x); int a=4,b=5,c=6; else return(x+y)2);printf(“dn“,fun(2*a,fun(b,c); 程序运行后的输出结果是(分数:2.00)A.3B.6 C.8D.12解析:解析:fun(b,c)即 fun(5,6),5!=6,所以返回(5+6)2=5;fun(2*a,5)即 fun(8,5),8!=5,所以返回(8+5)2=6。4.有
17、以下程序 #include main() int flint x,int y) int a=3,b=4,c=5,d; return(y-x)*x);) d=f(f(a,b),f(a,c); printf(“dn“,d); 程序运行后的输出结果是(分数:2.00)A.10B.8C.9 D.7解析:解析:本题考查函数的嵌套调用。首先计算 f(a,b)与 f(a,c),f(a,b)=(b-a)*a=3,f(a,c)=(c-a)*a=6,然后计算 f(3,6)=(6-3)*3=9。5.有以下程序 #include double f(double x); main()double f(double x)
18、 double a=0;int i; return x*x+1; for(i=0;iA.401B.500C.503 D.1404解析:解析:由于函数 f的作用是对形参 x求平方再加 1,所以在主函数中,循环第一次执行后变量 a的值等于 1,第二次执行后,变量 a的值等于 102,第三次执行后,变量 a的值等于 503。6.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(分数:2.00)A.形参只是形式上的存在,不占用具体存储单元B.函数的形参和实参分别占用不同的存储单元 C.同名的实参和形参占同一存储单元D.函数的实参和其对应的形参共占同一存储单元解析:解析:在 C语言中,
19、函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过 return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。7.有以下程序 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“,c,b,a); 程序运行后的输出结果是(分数:2.00)A.10,20,30B.20,30,10C.30,20,10 D.0,0,
20、0解析:解析:函数 fun中采用了变量作为参数,那么参数传递以后,形参 a,b,c 的变化对于实参a,b,c 是没有影响的,因此主函数中 a,b,c 的值经过 fun调用以后,值没有变化。8.有以下程序 #include int flint x); main() int f(int x) int a,b=0; return x*x+1; for(a=0;aA.BCDB.BDI C.ABED.BCF解析:解析:在函数 main()中,第一次执行 for循环时,b 的值等于 1,此时输出字母 B;第二次执行for循环时,b 的值等于 3,此时输出字母 D;第三次执行 for循环时,b 的值等于 8
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 语言 函数 数组 模拟 试卷 20 答案 解析 DOC
