ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:24.60KB ,
资源ID:10178515      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10178515.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机二级C语言考试试题及详解.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

计算机二级C语言考试试题及详解.docx

1、计算机二级C语言考试试题及详解2010 年3 月全国计算机等级考试二级笔试试卷C 语言程序设计(考试时间 90 分钟,满分100 分)一、选择题(1)(10)、(21)(40)每题2 分,(11)(20)每题1 分,70 分)(11)以下叙述正确的是( )。2010 年3 月笔试真卷及答案详解第 2 页(共12 页)A)C 语言程序是由过程和函数组成的B)C 语言函数可以嵌套调用,例如:fun(fun(x)C)C 语言函数不可以单独编译D)C 语言中除了main 函数,其他函数不可作为单独文件形式存在(12)以下关于C 语言的叙述中正确的是( )。A)C 语言中的注释不可以夹在变量名或关键字的

2、中间B)C 语言中的变量可以在使用之前的任何位置进行定义C)在C 语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C 语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C 语言用户标识符中,不合法的是( )。A)_1 B)AaBcC)a_b D)a-b(14)若有定义:double a=22;int i=0,k=18;,则不符合C 语言规定的赋值语句是( )。A)a=a+,i+; B)i=(a+k)=(i+k);C)i=a11; D)i=!a;(15)有以下程序#include main()char a,b,c,d;scanf(%c%c,&a, &b);c=getchar()

3、; d=getchar();printf(%c%c%c%cn,a,b,c,d);当执行程序时,按下列方式输入数据(从第1 列开始,代表回车,注意:回车也是一个字符)1234则输出结果是( )。A)1234 B)12C)12 D)123 34(16)以下关于C 语言数据类型使用的叙述中错误的是( )。A)若要准确无误差的表示自然数,应使用整数类型B)若要保存带有多位小数的数据,应使用双精度类型C)若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型D)若只处理“真”和“假”两种逻辑值,应使用逻辑类型(17)若a 是数值类型,则逻辑表达式 (a=1) | | (a!=1)的值是( )

4、。A)l B)0C)2 D)不知道a 的值,不能确定(18)以下选项中与if(a=1)a=b;else a+;语句功能不同的switch 语句是( )。A)switch(a) B)switch(a=1)case 1;a=b;break; case 0:a=b;break;default:a+; case 1:a+; C)switch(a) D)switch(a=1)default:a+;break; case 1:a=b;break;case 1:a=b; case 0:a+; (19)有如下嵌套的if 语句:if(ab)if(ac)k=a;else k=c;elseif(bc)k=b;els

5、e k=c;以下选项中与上述if 语句等价的语句是( )。A)k=(ab)?a:b; k=(bc)?b:c; B)k=(ab)?(bc)?b:c);C)k=(ab)? (ac)?a:c):(bc)?b:c); D)k=(ab)?a:b;k=(ac)?a:c;2010 年3 月笔试真卷及答案详解第 3 页(共12 页)(20)有以下程序:#include main() int i,j,m=1;for(i=1;i0;j-) if(i*j3)break;m*=i*j;printf(m=%dn,m);程序运行后的输出结果是( )A)m=6 B)m=2C)m=4 D)m=5(21)有以下程序:#incl

6、ude main() int a=1,b=2;for(;a8;a+) b+=a; a+=2;printf(%d,%dn,a,b);程序运行后的输出结果是( )。A)9,18 B)8,11C)7,1l D)10,14(22)有以下程序,其中k 的初值为八进制数:#includemain() int k=011;printf(%dn,k+);程序运行后的输出结果是( )。A)12 B)11C)10 D)9(23)下列语句组中,正确的是( )。A)char *s; s=Olympic; B)char s7; s =Olympic;C)char *s;s=Olympic; D)char s7; s=O

7、lympic;(24)以下关于return 语句的叙述中正确的是( )。A)一个自定义函数中必须有一条return 语句B)一个自定义函数中可以根据不同情况设置多条return 语句C)定义成void 类型的函数中可以有带返回值的return 语句D)没有return 语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能正确定义数组的语句是( )。A)int num0.2008; B)int num;C)int N=2008; D)#define N 2008int numN; int numN;(26)有以下程序#include void fun(char *c,int d)

8、*c=*c+1;d=d+1;printf(%c,%c,*c,d);main() char b=a,a=A;2010 年3 月笔试真卷及答案详解第 4 页(共12 页)fun(&b,a); printf(%c,%cn,b,a);程序运行后的输出结果是( )。A)b,B,b,A B)b,B,B,AC)a,B,B,a D)a,B,a,B(27)若有定义int (*pt)3;,则下列说法正确的是( )。A)定义了基类型为int 的三个指针变量B)定义了基类型为int 的具有三个元素的指针数组ptC)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt 的指针变量,它可以指向每行有三个整数

9、元素的二维数组(28)设有定义double a10,*s=a;,以下能够代表数组元素a3的是( )。A)(*s)3 B)*(s+3)C)*s3 D)*s+3(29)有以下程序:#include main() int a5=1,2,3,4,5,b5=0,2,1,3,0,i,s=0;for(i=0;i5;i+) s=s+abi;printf(%dn,s);程序运行后的输出结果是( )。A)6 B)10C)1l D)15(30)有以下程序#include main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+) t+

10、=bibji;printf(%dn,t);程序运行后的输出结果是( )。A)1 B)3C)4 D)9(31)若有以下定义和语句:char s110=abcd!,*s2=n123;printf(%d %dn,strlen(s1),strlen(s2);则输出的结果是( )。A)5 5 B)10 5C)l0 7 D)5 8(32)有以下程序:#include #define N 8void fun(int *x,int i) *x=*(x+i);main() int aN=1,2,3,4,5,6,7,8,i;fun(a,2);for(i=0;iN/2;i+)printf(%d,ai);printf

11、(n);程序运行后的输出结果是( )。A)l 3 1 3 B)2 2 3 42010 年3 月笔试真卷及答案详解第 5 页(共12 页)C)3 2 3 4 D)l 2 3 4(33)有以下程序:#include int f(int t,int n);main() int a4=1,2,3,4,s;s=f(a,4);printf(%dn,s);int f(int t,int n) if(n0) return tn-1+f(t,n-1);else return 0;程序运行后的输出结果是( )。A)4 B)10C)14 D)6(34)有以下程序:#include int fun() static

12、int x=1;x*=2; return x;main() int i,s=1;for(i=1;i=2;i+) s=fun();printf(%dn,s);程序运行后的输出结果是( )。A)0 B)lC)4 D)8(35)有以下程序:#include #define SUB(a) (a)-(a)main() int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(%dn,d);程序运行后的输出结果是( )。A)0 B)-12C)-20 D)10(36)设有定义:Struct complex int real,unreal; data1=1,8,data2;则以下赋值语句中错

13、误的是( )。A)data2=datal ; B)data2=(2,6);C)data2. real=datal. real; D)data2. real=datal. unreal;(37)有以下程序:#include #includestruct A int a;char b10;double c;void f(struct A t);main() struct A a=1001,ZhangDa,1098.0;2010 年3 月笔试真卷及答案详解第 6 页(共12 页)f(a);printf(%d,%s,%6.1fn,a.a,a.b,a.c);void f(struct A t)t.a=1

14、002;strcpy(t.b,ChangRong);t.c=1202.0;程序运行后的输出结果是( )。A)100l, zhangDa, 1098.0 B)1002, ChangRong, 1202.0C)100l, ChangRong, 1098.0 D)1002, zhangDa, 1202.0(38)有以下定义和语句:struct workersint num;char name20;char c;struct int day; int month; int year; s;struct workers w,*pw;pw=&w;能给w 中year 成员赋1980 的语句是( )。A)*p

15、w. year=1980; B)w. year=1980;C)pw-year=1980; D)w. s. year=1980;(39)有以下程序#include main() int a=2,b=2,c=2;printf(%dn,a/b&c);程序运行后的输出结果是( )。A)0 B)lC)2s D)3(40)有以下程序:#include main() FILE *fp;char str10;fp=fopen(myfile.dat,w);fputs(abc,fp); fclose(fp);fp=fopen(myfile.dat,a+);fprintf(fp,%d,28);rewind(fp);

16、fscanf(fp,%s,str);puts(str);fclose(fp);程序运行后的输出结果是( )。A)abc B)28cC)abc28 D)因类型不一致而出错二、填空题(每空2 分,共30 分)请将每一个空的正确答案写在答题卡【l】【15】序号的横线上,答在试卷上不得分。(6)设x为int型变量,请写出一个关系表达式【6】,用以判断x同时为3 和7 的倍数时,关系表达式的值为真。(7)有以下程序#include main() int a=1,b=2,c=3,d=0;if(a=1)if(b!=2)if(c=3) d=1;else d=2;else if(c!=3) d=3;else d

17、=4;else d=5;printf(%dn,d);程序运行后的输出结果是【7】。(8)有以下程序#include main() int m,n;scanf(%d%d,&m,&n);while(m!=n)while(mn)m=m-n;while(mn)n=n-m;printf(%dn,m);程序运行后,当输入14 63时,输出结果是【8】。(9)有以下程序#include main() int i,j,a3=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)for(j=i;j3;j+) printf(%d,aij);printf(n);程序运行后的输出结果是【9】。(10)有以下

18、程序#include main() int a=1,2,3,4,5,6,*k3,i=0;while(i3)2010 年3 月笔试真卷及答案详解第 8 页(共12 页) ki=&a2*i;printf(%d,*ki);i+;程序运行后的输出结果是【10】。(11)有以下程序#include main() int a33=1,2,3,4,5,6,7,8,9;int b3=0,i;for(i=0;i3;i+) bi=ai2+a2i;for(i=0;i3;i+) printf(%d,bi);printf(n);程序运行后的输出结果是【11】。(12)有以下程序#include #include voi

19、d fun(char *str) char temp;int n,i;n=strlen(str);temp=strn-1;for(i=n-1;i0;i-) stri=stri-1;str0=temp;main() char s50;scanf(%s,s); fun(s);printf(%sn,s);程序运行后的输入:abcdef,则输出结果是【12】。(13)以下程序的功能:将值为3 位正整数的变量x 中的数值按个位、十位、百位的顺序拆分并输出。请填空。#include main() int x=256;printf(%d-%d-%dn, 【13】,x/10%10,x/100);(14)以下程

20、序用以删除字符串中所有的空格,请填空。#include main() char s100=Our teacher teach C language!;int i,j;for(i=j=0;si!=0;i+)if(si!= ) sj=si;j+;sj= 【14】;printf(%sn,s);(15)以下程序的功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。#include main() int a10,*p,*s;for(p=a;p-a10;p+) scanf(%d,p);for(p=a,s=a;p-a*s) s= 【15】;printf(index=%dn,s-a);2010

21、 年3 月笔试真卷及答案详解第 9 页(共12 页)2010 年3 月全国计算机等级考试二级笔试试卷C 语言程序设计参考答案及详解一、选择题(11)B) 【解析】在C 语言中,允许函数的嵌套调用,即递归调用。在C 语言中不存在过程的概念,所以选项A)是错误的,在C 语言中函数允许单独编译,可以作为单独的文件形式存在,因而选项C)和D)是错误的。2010 年3 月笔试真卷及答案详解第 10 页(共12 页)(12)A) 【解析】C 语言中的注释不可以夹在变量名或关键字的中间;C 语言的变量必须要先定义后使用;一个浮点数可以和一个整数相加,运算符两侧的运算类型也可以不一致;数值常量中不允许夹带空格

22、。(13)D) 【解析】在C 语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项D)中出现了非法的字符-。(14)C) 【解析】在C 语言中,求余运算符的运算对象只能是整型,在题目中,变量a 是一个双精型变量,因此选项C)中赋值表达式的右侧的表达式是一个非法的表达式。(15)C) 【解析】在程序中,scanf 函数把1 和2 分别赋给变量a 和b,getchar()函数把回车符赋给变量c,getchar()函数把3 赋给变量d。(16)D) 【解析】在 C 语言中没有定义逻辑类型,而是用0 代表假,用非零代表真。(17)A) 【解析】在逻辑表达式中,a |

23、 b,只有在a 跟b 都为0 时,表达式的结果才为0。在题中所给的表达式中a 要么等于1,要么不等于1,肯定会有一方的值不为真。(18)B) 【解析】if else 语句的含义是,如果变量a 的值等于1,则把变量b 的值赋给变量a,否则,变量a 的值加1。在本题的4 个选项中,与其含义不同的是选项B),表示如果变量a 的值等于1,则把变量a 的值加1,否则,把变量b 的值赋给变量a。(19)C) 【解析】嵌套的if else 语句的含义是,在变量a 的值小于变量b 的值,同时,变量a 的值小于变量c 的值时,把变量a 的值赋给变量k。在变量a 的值小于变量b 的值,同时,变量a 的值大于等于变

24、量c的值时,把变量c 的值赋给变量k。在变量a 的值大于等于变量b 的值,同时,变量b 的值小于变量c 的值时,把变量b 的值赋给变量k。在变量a 的值大于等于变量b 的值,同时,变量b 的值大于等于变量c 的值时,把变量c 的值赋给变量k。(20)A) 【解析】这道题考查了for 循环的嵌套应用。对于外层for 循环来说,变量i 从1 增到2,循环执行2 次。当变量i 的值等于1 时,对于内层for 循环来说,变量j 从3 减到1,求得变量m 的值等于6。当变量i 的值等于2 时,第一遍执行内层for 循环,变量j 的值等于3,那么i*j 的值等于6,其值大于3,这时执行break 语句,退

25、出内层for 循环的执行。所以程序输出变量m 的值为6。(21)D) 【解析】在这段程序中变量a 的初值等于1,变量b 的初值等于2。第1 次执行for 循环语句后,变量a 的值等于3,变量b 的值等于3。第2 次执行for 循环后,变量a 等于6,变量b 的值等于7。第3 次执行for 循环后,变量a 等于9,变量b 的值等于14。第4 次执行for 循环后,变量a 等于10,这时退出for 循环,此时变量b 的值等于14。因而程序输出变量a,b 的值分别为10,14。(22)D) 【解析】变量 k 的值为八制数011,其对应的十制进数为9。(23)A) 【解析】S 是一个字符指针变量,让它

26、指向一个字符串常量。(24)B) 【解析】return 语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return 语句返回函数的值。(25)D) 【解析】在定义一维数组时,数组的下标应该是一个确定的整数值。要注意的是在定义二维数组时,其第一维下标可以省略,但第二维下标不能省略。(26)A) 【解析】在这道题目中要fun 函数的参数传递方式,形参c 是传地址,形参d 是传值。所以在主函数中,执行fun 时,把变量b 的地址传给了c,把a 的值传递给了d,经过运算,输出的值为b,B。在主函数的输出语句中,输出变量b 的值为b,变量a 的值为A。(27)D) 【解析】首先

27、,pt 跟*结合,所以是一个指针,所指向的对象是含有3 个元素的数组。所定义的指针没加const,所以是个指针变量,还可以指向类似对象的其他元素,也就是说还可以指向其他含有3 个元素的数组。这也是选项D)所表达的意思。可以指向每行3 个整数元素的二维数组。如果是*pt3,由于的优先级比*高,所以首先是数组形式pt3,然后再与*结合,这样指针数组包含3个指针,pt0、pt1、pt2。int (*p)3;是数组指针,p 是个指针,指向一个长度为3 的int 型数组。(28)B) 【解析】语句*s=a,使用指针变量s 指向一维数组a 的首地址,所以*(s+3)表示的是引用数组a3。(29)C) 【解析】这道题目是计算机一维数组a 中某些元素的和。这些元素的下标值是一维数组b 中元素值。s=0+a0+a2+a1+a3+a0=0+1+3+2+4+1=11。2010 年3 月笔试真卷及答案详解第 11 页(共12 页)(30)C) 【解析】这道题主要考查的是二维数组的有关知识。在两层for 循环语句中,每次执行变量t的累加时, 二维数组元素b 的第二下标的值与第一下标相同的值, 所以程序执行的过程为t=1+b11+b22=1+1+2=4。(31)A) 【解析】本题要注意的是转义字符的问题,在字符串s2 中,有两个转义字

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2