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

    【计算机类职业资格】国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案解析.doc

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

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

    【计算机类职业资格】国家二级C语言(选择结构、循环结构)机试模拟试卷2及答案解析.doc

    1、国家二级 C 语言(选择结构、循环结构)机试模拟试卷 2 及答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:32,分数:64.00)1.下列选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是( )。(分数:2.00)A.x2=0B.x2C.x21=0D.x2=12.若 a 是数值类型,则逻辑表达式(a=1)|(a!=1)的值是( )。(分数:2.00)A.1B.0C.2D.不知道 a 的值,不能确定3.当变量 13 的值不为 2、4、6 时,值为“真”的表达式是( )。(分数:2.00)A.(c=2&e=6)&(c2!=1)B.(c=2)|(c=4)|(c=6)C

    2、.(c=2&c=6)&!(c2)D.(c=2&c=6)|(c!=3)|(c!=5)4.有以下程序:#includestdiohmain()int a=1,b=2,c=3,d=0;if(a=1&b+=2)if(b!=2|c-!=3)printf(“d,d,dn“,a,b,c);else printf(“d,d,dn“,a,b,c);else printf(“d,d,dn“,a,b,c);程序的运行结果是( )。(分数:2.00)A.1,3,2B.1,3,3C.1,2,3D.3,2,15.下列关于逻辑运算符两侧运算对象的叙述中正确的是( )。(分数:2.00)A.可以是任意合法的表达式B.只能是整

    3、数 0 或非 0 整数C.可以是结构体类型的数据D.只能是整数 0 或 16.设有宏定义:#define IsDIV(k,n)(kn=1)?1:0),且变量 m 已确定义并赋值,则宏调用:IsDIV(m,5)&IsDIV(m,7)为真时所要表达的是( )。(分数:2.00)A.判断 m 是否能被 5 和 7 整除B.判断 m 被 5 和 7 整除是否都余 1C.判断 m 被 5 或者 7 整除是否余 1D.判断 m 是否能被 5 或者 7 整除7.if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是( )。(分数:2.00)A.必须是逻辑值B.必须是整数值C.必须是

    4、正数D.可以是任意合法的数值8.下列条件语句中,输出结果与其他语句不同的是( )。(分数:2.00)A.if(a!=0)printf(“,dn“,x);else printf(“dn“,y);B.if(a=0)printf(“dn“,y);else printf(“dn“,x);C.if(a=0)printf(“dn“,x);else printf(“dn“,y);D.if(a)printf(“dn“,x);ese printf(“dn“,y);9.有以下程序:#includestdiohmain()int a=0,b=0,c=0,d=0;if(a=1)b=1;c=2;else d=3;pri

    5、ntf(“d,d,d,dn“,a,b,c,d);程序的运行结果是( )。(分数:2.00)A.1,1,2,0B.0,0,0,3C.编译有错D.0,1,2,010.设有定义:int a=1,b=2,c=3;以下语句中执行效果与其他 3 个不同的是( )。(分数:2.00)A.if(ab)c=a,a=b,b:c;B.if(ab)c=a,a=b,b=c;C.if(ab)c=a;a=b;b=c;D.if(ab)c=a;a=b;b=c;11.有嵌套的 if 语句:if(ab)if(ac)k=a;else k=c;else if(bc)k=b;else k=c;以下选项中与上述 if 语句等价的语句是(

    6、)。(分数:2.00)A.k=(ab)?(bc)?a:b):(bc)?b:c);B.k=(ab)?(ac)?a:c):(bc)?b:c);C.k=(ab)?a:b;k=(bc)?b:c;D.k=(ab)?a:b;k=(ac)?a:c;12.有以下程序:#includestdiohmain()int x=1,y=2,z=3;if(xy)if(yz)printf(“d“,+z);elseprintf(“d“,+y);printf(“dn“,x+);程序的运行结果是( )。(分数:2.00)A.1B.41C.2D.33113.以下程序段中,与语句 k=ab?(bc?1:0):0;功能相同的是( )。

    7、(分数:2.00)A.if(ab)|(bc)k=1; else k=0;B.if(ab)&(bc)k=1; 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;14.有以下程序:#includestdiohmain()int x=1,y=0,a=0,b=0;switch(x)case1:switch(y)ease0:a+;break;ease1:b+;break;ease2:a+;b+;break;case3:a+;b+;printf(“a=d,b=dn“,a,b);程序的运行结果是( )。

    8、(分数:2.00)A.a=2,b=2B.a=2,b=1C.a=1,b:1D.a=1,b=015.若有定义:float x=15;int a=1,b=3,c=2;,则正确的 switch 语句是( )。(分数:2.00)A.switch(a+b) ease1:printf(“*n“); ease2+1:printf(“*n“);B.switch(int)x); ease1:printf(“*n“); case2:printf(“*n“);C.switch(x) case10:printf(“*n“); ease20:printf(“*n“);D.switch(a+b) case1:printf(

    9、“*n“); case c:printf(“*n“);16.下列叙述中正确的是( )。(分数:2.00)A.在 switch 语句中不一定使用 break 语句B.在 switch 语句中必须使用 default 语句C.break 语句必须与 switch 语句中的 ease 配对使用D.break 语句只能用于 switch 语句17.下列选项中与 if(a=1)a=b;elsea+;语句功能不同的 switch 语句是( )。(分数:2.00)A.switch(a=1) ease0:a=b;break; case1:a+; B.switch(a) ease1:a=b;break; def

    10、ault:a+; C.switch(a) default:a+;break; ease1:a=b; D.switch(a=1) case1:a=b;break; ease0:a+; 18.有以下程序:#includestdiohmain()int y=10:while(y-);printf(“y=dn“,y);程序执行后的输出结果是( )。(分数:2.00)A.y=0B.y=-1C.y=1D.while 构成无限循环19.有以下程序:#includestdiohmain()int k=5:while(-k)printf(“d“,k-=3);printf(“n“);执行后的输出结果是( )。(分

    11、数:2.00)A.1B.2C.4D.死循环20.有以下函数:int fun(char*s)char*t=s;while(*t+);return(t-s);该函数的功能是( )。(分数:2.00)A.计算 s 所指字符串的长度B.比较两个字符串的大小C.计算 S 所指字符串占用内存字节的个数D.将 s 所指字符串复制到字符串 t 中21.有以下函数:int aaa(char,*s)char,*t=s:;while(*t+);t-;return(t-s);以下关于 aaa函数功能叙述正确的是( )。(分数:2.00)A.将串 s 复制到串 tB.比较两个串的大小C.求字符串 s 的长度D.求字符串

    12、 s 所占字节数22.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。(分数:2.00)A.(E0|E0)B.(E=0)C.(!E=0)D.(E!=0)23.以下不构成无限循环的语句或语句组是( )。(分数:2.00)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;24.若变量已正确定义,有以下程序段:i=0;do printf(“d,“,i);while(i+);printf(“dn“,i);程序的运行结果是( )。(分数:2.00)A.0,1B

    13、.0,0C.1,1D.程序进入无限循环25.以下程序段中的变量已正确定义:for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“);程序的运行结果是( )。(分数:2.00)A.*B.*C.*D.*26.有以下程序:#i13cludestdiohmain()int y=9;for(;y0;y-)if(y3=0)printf(“d“,-y);程序的运行结果是( )。(分数:2.00)A.852B.963C.741D.87542127.有以下程序:#includestdiohmain()int a=1,b=2;for(;a8;a+)b+=a;a+=2;printf(“

    14、d,dn“,a,b);程序运行后的输出结果是( )。(分数:2.00)A.9,18B.8,11C.7,11D.10,1428.有以下程序:#includestdiohmain()int x=8;for(;x0;x-)if(x3)printf(“d,“,x-);continue;printf(“d,“,-x);程序的运行结果是( )。(分数:2.00)A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,29.有以下程序:#includestdiohmain()int b33=0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)

    15、t+=bibji/;printf(“dn“,t);程序的运行结果是( )。(分数:2.00)A.3B.4C.1D.930.有以下程序:#includestdiohmain()int i;for(i=1;i=40;i+)if(i+5=0)if(+i8=0)printf(“d“,i);printf(“n“);程序的运行结果是( )。(分数:2.00)A.5B.24C.32D.4031.有以下程序:#includestdiohmain()int i,j,m=55;for(i=1;i=3;i+)for(j=3;j=i;j+)m=mj;printf(“dn“,m);程序的运行结果是( )。(分数:2.0

    16、0)A.0B.1C.2D.332.下列叙述中正确的是( )。(分数:2.00)A.continue 语句的作用是使程序的执行流程跳出包含它的所有循环B.break 语句只能用在循环体内和 switch 语句体内C.在循环体内使用 break 语句和 continue 语句的作用相同D.break 语句只能用于 switch 语句体中国家二级 C 语言(选择结构、循环结构)机试模拟试卷 2 答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:32,分数:64.00)1.下列选项中,当 x 为大于 1 的奇数时,值为 0 的表达式是( )。(分数:2.00)A.x2=0 B.x2

    17、C.x21=0D.x2=1解析:解析:算术运算符的优先级高于关系运算符的优先级,所以当 x 为大于 1 的奇数时,A 选项的值为假,即 0。B 选项的值为不定值,但绝对不是 0。C 选项的值为真,即 1。D 选项的值为真,即 1。2.若 a 是数值类型,则逻辑表达式(a=1)|(a!=1)的值是( )。(分数:2.00)A.1 B.0C.2D.不知道 a 的值,不能确定解析:解析:逻辑或“|”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道 a 的值,但是若 a 为 1,则左边运算对象为 1;若 a 的值不是 1,则右边运算对象的值为 1,所以总能保证一边非零。3.当变量 13 的值不

    18、为 2、4、6 时,值为“真”的表达式是( )。(分数:2.00)A.(c=2&e=6)&(c2!=1)B.(c=2)|(c=4)|(c=6)C.(c=2&c=6)&!(c2)D.(c=2&c=6)|(c!=3)|(c!=5) 解析:解析:逻辑或运算符中只要有一个运算量为真,结果就是真,当 c=2&c=6 条件不成立时,c的值肯定不是 2、3、4、5、6,所以 c!=3 与 c!=5 均成立,所以 D 选项的结果一定为真。4.有以下程序:#includestdiohmain()int a=1,b=2,c=3,d=0;if(a=1&b+=2)if(b!=2|c-!=3)printf(“d,d,d

    19、n“,a,b,c);else printf(“d,d,dn“,a,b,c);else printf(“d,d,dn“,a,b,c);程序的运行结果是( )。(分数:2.00)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

    20、 的值 1,b 的值 3,c 的值 3。5.下列关于逻辑运算符两侧运算对象的叙述中正确的是( )。(分数:2.00)A.可以是任意合法的表达式 B.只能是整数 0 或非 0 整数C.可以是结构体类型的数据D.只能是整数 0 或 1解析:解析:C 语言的逻辑运算符比较特别,它的垛作数没有明确的数据类型,可以是任意合法的表达式,所以选择 A。6.设有宏定义:#define IsDIV(k,n)(kn=1)?1:0),且变量 m 已确定义并赋值,则宏调用:IsDIV(m,5)&IsDIV(m,7)为真时所要表达的是( )。(分数:2.00)A.判断 m 是否能被 5 和 7 整除B.判断 m 被 5

    21、 和 7 整除是否都余 1 C.判断 m 被 5 或者 7 整除是否余 1D.判断 m 是否能被 5 或者 7 整除解析:解析:本题考查逻辑运算符的相关概念。逻辑与若要为真,那么两边都要为真,所以需要 m 能被 5和 7 整除都余 1,所以选项 B 正确。7.if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是( )。(分数:2.00)A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值 解析:解析:if 语句中的表达式可以是任意合法的数值,如常量、变量表达式,所以 D 选项正确。8.下列条件语句中,输出结果与其他语句不同的是( )。(分数:2.0

    22、0)A.if(a!=0)printf(“,dn“,x);else printf(“dn“,y);B.if(a=0)printf(“dn“,y);else printf(“dn“,x);C.if(a=0)printf(“dn“,x);else printf(“dn“,y); D.if(a)printf(“dn“,x);ese printf(“dn“,y);解析:解析:A、B、D 选项的含义均为:a 的值如果为 0,打印 y 的值,否则打印 x 的值。而 C 选项的含义是:a 的值为 0 时打印 x 的值,不为 0 时打印 y 的值,与其他选项正好相反。9.有以下程序:#includestdioh

    23、main()int a=0,b=0,c=0,d=0;if(a=1)b=1;c=2;else d=3;printf(“d,d,d,dn“,a,b,c,d);程序的运行结果是( )。(分数:2.00)A.1,1,2,0B.0,0,0,3C.编译有错 D.0,1,2,0解析:解析:本题中 if(a=1)b=1;与 else d=3;之间多了语句 c=2;,所以会出现 else 语句的位置错误的编译失败提示。10.设有定义:int a=1,b=2,c=3;以下语句中执行效果与其他 3 个不同的是( )。(分数:2.00)A.if(ab)c=a,a=b,b:c;B.if(ab)c=a,a=b,b=c;C

    24、.if(ab)c=a;a=b;b=c; D.if(ab)c=a;a=b;b=c;解析:解析:因为变量 a=1,b=2 所以条件 ab 不成立,选项 A、B 和 D 相当于一条语句,选项 A 是逗号表达式,选项 B 和选项 D 是复合语句,所以都没有执行。选项 C 中,语句“c=a”不执行,语句“a=b;b=c;”执行。故选项 C 符合题意。11.有嵌套的 if 语句:if(ab)if(ac)k=a;else k=c;else if(bc)k=b;else k=c;以下选项中与上述 if 语句等价的语句是( )。(分数:2.00)A.k=(ab)?(bc)?a:b):(bc)?b:c);B.k=

    25、(ab)?(ac)?a:c):(bc)?b:c); C.k=(ab)?a:b;k=(bc)?b:c;D.k=(ab)?a:b;k=(ac)?a:c;解析:解析:题目中嵌套语句的含义是当 ab 且 ac 成立时,将 a 的值赋给 k,如果 ab 成立而 ac不成立,则将 c 的值赋给 k。如果 ab 不成立而 bc 成立,则将 b 的值赋给 k,如果 ab 不成立且bc 也不成立,则将 c 的值赋给 k。判断条件表达式,只有 B 选项可以表示这个含义。12.有以下程序:#includestdiohmain()int x=1,y=2,z=3;if(xy)if(yz)printf(“d“,+z);e

    26、lseprintf(“d“,+y);printf(“dn“,x+);程序的运行结果是( )。(分数:2.00)A.1 B.41C.2D.331解析:解析:else 总是与离它最近的 if 配对,所以第一个 if 语句的判断条件不成立,不再执行第二个if 语句和与第二个 if 语句配对的 else 语句,而是直接执行打印 x+的操作,打印 x 的值 1 以后再加 1。13.以下程序段中,与语句 k=ab?(bc?1:0):0;功能相同的是( )。(分数:2.00)A.if(ab)|(bc)k=1; else k=0;B.if(ab)&(bc)k=1; else k=0; C.if(a=b)k=0

    27、; else if(b= c)k=1;D.if(ab)k=1; else if(bc)k=1; else k=0;解析:解析:条件表达式的含义是,如果表达式 1 成立,结果为表达式 2 的值,如果不成立,则为表达式3 的值。所以题干中 k 的值这样取值:如果 ab 且 bc,k 值结果为 1,如果 ab 且 bc,则值为 0。如果 ab,k 值为 0,也就是只要 ab 与 bc 中只要有一个条件不成立,k 的值就为 0,所以选择 B 选项。14.有以下程序:#includestdiohmain()int x=1,y=0,a=0,b=0;switch(x)case1:switch(y)ease0

    28、:a+;break;ease1:b+;break;ease2:a+;b+;break;case3:a+;b+;printf(“a=d,b=dn“,a,b);程序的运行结果是( )。(分数:2.00)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,然后

    29、执行外层case2 语句的 a+b+;,a 为 2,b 为 1,所以结果为 B 选项。15.若有定义:float x=15;int a=1,b=3,c=2;,则正确的 switch 语句是( )。(分数:2.00)A.switch(a+b) ease1:printf(“*n“); ease2+1:printf(“*n“); B.switch(int)x); ease1:printf(“*n“); case2:printf(“*n“);C.switch(x) case10:printf(“*n“); ease20:printf(“*n“);D.switch(a+b) case1:printf(“

    30、*n“); case c:printf(“*n“);解析:解析:B 选项中 switch(int)x);语句中不应该有最后的分号。switch(expr1)中的 expr1 不能用浮点类型或 long 类型,也不能为一个字符串,所以 C 选项错误。case 后面必须为常量表达式,所以 D 选项错误。16.下列叙述中正确的是( )。(分数:2.00)A.在 switch 语句中不一定使用 break 语句 B.在 switch 语句中必须使用 default 语句C.break 语句必须与 switch 语句中的 ease 配对使用D.break 语句只能用于 switch 语句解析:解析:de

    31、fault 语句在 switch 语句中可以省略,所以 B 选项错误;switch 语句中并非每个 case 后都需要使用 break 语句,所以 C 选项错误;break 语句还可以用于 for 等循环结构中,所以 D 选项错误。17.下列选项中与 if(a=1)a=b;elsea+;语句功能不同的 switch 语句是( )。(分数:2.00)A.switch(a=1) ease0:a=b;break; case1:a+; B.switch(a) ease1:a=b;break; default:a+; C.switch(a) default:a+;break; ease1:a=b; D.

    32、switch(a=1) case1:a=b;break; ease0:a+; 解析:解析:if 语句的含义是:如果 a 的值为 1,将 b 的值赋给 a,否则将 a 的值自增 1。选项 A 中,switch(a=1)中表达式 a=1 的结果如果为真,即为 1,则从 case1 开始执行 a+;如果 a=1 的结果为假,即 0,则从 case0 开始执行 a=b,所以与题干含义执行操作相反的是选项 A 中的语句。18.有以下程序:#includestdiohmain()int y=10:while(y-);printf(“y=dn“,y);程序执行后的输出结果是( )。(分数:2.00)A.y=

    33、0B.y=-1 C.y=1D.while 构成无限循环解析:解析:执行 y-直到值为 0,由于 y-是先用再减,所以退出循环时,y 的值为-1。19.有以下程序:#includestdiohmain()int k=5:while(-k)printf(“d“,k-=3);printf(“n“);执行后的输出结果是( )。(分数:2.00)A.1 B.2C.4D.死循环解析:解析:k 先自减再使用,所以第一次判断条件即为 while(4),条件为真执行打印 k 的值 k=4-3,结果为 1,第二次判断条件即为 while(0),条件为假,结束循环,打印回车换行符,所以选择 A 选项。20.有以下函

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

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

    36、符串结尾,故返回值为字符串的长度值,因此 C 选项正确。22.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。(分数:2.00)A.(E0|E0)B.(E=0) C.(!E=0)D.(E!=0)解析:解析:while 语句中条件表达式 E 的值不为 0 即为真,认为满足条件,所以与 B 选项中表达式的含义正好相反,选择 B 选项。23.以下不构成无限循环的语句或语句组是( )。(分数:2.00)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;解析

    37、:解析:A 选项中 do 后面的语句只执行了一次便结束了循环;B 选项中条件 while(1)永远成立,所以是死循环;C 选项中 n 的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死循环;D 选项中for 语句第二个表达式为空,所以没有判断条件,进入死循环。24.若变量已正确定义,有以下程序段:i=0;do printf(“d,“,i);while(i+);printf(“dn“,i);程序的运行结果是( )。(分数:2.00)A.0,1 B.0,0C.1,1D.程序进入无限循环解析:解析:第一次首先执行循环体,打印 i 的值 0,然后判断 while 的条件 i+,先用

    38、后自增,所以判断时条件为假,跳出循环,但是仍执行了 i 的自增操作,i 的值为 1,在接下来的打印语句中进行打印。25.以下程序段中的变量已正确定义:for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“);程序的运行结果是( )。(分数:2.00)A.*B.*C.* D.*解析:解析:由于内层循环 for(k=1;k3;k+)后面直接跟了空语句“;”,所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*”,选择 C 选项。26.有以下程序:#i13cludestdiohmain()int y=9;for(;y0;y-)if(y3=0)pr

    39、intf(“d“,-y);程序的运行结果是( )。(分数:2.00)A.852 B.963C.741D.875421解析:解析:第 1 次 for 循环,y 的值为 9,y3 的值为 0,满足条件打印-y,即先减一后打印,所以打印 8;第 2 次 for 循环,y 的值为 7,y3 的值为 l,不执行打印语句;第 3 次 for 循环,y 的值为6,y3 的值为 0,满足条件打印-y,即先减一后打印,所以打印 5;第 4 次 for 循环,y 的值为 4,不满足 if 条件,不执行打印语句;第 5 次 for 循环,y 的值为 3,满足 if 条件,打印输出 2;第 6 次 for循环,y 的

    40、值为 1,不满足条件,不执行打印语句。27.有以下程序:#includestdiohmain()int a=1,b=2;for(;a8;a+)b+=a;a+=2;printf(“d,dn“,a,b);程序运行后的输出结果是( )。(分数:2.00)A.9,18B.8,11C.7,11D.10,14 解析:解析:第 1 次循环,a 的值为 1,满足条件,执行 b+=a,与 a+=2,则 b 的值变为 3,a 的值变为3。执行 a+,a 的值为 4,满足条件进入第 2 次循环,执行完循环体后,b 的值为 7,a 的值为 6。执行a+,a 的值为 7,满足条件进入第 3 次循环,执行完循环体后,b

    41、的值为 14,a 的值为 9。执行 a+,a 的值变为 10,所以选择 D 选项。28.有以下程序:#includestdiohmain()int x=8;for(;x0;x-)if(x3)printf(“d,“,x-);continue;printf(“d,“,-x);程序的运行结果是( )。(分数:2.00)A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2, 解析:解析:eoutihue 语句的作用是跳出循环体中剩余的语句而进行下一次循环。第 1 次循环,x 的值为8,循环体中 if 条件成立,打印 x 的值 8 后将 x 减 1,再执行 continue 语句,

    42、跳出本次循环。第 2 次判断循环条件时,x 的值变为 6,不满足循环体内 if 条件,执行打印-x 的操作,即打印 5 后跳出循环。第3 次判断循环条件时 x 的值为 4,满足循环体内 if 条件,执行打印 x-的操作,即打印 4,后将 x 值减一,执行 continue 语句,跳出本次循环。第 4 次判断循环条件时 x 的值为 2,满足循环体内 if 条件,打印 x-,即打印 2,后将 x 减 1,29.有以下程序:#includestdiohmain()int b33=0,1,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+)t+=bibji/;pr

    43、intf(“dn“,t);程序的运行结果是( )。(分数:2.00)A.3B.4 C.1D.9解析:解析:每次内循环只循环一次就结束,第 1 次外循环时,t=t+b0b00/=1+b00=1+0=1;第 2 次外循环时,t=t+b1b11/=1+b11=1+1=2;第 3 次外循环时,t=t+b2b22/=2+b22=2+2=4。30.有以下程序:#includestdiohmain()int i;for(i=1;i=40;i+)if(i+5=0)if(+i8=0)printf(“d“,i);printf(“n“);程序的运行结果是( )。(分数:2.00)A.5B.24C.32 D.40解析

    44、:解析:本题的含义是在 140 的整数范围中,只有当 i 的值能被 5 整除,且 i+2 的值能被 8 整除时,打印 i 的值,满足这个条件的只有 32,所以选择 C 选项。31.有以下程序:#includestdiohmain()int i,j,m=55;for(i=1;i=3;i+)for(j=3;j=i;j+)m=mj;printf(“dn“,m);程序的运行结果是( )。(分数:2.00)A.0B.1 C.2D.3解析:解析:第 1 次执行外循环 i 的值为 1,满足条件,判断第 1 次内循环,j 的值为 3,不满足条件,跳出内循环。第 2 次执行外循环 i 的值为 2,同理也不满足内

    45、循环条件,跳出内循环。第 3 次执行外循环i 的值为 3,此时进入内循环判断条件时,条件成立,执行 m=mj,m 的值为 l,跳出内循环,跳出外循环,打印 m 的值。32.下列叙述中正确的是( )。(分数:2.00)A.continue 语句的作用是使程序的执行流程跳出包含它的所有循环B.break 语句只能用在循环体内和 switch 语句体内 C.在循环体内使用 break 语句和 continue 语句的作用相同D.break 语句只能用于 switch 语句体中解析:解析:continue 语句的作用是跳过循环体中剩余的语句而进行下一次循环,所以 A 选项错误。break 语句的作用是终止正在执行的 switch 流程,跳出 switch 结构或者强制终止当前循环,从当前执行的循环中跳出,所以 C、D 选项错误。


    注意事项

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




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

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

    收起
    展开