[计算机类试卷]国家二级C语言机试(循环结构程序设计)模拟试卷2及答案与解析.doc

上传人:deputyduring120 文档编号:498009 上传时间:2018-11-30 格式:DOC 页数:27 大小:62KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(循环结构程序设计)模拟试卷2及答案与解析.doc_第1页
第1页 / 共27页
[计算机类试卷]国家二级C语言机试(循环结构程序设计)模拟试卷2及答案与解析.doc_第2页
第2页 / 共27页
[计算机类试卷]国家二级C语言机试(循环结构程序设计)模拟试卷2及答案与解析.doc_第3页
第3页 / 共27页
[计算机类试卷]国家二级C语言机试(循环结构程序设计)模拟试卷2及答案与解析.doc_第4页
第4页 / 共27页
[计算机类试卷]国家二级C语言机试(循环结构程序设计)模拟试卷2及答案与解析.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、国家二级 C语言机试(循环结构程序设计)模拟试卷 2及答案与解析 一、选择题 1 若有以下程序 #include main() int a=-2, b=0; do +b ; while(a+); printf(“%d,%dn“, a, b); 则程序的输出结果是( )。 ( A) 1,3 ( B) 0,2 ( C) 1,2 ( D) 2,3 2 若有以下程序 #include main() int a=6, b=0, c=0; for ( ;a ) b += a; a -= c+; printf(“%d,%d,%dn“, a,b,c); 则程序的输出结果是( )。 ( A) 6,6,1 ( B

2、) 6,0,0 ( C) 5,6,0 ( D) 5,6,1 3 有以下程序 #include main() int i, sum; for( i=1; i main() int a = 3; do printf(“%d,“, a-=2 ); while( ! (-a) ); printf(“n“); 程序运行后的输出结果是( )。 ( A) 1, -2, ( B) 1, ( C) 3,0, ( D) 1,0 5 以下叙述中正确的是( )。 ( A)使用 break语句可以使流程跳出 switch语句体 ( B) break语句不能用于提前结束 for语句的本层循环 ( C) continue语

3、句使得整个循环终止 ( D)在 for语句中, continue与 break的效果是一样的,可以互换 6 以下叙述中正确的是( )。 ( A)三种循环 for,while,do-while可以互相嵌套 ( B)循环发生嵌套时,最多只能两层 ( C)循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误 ( D) for语句的圆括号中的表达式不能都省略掉 7 以下叙述中正确的是( )。 ( A)只要适当地修改代码,就可以将 do-while与 while相互转换 ( B)对于 “for(表达式 1;表达 式 2;表达式 3) 循环体 “首先要计算表达式 2的值,以便决定是否开始循环 ( C)对

4、于 “for(表达式 1;表达式 2;表达式 3) 循环体 “,只在个别情况下才能转换成 while语句 ( D)如果根据算法需要使用无限循环(即通常所称的 “死循环 “) ,则只能使用while语句 8 以下叙述中正确的是( )。 ( A)只能在循环体内和 switch语句体内使用 break语句 ( B)当 break出现在循环体中的 switch语句体内时,其作用是跳出该 switch语句体,并中止循环体的执行 ( C) continue语句的 作用是:在执行完本次循环体中剩余语句后,中止循环 ( D)在 while语句和 do-while语句中无法使用 continue语句 9 若变量

5、已正确定义 for( x=0,y=0; ( y!=99 for( x=3; x main() int a, b; for( a=1,b=1; a=20) break; if(b % 3=1) b=b+3; continue; b=b-5; printf(“%dn“,a); 程序的输出结果是( )。 ( A) 8 ( B) 10 ( C) 9 ( D) 7 13 有以下程序 #include main() int a = -2, b = 0; while (a+ printf(“%d,%dn“, a, b ); 程序运行后输出结果是( )。 ( A) 1,2 ( B) 0,3 ( C) 1,3

6、( D) 0,2 14 有以下程序 #include main() int a=0, b=0; for( ;a main() char c; while(c=getchar() != #) putchar(c); 执行时如输入 abcdefg# , 则输出结果是( )。 ( A) abcdefg ( B) abcdefg# ( C) abcdefg# ( D) # 16 有以下程序 #include main() int a=1,b=1; while(a-) b-; printf(“%d,%dn“, a,b); 程序的运行结果是( )。 ( A) -1,0 ( B) 0,0 ( C) -1,-

7、1 ( D) 1,1 17 有以下程序 #include main() int a=1, b=0; for(;a main() char c; do c=getchar(); putchar(c); while(c != #); printf(“n“); 执行时如输入: abcdefg# , 则输出结果是( )。 ( A) abcdefg# ( B) abcdefg ( C) abcdefg# ( D) # 19 若变量已正确定义,则以下 for循环 for ( x=0,y=0; ( y!=123 ) for( i=1; i main() int x=23; do printf(“%2dn“,

8、 x-); while( !x ); 程序的执行结果是( )。 ( A)输出 23 ( B)输出 321 ( C)不输出任何内容 ( D)陷入无限循环 23 有以下程序 #include main() int i=0, sum=1; do sum += i+ ; while( i main() int i, data; scanf(“%d“, for (i=0; i后,程序输出结果为( )。 ( A) 3,4, ( B) 1,2,3,4, ( C) 0,1,2,3,4,5, ( D) 0,1,2, 25 有如下程序 #include main() int i, data; scanf(“%d“

9、, for (i=0; i data) break; printf(“%d,“, i); printf(“n“); 程序运行时,从键盘输入: 3后 ,程序输出结果为( )。 ( A) 0,1,2,3, ( B) 0,1, ( C) 3,4,5, ( D) 3,4, 26 有如下程序 #include main() char a = 3, b = A; int i; for (i=0; i main() int i; for (i=0; i main() int i = 1; for (printf(“%d“, i); i main() char ch = A; while (ch main()

10、 char ch = M; while (ch != K) ch -; putchar(ch); printf(“n“); 程序运行后的输出结果是( )。 ( A) LK ( B) MN ( C) OP ( D) MM 31 若要实现 total=1+2+3+4+5求和 ,以下程序段错误的是( )。 ( A) int i=1,total=1; while(i main() int i=1,k=0; for( ; i main() int x=0,y=6; do while(-y) x+; while(y-); printf(“%d,%dn“,x,y); 程序的运行结果是( )。 ( A) 5,

11、-1 ( B) 6,0 ( C) 5,0 ( D) 6,-1 35 有以下程序 #include main() char *s=“120119110“; int n0,n1,n2,nn,i; n0=n1=n2=nn=i=0; do switch(si+) default : nn+; case 0 : n0+; case 1 : n1+; case 2 : n2+; while(si); printf(“n0=%d,n1=%d,n2=%d,nn=%dn“,n0,n1,n2,nn); 程序的运行结果是( )。 ( A) n0=3,n1=8,n2=9,nn=1 ( B) n0=2,n1=5,n2=

12、1,nn=1 ( C) n0=2,n1=7,n2=10,nn=1 ( D) n0=4,n1=8,n2=9,nn=1 36 有以下程序 #include main() int a=2,3,5,4,i; for(i=0;i4;i+) switch(i%2) case 0: switch(ai%2) case 0:ai+;break; case 1:ai-; break; case 1:ai=0; for(i=0;i4;i+) printf(“%d “,ai); printf(“n“); 程序运行后的输出结果是( )。 ( A) 3 0 4 0 ( B) 2 0 5 0 ( C) 3 3 4 4 (

13、 D) 0 3 0 4 国家二级 C语言机试(循环结构程序设计)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 考查 do-while循环语句。其执行过程为:先执行 do循环体语句,然后判定圆括号内的表达式,如果 为真则继续执行 do循环体语句,如果为假则结束循环。该程序循环结束条件为表达式 (a+)的值为 0,即 a从 -2自增到 0,循环体循环 3次,所以 b=3,表达式 (a+)执行完毕之后 a=1,所以答案选 A。 【知识模块】 循环结构程序设计 2 【正确答案】 A 【试题解析】 for语句的循环条件是表达式 “a 表达式 2; 表达式 3 ) 循环体语句 “

14、,其执行流程是先计算表达式 1,之后计算表达式 2,根据表达式 2的值来判定是否进行循环,若为真,则执行循环体,循环体执行完毕之后再计算表达式 3的值。该循环的循环条件是( y!=99 “执行循环体 s,则循环条件 “!E“为真,即表达式 E需为假,而 C语言中用非 0表示真, 0表示假,所以 E需要等于 0,答案选 A。 【知识模块】 循环结构程序设计 11 【正确答案】 A 【试题解析】 输出语句 “printf( (x%2 ) ? (“*%d“) :( “#%d“),x);“的意思是如果 x不能 被 2整除,也就是 “x%2“的值为真,则在输出的 x前输出 “*“,若是能被 2整除,则在

15、输出的 x前输出 “#“, for循环中 x从 3循环到 5,所以答案选 A。 【知识模块】 循环结构程序设计 12 【正确答案】 A 【试题解析】 考查 break和 continue的用法。 break语句用于循环体,其作用是跳出当前层循环, continue语句是跳过当前循环层余下未执行的语句,继续执行下一次循环。该程序中的 for语句的循环条件是 a小于等于 100,当 b的值大于等于 20的时候就跳出循环并输出当前 a的值。 b值的变化 逻辑是每次判定 “b%3“的值若为 1,则 b自增 3,否则, b自减 5。其实该程序中,选择语句 “if(b%3=1) “的判定条件一直为真,所以

16、 b的值为 “1+a*3“,易求得满足跳出条件的 a值为 8,答案选 A。 【知识模块】 循环结构程序设计 13 【正确答案】 A 【试题解析】 while循环的循环条件是表达式 “a+ 表达式 2; 表达 式 3 ) 循环体语句 “,其执行流程是先计算表达式 1,之后计算表达式 2,根据表达式 2的值来判定是否进行循环,若为真,则执行循环体,循环体执行完毕之后再计算表达式 3的值。该循环的循环条件是( y!=123 表达式 2; 表达式 3 ) 循环体语句 “,其执行流程是先计算表达式 1,之后计算表达式 2,根据表达式 2的值来判定是否进行循环,若为真 ,则执行循环体,循环体执行完毕之后再

17、计算表达式 3的值。整个循环过程中,表达式的值只会执行一次,而表达式 2、 3以及循环体每次循环都会执行,所以答案选 A。 【知识模块】 循环结构程序设计 29 【正确答案】 A 【试题解析】 字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算,所以该程序的逻辑是,在字符 ch的 ASCII码小于 D的 ASCII码的情况下,输出 ch与 A之间的 ASCII码的差值。其中 A-A=0;B-A=1 易得答案选 A。 【知识模块】 循环结构程序设计 30 【正确答案】 A 【试题解析】 while执行逻辑是如果字符 ch不为 ?K?,则先自减 1,再输

18、出对应的字符,这里的自减 1指的是字符的 ASCII码减 1,其实就是字符由 ?M?变为 ?L?。循环体执行 2次,第 1次输出 ?L?,第 2次输出 ?K?,第 3次循环条件不满足,退出循环,所以答案选 A。 【知识模块】 循环结构程序设计 31 【正确答案】 A 【试题解析】 选项 A)记录的数据是 total = 1+1+2+3+4,和题意不符,答案选A)。 【知识 模块】 循环结构程序设计 32 【正确答案】 A 【试题解析】 break语句用于循环体,可以跳出当前层循环, continue语句的作用则是跳过当前循环层余下未执行的语句,继续执行下一次循环。在该程序中当 i为 2的时候执

19、行语句 “ case 2: k+; continue;“跳过了 i自加语句 “i+=1;“,所以 i值不再变化,程序陷入死循环,答案选 A。 【知识模块】 循环结构程序设计 33 【正确答案】 A 【试题解析】 5!的计算公式是 1*2*3*4*5, do-while语句是先执行 循环体再判定循环条件。选项 B) fac的值恒为 0,选项 C)多计算了数字 6,选项 D)中 fac的值恒为 0,所以答案选 A)。 【知识模块】 循环结构程序设计 34 【正确答案】 A 【试题解析】 考查 do-while和 while循环语句的执行过程。 do-while语句是先执行循环体再判定循环条件,而

20、while语句是先判定循环条件再执行循环体。自减运算符前置时,该变量是先自减 1后再参与其他运算;自减运算符后置时,该变量是先参与运算后再自减 1。由此,当 y=1时,内层循环结束,此时 x=5, y=0。外层循环 的判定条件 “y-“也为假,判定语句执行后 y=-1,所以答案选 A。 【知识模块】 循环结构程序设计 35 【正确答案】 A 【试题解析】 switch语句执行过程中, default语句块最后执行, case或者default只是作为一个入口,如果执行完某一个 case或者 default语句块之后没有遇到 break,则继续往下执行。该程序中的循环是遍历数组 s中的元素:为

21、0时,n0、 n1、 n2均自增 1;为 1时, n1、 n2自增 1;为 2时,只有 n2自增 1;其他情况, nn、 n0、 n1、 n2均自增 1;数组 s中有 2个 ?0?, 5个 ?1?, 1个 ?2?和 1个 ?9?,循环终止的条件是字符串末尾的 ?0?,对应的整数为 0,所以答案选“n0=3,n1=8,n2=9,nn=1“。 【知识模块】 循环结构程序设计 36 【正确答案】 A 【试题解析】 该函数的逻辑是:若数组 a中元素下标为偶数并且该元素也为偶数则该元素自加 1,若元素下标为偶数并且该元素为奇数则该元素自减 1,若该元素下标为奇数则设定该元素为 0,所以结果输出为选项 A)。 【知识模块】 循环结构程序设计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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