欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1325382       资源大小:77KB        全文页数:20页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C 语言-441 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:42,分数:100.00)1.以下叙述中错误的是_。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件2.要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,以下正确的程序段是_。(分数:2.00)A.while(ch=getchar()=“N“)printf(“%c“,ch);B.while(ch=getchar()!

    2、=“N“)printf(“%c“,ch);C.while(ch=getchar()=“N“)printf(“%c“,ch);D.while(eh=getchar()=“N“)printf(“%c“,ch);3.以下不能输出字符 A 的语句是(注:字符 A 的 ASCII 码值为 65,字符 a 的 ASCII 码值为 97)_。(分数:2.00)A.printf(“%c/n“,“a“-32);B.printf(“%d/n“,“A“);C.printf(“%c/n“,65);D.printf(“%c/n“,“B“-1);4.已知字符 A 的 ASCII 码值是 65,字符变量 c1 的值是“A“

    3、,c2 的值是“D“,则执行语句printf(“%d,%d“,c1,c2-2);的输出结果是_。(分数:2.00)A.65,68B.A,68C.A,BD.65,665.有如下程序段: int x=12; double y=3.141593; printf(“%d%8.6f“,x,y); 其输出结果是_。(分数:2.00)A.123.141593B.123.141593C.12,3.141593D.123.14159306.若变量已正确定义为 int 型,要通过语句 scanf(“%d,%d,%d“,给 a 赋值 1、给 b 赋值 2、给c 赋值 3,以下输入形式中错误的是(注:代表一个空格符)

    4、_。(分数:2.00)A.1,2,3回车B.1,2,3回车C.1,2,3回车D.123回车7.若有定义:int a,b;,通过语句 scanf(“%d;%d“,能把整数 3 赋给变量 a、5 赋给变量 b 的输入数据是_。(分数:2.00)A.3 5B.3,5C.3;5D.358.若有定义语句:int a,b,c,*p=,接着执行以下选项中的语句,则能正确执行的语句是_。(分数:2.00)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p);D.scanf(“%d“,9.设有定义:int a;float b;,执行 scanf(

    5、“%2d%f“,语句时,若从键盘输入 876 543.0回车,则 a 和 b 的值分别是_。(分数:2.00)A.87 和 6.0B.876 和 543.0C.87 和 543.0D.76 和 543.010.有以下程序段: #includestdio.h int j; float y;char name50; scanf(“%2d%f%s“, 当执行上述程序段时,从键盘上输入 55566 7777abc 后,y 的值为_。(分数:2.00)A.566.0B.55566.0C.7777.0D.566777.011.下列选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是_。(分数:2.5

    6、0)A.x%2=0B.x/2C.x%2!=0D.x%2=112.若 a 是数值类型,则逻辑表达式(a=1)|(a!=1)的值是_。(分数:2.50)A.1B.0C.2D.不知道 a 的值,不能确定13.当变量 c 的值不为 2、4、6 时,值为“真”的表达式是_。(分数:2.50)A.(c=2 if(a=1 else printf(“%d,%d,%d/n“,a,b,c); else printf(“%d,%d,%d/n“,a,b,c); 程序的运行结果是_。(分数:2.50)A.1,3,2B.1,3,3C.1,2,3D.3,2,115.下列关于逻辑运算符两侧运算对象的叙述中正确的是_。(分数:

    7、2.50)A.可以是任意合法的表达式B.只能是整数 0 或非 0 整数C.可以是结构体类型的数据D.只能是整数 O 或 116.设有宏定义:#define IsDIV(k,n)(k%n=1)?1:0),且变量 m 已正确定义并赋值,则宏调用:IsDIV(m,5)else printf(“%d/n“,y);B.if(a=0)printf(“%d/n“,y);else printf(“%d/n“,x);C.if(a=0)printf(“%d/n“,x);else printf(“%d/n“,y);D.if(a)printf(“%d/n“,x);else printf(“%d/n“,y);19.有以

    8、下程序: #includestdio.h main() int a=0,b=0,c=0,d=0; if(a=1)b=1;c=2; else d=3; printf(“%d,%d,%d,%d/n“,a,b,c,d); 程序的运行结果是_。(分数:2.50)A.1,1,2,0B.0,0,0,3C.编译有错D.0,1,2,020.设有定义:int a=1,b=2,c=3;以下语句中执行效果与其他 3 个不同的是_。 Aif(ab)c=a,a=b,b=c; Bif(ab)c=a,a=b,b=c; c)if(ab)c=a;a=b;b=c; Dif(ab)c=a;a=b;b=c; (分数:2.50)A.B

    9、.C.D.21.有嵌套的 if 语句: if(ab) if(ac)k=a; else k=c; else if(bc)k=b; else k=c; 以下选项中与上述 if 语句等价的语句是_。 Ak=(ab)?(bc)?a:b):(bc)?b:c); Bk=(ab)?(ac)?a:c):(bc)?b:c); c)k=(ab)?a:b;k=(bc)?b:c; Dk=(ab)?a:b;k=(ac)?a:c; (分数:2.50)A.B.C.D.22.有以下程序: main() int x=1,y=2,z=3; if(xy)if(yz) printf(“%d“,+z); printf(“%d“,+y)

    10、; printf(“%d/n“,x+); 程序的运行结果是_。(分数:2.50)A.1B.41C.2D.33123.以下程序段中,与语句 k=ab?(bc?1:0):0;功能相同的是_。(分数:2.50)A.if(ab)|(bc)k=1;else k=0;B.if(ab)else k=0;C.if(a=b)k=0;else if(b=c)k=1;D.if(ab)k=1;else if(bc)k=1;else k=0;24.有以下程序: #includestdio.h main() int x=1,y=0,a=0,b=0; switch(x) case 1; switch(y) case 0:a

    11、+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%d/n“,a,b); 程序的运行结果是_。 ,(分数:2.50)A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=025.若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的 switch 语句是_。(分数:2.50)A.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“);B.switch(int)x);case 1:printf(“*/n“)

    12、;case 2:printf(“*/n“);C.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);D.switch(a+b)case 1:printf(“*/n“);case c:printf(“*/n“);26.下列叙述中正确的是_。(分数:2.50)A.在 switch 语句中不一定使用 break 语句B.在 switch 语句中必须使用 default 语句C.break 语句必须与 switch 语句中的 case 配对使用D.break 语句只能用于 switch 语句27.下列选项中与 if(a=1)a=b;else a

    13、+;语句功能不同的 switch 语句是_。(分数:2.50)A.switch(a=1)case 0:a=b;break;case 1:a+;B.switch(a)case 1:a=b;break;default:a+;C.switch(a)default:a+;break;case 1:a=b;D.switch(a=1)case 1:a=b;break;case 0:a+;28.有以下程序: #includestdio.h main() in y=10; while(y-); printf(“y=%d/n“,y); 程序执行后的输出结果是_。 Ay=0 By=-1 c)y=1 Dwhile

    14、构成无限循环 (分数:2.50)A.B.C.D.29.有以下程序: #includestdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:2.50)A.1B.2C.4D.死循环30.有以下函数: int fun(char*s) char*t=s; while(*t+); return(t-s); 该函数的功能是_。(分数:2.50)A.计算 s 所指字符串的长度B.比较两个字符串的大小C.计算 s 所指字符串占用内存字节的个数D.将 s 所指字符串复制到字符串 t 中31.有以下函数:

    15、 int aaa(char*s) char*t=s; while(*t+); t-; return(t-s); 以下关于 aaa 函数功能叙述正确的是_。(分数:2.50)A.将串 s 复制到串 tB.比较两个串的大小C.求字符串 s 的长度D.求字符串 s 所占字节数32.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是_。(分数:2.50)A.(E0|E0)B.(E=0)C.(!E=0)D.(E!=0)33.以下不构成无限循环的语句或语句组是_。(分数:2.50)A.n=0;do+n;while(n=0);B.n=0;while(1)n+;C.n=10;while(n)

    16、;n-;D.for(n=0,i=1;i+)n+=i;34.若变量已正确定义,有以下程序段:i=0;do printf(“%d,“,i);while(i+);printf(“%d/n“,i);程序的运行结果是_。(分数:2.50)A.0,1B.0,0C.1,1D.程序进入无限循环35.以下程序段中的变量已正确定义: for(i=0;i4;i+,i+) for(k=1;k3;k+); printf(“*“); 程序的运行结果是_。(分数:2.50)A.*B.*C.*D.*36.有以下程序: #includestdio.h main() int y=9; for(;y0;y-) if(y%3=0)

    17、printf(“%d“,-y); 程序的运行结果是_。(分数:2.50)A.852B.963C.741D.87542137.有以下程序: #includestdio.h main() int a=1,b=2; for(;a8;a+) b+=a; a+=2; printf(“%d,%d/n“,a,b); 程序运行后的输出结果是_。(分数:2.50)A.9,18B.8,11C.7,11D.10,1438.有以下程序: #includestdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-); continue; printf(“%d,

    18、“,-x); 程序的运行结果是_。(分数:2.50)A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,39.有以下程序: #includestdio.h 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+=bibji; printf(“%d/n“,t); 程序的运行结果是_。(分数:2.50)A.3B.4C.1D.940.有以下程序: #includestdio.h main() int i; for(i=1;i=40;i+) if(i+%5=0) if(+i%8=0)

    19、printf(“%d“,i); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.5B.24C.32D.4041.有以下程序: #includestdio.h main() int i,j,m=55; for(i=1;i=3;i+) for(j=3;j=i;j+) m=m%j; printf(“%d/n“,m); 程序的运行结果是_。(分数:2.50)A.0B.1C.2D.342.下列叙述中正确的是_。(分数:2.50)A.continue 语句的作用是使程序的执行流程跳出包含它的所有循环B.break 语句只能用在循环体内和 switch 语句体内C.在循环体内使用 br

    20、eak 语句和 continue 语句的作用相同D.break 语句只能用于 switch 语句体中二级 C 语言-441 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:42,分数:100.00)1.以下叙述中错误的是_。(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符 C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件解析:解析 本题考查字符处理函数和文件读写函数,属于基础知识。其中 B 选项的 getchar 函数用于从终端读入字符。2.要求通过 while 循环不断

    21、读入字符,当读入字母 N 时结束循环。若变量已正确定义,以下正确的程序段是_。(分数:2.00)A.while(ch=getchar()=“N“)printf(“%c“,ch);B.while(ch=getchar()!=“N“)printf(“%c“,ch); C.while(ch=getchar()=“N“)printf(“%c“,ch);D.while(eh=getchar()=“N“)printf(“%c“,ch);解析:解析 在 C 语言中,等于号用“=”表示,一个“=”表示赋值,当读入字母 N 时,选项 A 中,while 后的条件值为“N”,是非零数,条件成立,循环继续执行,所以

    22、 A 选项错误。C、D 选项的含义都是如果输入的字符为“N”,则打印输出,所以正好和题意相反。3.以下不能输出字符 A 的语句是(注:字符 A 的 ASCII 码值为 65,字符 a 的 ASCII 码值为 97)_。(分数:2.00)A.printf(“%c/n“,“a“-32);B.printf(“%d/n“,“A“); C.printf(“%c/n“,65);D.printf(“%c/n“,“B“-1);解析:解析 B 选项输出的格式为%d,即为整型格式,所以输出字符 A 的 ASCII 码值 65,而不是字符A。由于大写字母比和其对应的小写字母的 ASCII 码值小 32,所以 A 选

    23、项正确。字符 A 的 ASCII 码值就是65,所以以%c 格式输出可以输出字符 A,所以 C 选项正确。由于字符 A 的 ASCII 码值比字符 B 的小 1,所以 D 选项正确。4.已知字符 A 的 ASCII 码值是 65,字符变量 c1 的值是“A“,c2 的值是“D“,则执行语句printf(“%d,%d“,c1,c2-2);的输出结果是_。(分数:2.00)A.65,68B.A,68C.A,BD.65,66 解析:解析 打印时以%d 整型格式打印输出,所以字符变量 c1 的值打印出来就是 65,从 c2-2 的值打印出来就是 68-2,即 66,所以选择 D 选项。5.有如下程序段

    24、: int x=12; double y=3.141593; printf(“%d%8.6f“,x,y); 其输出结果是_。(分数:2.00)A.123.141593 B.123.141593C.12,3.141593D.123.1415930解析:解析 printf 函数中格式字符“%8.6”的含义是:变量 y 的输出宽度为 8(包括小数点),小数点后面保留 6 位小数,且右对齐,当数值的实际宽度大于设定宽度时,按实际宽度输出,所以选择 A 选项。6.若变量已正确定义为 int 型,要通过语句 scanf(“%d,%d,%d“,给 a 赋值 1、给 b 赋值 2、给c 赋值 3,以下输入形式

    25、中错误的是(注:代表一个空格符)_。(分数:2.00)A.1,2,3回车B.1,2,3回车C.1,2,3回车D.123回车 解析:解析 在输入整数或实数这类数值型数据时,输入数据之间必须用空格、回车符、制表符等间隔符隔开,间隔符个数不限。scanf()的格式控制串也可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配,所以逗号必须输入。7.若有定义:int a,b;,通过语句 scanf(“%d;%d“,能把整数 3 赋给变量 a、5 赋给变量 b 的输入数据是_。(分数:2.00)A.3 5B.3,5C.3;5 D.35解析:解析 输入数据的格式必须与 scanf(

    26、)的格式控制串完全匹配,所以输入时必须在 3 和 5 之间输入“;”。8.若有定义语句:int a,b,c,*p=,接着执行以下选项中的语句,则能正确执行的语句是_。(分数:2.00)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p); D.scanf(“%d“,解析:解析 本题重点考查的知识点是标准输入函数 scanf()。scanf()函数要求,除了第一个参数为格式化字符串以外,其余参数均为相应变量的地址值。本题中,只有 p 是地址值,因此 C 选项正确。9.设有定义:int a;float b;,执行 scanf(“%2

    27、d%f“,语句时,若从键盘输入 876 543.0回车,则 a 和 b 的值分别是_。(分数:2.00)A.87 和 6.0 B.876 和 543.0C.87 和 543.0D.76 和 543.0解析:解析 在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将 87 赋给变量a,把 6.0 赋给 float 型变量 b。10.有以下程序段: #includestdio.h int j; float y;char name50; scanf(“%2d%f%s“, 当执行上述程序段时,从键盘上输入 55566 7777abc 后,y 的值为_。(分数:2.00)A.566.0 B

    28、.55566.0C.7777.0D.566777.0解析:解析 它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。所以 j 的值为 55,y 的值为 566.0,字符数组 name 为 7777abc。11.下列选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是_。(分数:2.50)A.x%2=0 B.x/2C.x%2!=0D.x%2=1解析:解析 算术运算符的优先级高于关系运算符的优先级,所以当 x 为大于 1 的奇数时,A 选项的值为假,即 0。B 选项的值为不定

    29、值,但绝对不是 0。C 选项的值为真,即 1。D 选项的值为真,即 1。12.若 a 是数值类型,则逻辑表达式(a=1)|(a!=1)的值是_。(分数:2.50)A.1 B.0C.2D.不知道 a 的值,不能确定解析:解析 逻辑或“|”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道 a 的值,但是若 a 为 1,则左边运算对象为 1;若 a 的值不是 1,则右边运算对象的值为 1,所以总能保证一边非零。13.当变量 c 的值不为 2、4、6 时,值为“真”的表达式是_。(分数:2.50)A.(c=2 if(a=1 else printf(“%d,%d,%d/n“,a,b,c); el

    30、se printf(“%d,%d,%d/n“,a,b,c); 程序的运行结果是_。(分数:2.50)A.1,3,2B.1,3,3 C.1,2,3D.3,2,1解析:解析 else 总是和最近的 if 配对,所以进入第一个 if 语句中进行条件判断时,因为是逻辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断的结果为 1。进入第二个 if 语句条件判断,因为 b!=2 条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第二个运算对象(c-!=3)c 的值不变,也不再执行第一个 else 语句。打印 a 的值 1,b 的值 3,c 的值 3。15.下列关于逻辑运算符两侧运算对

    31、象的叙述中正确的是_。(分数:2.50)A.可以是任意合法的表达式 B.只能是整数 0 或非 0 整数C.可以是结构体类型的数据D.只能是整数 O 或 1解析:解析 C 语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择 A。16.设有宏定义:#define IsDIV(k,n)(k%n=1)?1:0),且变量 m 已正确定义并赋值,则宏调用:IsDIV(m,5)else printf(“%d/n“,y);B.if(a=0)printf(“%d/n“,y);else printf(“%d/n“,x);C.if(a=0)printf(“%d/n“,x);el

    32、se printf(“%d/n“,y); D.if(a)printf(“%d/n“,x);else printf(“%d/n“,y);解析:解析 A、B、D 选项的含义均为:a 的值如果为 0,打印 y 的值,否则打印 x 的值。而 C 选项的含义是:a 的值为 0 时打印 x 的值,不为 0 时打印 y 的值,与其他选项正好相反。19.有以下程序: #includestdio.h main() int a=0,b=0,c=0,d=0; if(a=1)b=1;c=2; else d=3; printf(“%d,%d,%d,%d/n“,a,b,c,d); 程序的运行结果是_。(分数:2.50)A

    33、.1,1,2,0B.0,0,0,3C.编译有错 D.0,1,2,0解析:解析 本题中 if(a=1)b=1;与 else d=3;之间多了语句 c=2;,所以会出现 else 语句的位置错误的编译失败提示。20.设有定义:int a=1,b=2,c=3;以下语句中执行效果与其他 3 个不同的是_。 Aif(ab)c=a,a=b,b=c; Bif(ab)c=a,a=b,b=c; c)if(ab)c=a;a=b;b=c; Dif(ab)c=a;a=b;b=c; (分数:2.50)A.B.C. D.解析:解析 因为变量 a=1,b=2 所以条件 ab 不成立,选项 A、B 和 D 相当于一条语句,选

    34、项 A 是逗号表达式,选项 B 和选项 D 是复合语句,所以都没有执行。选项 C 中,语句“c=a”不执行,语句“a=b;b=c;”执行。故选项 C 符合题意。21.有嵌套的 if 语句: if(ab) if(ac)k=a; else k=c; else if(bc)k=b; else k=c; 以下选项中与上述 if 语句等价的语句是_。 Ak=(ab)?(bc)?a:b):(bc)?b:c); Bk=(ab)?(ac)?a:c):(bc)?b:c); c)k=(ab)?a:b;k=(bc)?b:c; Dk=(ab)?a:b;k=(ac)?a:c; (分数:2.50)A.B. C.D.解析:

    35、解析 题目中嵌套语句的含义是当 ab 且 ac 成立时,将 a 的值赋给 k,如果 ab 成立而ac 不成立,则将 c 的值赋给 k。如果 ab 不成立而 bc 成立,则将 b 的值赋给 k,如果 ab 不成立且 bc 也不成立,则将 c 的值赋给 k。判断条件表达式,只有 B 选项可以表示这个含义。22.有以下程序: main() int x=1,y=2,z=3; if(xy)if(yz) printf(“%d“,+z); printf(“%d“,+y); printf(“%d/n“,x+); 程序的运行结果是_。(分数:2.50)A.1 B.41C.2D.331解析:解析 else 总是与

    36、离它最近的 if 配对,所以第一个 if 语句的判断条件不成立,不再执行第二个if 语句和与第二个 if 语句配对的 else 语句,而是直接执行打印 x+的操作,打印 x 的值 1 以后再加 1。23.以下程序段中,与语句 k=ab?(bc?1:0):0;功能相同的是_。(分数:2.50)A.if(ab)|(bc)k=1;else k=0;B.if(ab)else k=0; C.if(a=b)k=0;else if(b=c)k=1;D.if(ab)k=1;else if(bc)k=1;else k=0;解析:解析 条件表达式的含义是,如果表达式 1 成立,结果为表达式 2 的值,如果不成立,

    37、则为表达式 3 的值。所以题干中 k 的值这样取值:如果 ab 且 bc,k 值结果为 1,如果 ab 且 bc,则值为0。如果 ab,k 值为 0,也就是只要 ab 与 bc 中只要有一个条件不成立,k 的值就为 0,所以选择 B选项。24.有以下程序: #includestdio.h main() int x=1,y=0,a=0,b=0; switch(x) case 1; switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%d/n“,a,b); 程序的运

    38、行结果是_。 ,(分数:2.50)A.a=2,b=2B.a=2,b=1 C.a=1,b=1D.a=1,b=0解析:解析 case 常量表达式只是起语句标号作用,并不使该处进行条件判断。在执行 switch 语句时,根据 switch 的表达式,找到与之匹配的 case 语句,就从此 case 子句执行下去,不再进行判断,直到碰到 break 或函数结束为止。所以执行内层 switch(y)时只执行了 a+,此时 a 的值为 1,然后执行外层case 2 语句的 a+;b+;,a 为 2,b 为 1,所以结果为 B 选项。25.若有定义:float x=1.5;int a=1,b=3,c=2;,

    39、则正确的 switch 语句是_。(分数:2.50)A.switch(a+b)case 1:printf(“*/n“);case 2+1:printf(“*/n“); B.switch(int)x);case 1:printf(“*/n“);case 2:printf(“*/n“);C.switch(x)case 1.0:printf(“*/n“);case 2.0:printf(“*/n“);D.switch(a+b)case 1:printf(“*/n“);case c:printf(“*/n“);解析:解析 B 选项中 switch(int)x);语句中不应该有最后的分号。switch(

    40、expr1)中的 expr1 不能用浮点类型或 long 类型,也不能为一个字符串,所以 C 选项错误。case 后面必须为常量表达式,所以 D 选项错误。26.下列叙述中正确的是_。(分数:2.50)A.在 switch 语句中不一定使用 break 语句 B.在 switch 语句中必须使用 default 语句C.break 语句必须与 switch 语句中的 case 配对使用D.break 语句只能用于 switch 语句解析:解析 default 语句在 switch 语句中可以省略,所以 B 选项错误;switch 语句中并非每个 case后都需要使用 break 语句,所以 C

    41、 选项错误;break 语句还可以用于 for 等循环结构中,所以 D 选项错误。27.下列选项中与 if(a=1)a=b;else a+;语句功能不同的 switch 语句是_。(分数:2.50)A.switch(a=1)case 0:a=b;break;case 1:a+; B.switch(a)case 1:a=b;break;default:a+;C.switch(a)default:a+;break;case 1:a=b;D.switch(a=1)case 1:a=b;break;case 0:a+;解析:解析 if 语句的含义是:如果 a 的值为 1,将 b 的值赋给 a,否则将

    42、a 的值自增 1。选项 A 中,switch(a=1)中表达式 a=1 的结果如果为真,即为 1,则从 case1 开始执行 a+;如果 a=1 的结果为假,即 0,则从 case0 开始执行 a=b,所以与题于含义执行操作相反的是选项 A 中的语句。28.有以下程序: #includestdio.h main() in y=10; while(y-); printf(“y=%d/n“,y); 程序执行后的输出结果是_。 Ay=0 By=-1 c)y=1 Dwhile 构成无限循环 (分数:2.50)A.B. C.D.解析:解析 执行 y-直到值为 0,由于 y-是先用再减,所以退出循环时,y

    43、 的值为-1。29.有以下程序: #includestdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:2.50)A.1 B.2C.4D.死循环解析:解析 -k 先自减再使用,所以第一次判断条件即为 while(4),条件为真执行打印 k 的值 k=4-3,结果为 1,第二次判断条件即为 while(0),条件为假,结束循环,打印回车换行符,所以选择 A 选项。30.有以下函数: int fun(char*s) char*t=s; while(*t+); return(t-s); 该函

    44、数的功能是_。(分数:2.50)A.计算 s 所指字符串的长度B.比较两个字符串的大小C.计算 s 所指字符串占用内存字节的个数 D.将 s 所指字符串复制到字符串 t 中解析:解析 首先 char * s 接受一个字符型数组的首地址,并将这个首地址赋给另一个字符型指针char*t,while(*t+)不断循环直到*t 为“/0“,循环结束,此时指针 t 指向结束标记“/0“后,所以return(t-s)返回的是字符串 s 所占的字节数。31.有以下函数: int aaa(char*s) char*t=s; while(*t+); t-; return(t-s); 以下关于 aaa 函数功能叙

    45、述正确的是_。(分数:2.50)A.将串 s 复制到串 tB.比较两个串的大小C.求字符串 s 的长度 D.求字符串 s 所占字节数解析:解析 本题重点考查的知识点是 while 循环语句的应用。aaa()函数中,首先定义了一个字符指针t 指向形参 s,然后通过一个 while 循环让指针 t 不断递增,直到 t 指向字符串结束标识处。当 t 指向结束标识处时,由于后缀+运算符的原因,它还会被再递增 1,所以接下来的 t-语句让它回到结束标识处。最后返回 t-s,s 还是指向字符串第一个字符处,而 t 指向了字符串结尾,故返回值为字符串的长度值,因此 C 选项正确。32.在以下给出的表达式中,

    46、与 while(E)中的(E)不等价的表达式是_。(分数:2.50)A.(E0|E0)B.(E=0) C.(!E=0)D.(E!=0)解析:解析 while 语句中条件表达式 E 的值不为 0 即为真,认为满足条件,所以与 B 选项中表达式的含义正好相反,选择 B 选项。33.以下不构成无限循环的语句或语句组是_。(分数:2.50)A.n=0;do+n;while(n=0); B.n=0;while(1)n+;C.n=10;while(n);n-;D.for(n=0,i=1;i+)n+=i;解析:解析 A 选项中 do 后面的语句只执行了一次便结束了循环;B 选项中条件 while(1)永远成立,所以是死循环;C 选项中 n 的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死循环;D 选项中for 语句第二个表达式为空,所以没有判断条件,进入死循环。34.若变量已正确定义,有以下程序段:i=0;do printf(“%d,“,i);while(i+);printf(“%d/n“,i);程序的运行结果是_。(分数:2.50)A.0,1 B.0,0C.1,1D.程序进入无限循环解析:解析 第一次首先执行循环体,打印 i 的值 0,然后判断 while


    注意事项

    本文(【计算机类职业资格】二级C语言-441及答案解析.doc)为本站会员(Iclinic170)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开