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

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

1、国家二级 C语言机试( C语言程序设计)模拟试卷 3及答案与解析 一、选择题 1 有以下程序 main() int a=3: a+=a-=a*a: printf(“ d n“, a); 程序的输出结果是 ( A) 9 ( B) 3 ( C) -12 ( D) 0 2 若有以下程序 #include main() int b=10, a=-11; a =b =4: printf(“ d d n“, a, b); ) 则程序的输出结果是 ( A) 1 2 ( B) -1-2 ( C) -1 2 ( D) 1-2 3 有以下程序 main() char a, b, c, d; scanf(“ c c

2、“, &a, &b); c=getchar(); d=getchar(); printf(“ c c c c n“, a, b, c, d); 当执行程序时,按下列方式输入数据 (从第 1列开始,代表回车,注意:回车也是一个字符 ) 12 34则输出结果是 ( A) 12 ( B) 1234 ( C) 12 3 ( D) 12 34 4 设变量均已正确定义,若要通过 scanf(“ d c d c“, &a1, &c1, &a2,&c2);语句为变量 a1和 a2赋数值 10和 20,为变量 c1和 c2赋字符 X和 Y。以下所示的输入形式中正确的是 (注: 代表空格字符 ) ( A) 10X

3、20Y ( B) 10X20Y ( C) 10X 20Y ( D) 10X20Y 5 若有定义: int a, b:通过语句 scanf(“ d; d“, &a, &b);能把整数 3赋给变量 a, 5赋给变量 b的 输入数据是 ( A) 3 5 ( B) 3 5 ( C) 3; 5 ( D) 35 6 设有定义: double a,b, c;若要求通过输入分别给 a、 b、 C输入 1、 2、 3,输入形式如下 (注:此处口代表一个空格 )1 02 0133 0则能进行正确输入的语句是 ( A) scanf(“ 1f 1f 1f“,a, b, c); ( B) scanf(“ f f f“,

4、 &a, &b, &c); ( C) scanf(“ 1f 1f 1f“, &a, &b, &c); ( D) scanf(“ 5 11f 5 11f 5 11f“, &a, &b, &c); 7 以下叙述中正确的是 ( A)在 scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上 ( B)在使用 scanf函数输入整数或实数时,输入数据之间只能用空格来分隔 ( C)在 printf函数中,各个输出项只能是变量 ( D)使用 printf函数无法输出百分号 8 有以下程序 #include main() int a1, a2; char c1, c2; scanf(” d c

5、d c”, a1, c1, &a2, &c2); printf(“ d, c, d, c“, a1, c1, a2, c2); ) 若想通过键盘输入,使得 a1的值为 12, a2的值为 34, c1的值为字符 a, c2的值为字符 b,程序输出结果是: 12, a, 34, b则正确的输入格式是 (以下口代表空格,代表回车 ) ( A) 12a34b ( B) 12, a, 34, b ( C) 12a34b ( D) 12a34b 9 若有定义语句: double x, y,*px, *py;执行 px=&x; py=&y;正确的输入语句是 ( A) scanf(“ f f“&x, &y)

6、; ( B) scanf(“ f f“, x, y); ( C) scanf(“ 1f 1e“, px, py); ( D) scanf(“ 1f 1f“, x, y); 10 若在定义语句: int a, b, c, *p=&c;接着执行以下选项中的语句,则能正确执行的语句是 ( A) scanf(“ d d d“, a, b, c); ( B) scanf(“ d“, a, b, c); ( C) scanf(“ d“, p); ( D) scanf(“ d“, &p); 11 有以下程序段 char name20; int num; scanf(“name= s num= d“, nam

7、e, &nurn); 当执行上述程序段,并从键盘输入: name=Lili num=1001后, name的值为 ( A) name=Lili ( B) Lili num= ( C) name=Lili num=1001 ( D) Lili 12 有以下程序 main() int x=1, y=0; if(!x)y+; else if(x=0) if(x)y+=2; else y+=3; printf(“ d n“, y); 程序运行后的输出结果是 ( A) 2 ( B) 0 ( C) 1 ( D) 3 13 有以下程序段 int a, b, c; a=10; b=50; c=30; if(a

8、 b)a=b, b=c; c=a; printf(“a= d b= d c= d n“, a, b, c); 程序的输出结果是 ( A) a=10 b=50 c=30 ( B) a=10 b=30 c=10 ( C) a=10 b=50 c=10 ( D) a=50 b=30 c=50 14 if语句的基本形式是: if(表达式 )语句,以下关于 “表达式 “值的叙述中正确的是 ( A)必须是整数值 ( B)必须是正数 ( C)可以是任意合法的数值 ( D)必须是逻辑值 15 有以下计算公式 若程序前面已经在命令行中包含 math h文件,不能够正确计算上述公式的程序段是 ( A) y=sqr

9、t(x); if(x 0)y=sqrt(-x); ( B) if(x =0)y=sqrt(x); else y=sqrt(-x); ( C) if(x =0)y=sqrt(x); if(x 0)y=sqrt(-x); ( D) y=sqrt(x =07x: -x); 16 有以下程序 main() int a=1, b=2, c=3, d=0; if(a=1& b+=2) if(b!=2c-!=3) printf(“ d, d, d n“, a, b, c); else printf(“ d, d, d n“, a, b, c); else printf(“ d, d, d a“, a, b,

10、 c); 程序运行后的输出结果是 ( A) 1, 3, 2 ( B) 1, 2, 3 ( C) 1, 3, 3 ( D) 3, 2, 1 17 若有以下程序 #include main() int a=1, b=2, c=3, d=4; if(a=2)(b=1)c=2; if(c=3)&(d=-1)a=5; printf(“ d, d, d, d n“, a, b, C, d); 则程序的输出结果是 ( A) 2, 1, 2, -1 ( B) 2, 2, 2, 4 ( C) 5, 1, 2, -1 ( D) 1, 2, 3, 4 18 若有以下程序 #include main() int a=

11、1, b=2, c=3, d=4; if(a=2)&(b=1)c=2; if(c=3)(d=-1)a=5; printf(“ d, d, d, d n“, a, b, c, d); 则程序的输出结果是 ( A) 2, 1, 2, -1 ( B) 2 2, 2, 4 ( C) 1, 2, 3, 4 ( D) 5, 1, 2, -1 19 以下叙述中正确的是 ( A) if语句只能嵌套一层 ( B)不能在 else子句中再嵌套 if语句 ( C) if子句和 else子句中可以是任意的合法的 C语句 ( D)改变 if-else语句的缩进格式,会改变程序的执行流程 20 若有定义: float x

12、=1 5; int a=1, b=3, c=2;则正确的 switch语句是 ( 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“);

13、21 有以下程序 main() int k=5, n=0; do switch(k) case 1: case 3: n+=1; k-; break; default: n=0; k-; case 2: case 4: n+=2; k一; break; ) printf(“ d“, n); ) while(k 0&n 5) 运行以后的输出结果是 ( A) 0235 ( B) 235 ( C) 02356 ( D) 2356 22 有以下程序 #include main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a

14、+; break; case 1: b+; break; case 2: a+; b+; break; printf(“a= d, b= d n“, a, b); 程序运行后的输出结果是 ( A) a=1, b=1 ( B) a=1, b=0 ( C) a=2, b=1 ( D) a=2, b=2 23 以下程序段中,与语句: k=a b?(b c?1: 0): 0;功能相同的是 ( A) if(a b)(b c)k=1; else k=0; ( B) if(ac)k=1; else k=0; ( D) if(a b)k=1; else if(b c)k=1; else k=0; 24 有以下

15、程序 #include main() int y=10; while(y-); printf(“y= d n“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 25 有以下程序 main() int y=10; while(y-); printf(“y= d n“,y); 程序执行后的输出结果是 ( A) y=0 ( B) y=1 ( C) y=-1 ( D) while构成无限循环 26 有以下程序 #include main() int a=7; while(a-); printf(“ d n“, a); 程序运行

16、后的输出结果是 ( A) 0 ( B) 1 ( C) -1 ( D) 7 27 要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是 ( A) while(ch=getchar()=N)printf(“ c“, ch); ( B) while(ch=getchar()=“N“)pfintf(“ c“, ch); ( C) while(ch=getchar()!=N)printf(“ c“, ch); ( D) while(ch=getchar()=N)printf(“ c“, ch); 28 由以下 while构成的循环,循环体执行的次数是 in

17、t k=0; while(k=1)k+; ( A)一次也不执行 ( B)执行一次 ( C)无限次 ( D)有语法错,不能执行 29 关于 do循环体 while(条件表达式 );以下叙述中正确的是 ( A)循环体的执行次数总是比条件表达式的执行次数多一次 ( B)条件表达式的执行次数总是比循环体的执行次数多一次 ( C)条件表达式的执行次数与循环 体的执行次数无关 ( D)条件表达式的执行次数与循环体的执行次数一样 30 有以下程序 main() int i=5; do if(i 3=1) if(i 5=2) printf(“* d“, i); break; i+; while(i!=0);

18、printf(“ n“); 程序的运行结果是 ( A) *3*5 ( B) *5 ( C) *7 ( D) *2*6 31 若有以下程序 main() int a=-2, b=0; do +b; while(a+); printf(“ d, d n“, a, b); 则程序的输出结果是 ( A) 0, 2 ( B) 1, 2 ( C) 1, 3 ( D) 2, 3 32 有以下程序段 int i, n; for(i=0; i 8; i+) n=rand() 5; switch(n) case 1: case 3: printf(“ d n“, n); break; case 2: case 4

19、: printf(“ d n“, n); continue; case 0: exit(0); printf(“ d n“, n); 以下关于程序段执行情况的叙述,正确的是 ( A)当产生的随机数 n为 4时结束循环操作 ( B)当产生的随机数 n为 1和 2时不做任何操作 ( C)当产生的随机 数 n为 0时结束程序运行 ( D) for循环语句固定执行 8次 33 有以下程序 #inc lude main() int ij, m=1; for(i=1; i 3; i+) for(j: 3; j 0; j-) if(i*j 3)break; m*=i*j; printf(“m= d n“,

20、m); 程序运行后的输出结果是 ( A) m=2 ( B) m=4 ( C) m=5 ( D) m=6 34 有以下程序 #include main() int i, j; for(i=3; i =1; i-) for(j=l; j =2; j+)printf(“ d“i+j); printf(“ n“); 程序的运行结果是 ( A) 4 3 2 5 4 3 ( B) 2 3 3 4 4 5 ( C) 4 5 3 4 2 3 ( D) 2 3 3 4 2 3 35 有以下程序 #include void main() char b, c; int i; b=a; c=A; for(i=0; i

21、 6; i+) if(i 2)putchar(i+b); else putchar(i+c); printf(“ n“); 程序运行后的输出结果是 ( A) ABCDEF ( B) aBcDeF ( C) abcdef ( D) AbCdEf 36 有以下程序段 int i, n; for(i=0; i 8; i+) n=rand() 5; switch(n) case 1: case 3: printf(“ d n“, n); break; case 2: case 4: printf(“ d n“, n); continue; case 0: exit(0); printf(“ d n“,

22、 n); ( A)当产生的随机数 n为 4时结束循环操作 ( B)当产生的随机数 n为 1和 2时不做任何操作 ( C)当产生的随机数 n为 0时结束程序运行 ( D) for循环语句固定执行 8次 37 若有以下程序 main() int a=6, b=0, c=0; for(; a&(b=0); ) b+=a; a-=c+; printf(“ d, d, d n“, a, b, c); 则程序的输出结果是 ( A) 6, 0, 0 ( B) 5, 6, 0 ( C) 6, 6, 1 ( D) 5, 6, 1 38 若有以下程序 #include char*a=“you“: char b=“

23、Welcome you to China!“; main() int i, j=0; char*p; for(i=0; bi!= 0; i+) if(*a=bi) p=a; for(j=i; *p!= 0; j+) if(*P!=bj)break; p+; if(*p= 0)break; printf(“ s“, &bi); ) 则程序的输出结果是 ( A) you to China! ( B) to China! ( C) me you to China! ( D) China! 39 有以下程序 main() int ij; for(i=1; i 4; i+) for(j=i; j 4;

24、j+) printf(“ d* d= d“, i,j, i*j); printf(“ n“); ( A) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3 ( B) 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3: 9 ( C) 1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 ( D) 1*1=1 2*1=2 2*2= 4 3*1=3 3*2=6 3*3=9 40 以下叙述中正确的是 ( A)循环发生嵌套时,最多只能两层 ( B)三种循环 for, while, do-while可以互相嵌套 ( C)循环嵌套时,如果不进行缩进形

25、式书写代码,则会有编译错误 ( D) for语句的圆括号中的表达式不能都省略掉 41 有以下程序 #include main() int x=8: for(; x 0; x-) if(x 3)printf(“ d, “, x-); continue; printf(“ d, “, -x); 程序的运行结果是 ( A) 8, 7, 5, 2, ( B) 9, 7, 6, 4, ( C) 7, 4, 2, ( D) 8, 5, 4, 2, 42 以下叙述中正确的是 ( A) break语句不能用于提前结束 for语句的本层循环 ( B) continue语句使得整个循环终止 ( C)使用 brea

26、k语句可以使流程跳出 switch语句体 ( D)在 for语句中, continue与 break的效果是一样的,可以互换 43 以下叙述中正确的是 ( A)当 break出现在循环体中的 switch语句体内时,其作用是跳出该 switch语句体,并中止循环体的执行 ( B)只能在循环体内和 switch语句体内使用 break语句 ( C) continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环 ( D)在 while语句和 do-while语句中无 法使用 continue语句 国家二级 C语言机试( C语言程序设计)模拟试卷 3答案与解析 一、选择题 1 【正确答案】

27、 C 【试题解析】 对于表达式 a+=a-=a*a相当于 8=a-(a*a),然后计算 a=a+a, a的初值为 3,则表达式的值为 -12。 【知识模块】 C语言程序设计 2 【正确答案】 C 【试题解析】 对于表达式 a =b =4为复合的赋值运算,结合性自右至左,相当于先计算 b=b 4, a=a b;结果的符号和第一个操作数的符号相同,因此 b为2, a的结果为 -1 【知 识模块】 C语言程序设计 3 【正确答案】 C 【试题解析】 scanf和 getchar函数分别从键盘上读入一个字符,因此输入 12空格 34,则变量 a中存放的为 1, b中存放 2, c中存放空格, d中存放

28、 3。 【知识模块】 C语言程序设计 4 【正确答案】 C 【试题解析】 在使用 scanf函数进行输入数据时,输入的数据之间必须用空格、回车符、制表符 (Tab键 )等间隔符隔开,但是空格为合法的字符型数据的输入。而按照格式符 “ d c d c“说明,数值型数据和字符数据输入之间不要加入空格间隔 ,而字符型数据和数值型数据的输入却可以加入任意的空格,回车和跳格。 【知识模块】 C语言程序设计 5 【正确答案】 C 【试题解析】 在采用 scanf这个函数输入数据时,要严格遵守其输入的规则定义。本题此函数定义的规则是,在两个整数之间加分号输入。 【知识模块】 C语言程序设计 6 【正确答案】

29、 C 【试题解析】 输入格式 Scanf(格式控制,输入项 1,输入项 2, ),其中在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度 。输入 double型数据,格式控制必须用 1f(或 1e)。否则,数据不能正确输入。由于输入是一个字符流, scanf函数从这个字符流中按照格式控制指定的格式解析出相应数据,送到指定地址的变量中。 【知识模块】 C语言程序设计 7 【正确答案】 A 【试题解析】 scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用 prinf

30、f函数输出,选项 A)正确;在使用 scanf函数输入整数或实数时,输入数据之间可以用空格、跳 格、回车来分隔,选项 B)错误; printf输出项不但可以为变量,还可以表达式或者常量,选项 C)错误:如果要输出 “ ”,可以在格式控制中用 “ ”表示,将输出一个 “ ”,选项 D)错误。 【知识模块】 C语言程序设计 8 【正确答案】 C 【试题解析】 本题考查 scanf语句。 scanf()函数是格式化输入函数,它从标准输入设备 (键盘 )读取输入的信息。 其调用格式为: scanf(“格式化字符串 “,地址表 ) 格式化字符串包括以下 3类不同的字符; 格式化说明符:格式 化说明符与前

31、面用的 printf()函数中的格式说明符基本相同。 空白字符:空白字符会使 scanf()函数在读操作中略去输入中的一个或多个空白字符。 非空白字符:一个非空白字符会使 scanf()函数在读入时剔除掉与这个非空白字符相同的字符。 由于在 scanf函数中,几个变量之间没有任何间隔,所以输入的时候,也同样不应该有间隔。 【知识模块】 C语言程序设计 9 【正确答案】 C 【试题解析】 本题考查 scanf语句。 scalaf()函数的一般格式为: scanf(“格式字符串 “,输 入项首地址表 ),对于double类型数据,输入时候要加上 1修饰,否则会产生错误的输入信息,同时输入项必须是地

32、址,可以使保存变量地址的指针变量。 【知识模块】 C语言程序设计 10 【正确答案】 C 【试题解析】 程序语句 int a, b, c, *p=&c;定义了三个整型变量 a, b, c,和一个整型指针变量 p,并且把变量 c的地址赋给 p。 scanf函数的一般形式为“scanf(“格式控制字符串 ”,地址列表 )”,其中的地址列表应当是存放输入数据变量的地址。 【知识模块】 C语言程序设计 11 【正确答案】 D 【试题解析】 在题目中以字符串的形式给字符数组赋值,所以字符数组 name的值为 Lili。 【知识模块】 C语言程序设计 12 【正确答案】 B 【试题解析】 x=1, if和

33、 else if的条件都不满足,故 y值不改变输出。 【知识模块】 C语言程序设计 13 【正确答案】 C 【试题解析】 本题的程序段首先定义三个整型变量 a,b,c,并且其初始值分别等于 10,50,30,然后判断 a b是否成立,如果条件成立,则把 b的值赋给 a,把 c的值赋给 b。由 a和 b的初 始值可知,此条件表达式不成立,所以 a和 b的值保持不变。再执行下一条语句,把 a的值赋给 c,所以 c的当前值等于 10,最后由输出语句输出变量 a,b,c的当前值,分别为 10,50, 10。 【知识模块】 C语言程序设计 14 【正确答案】 C 【试题解析】 在 if语句中,表达式可以

34、是任意合法的数值。当其值为非零时,执行 if语句,为 0时执行 else语句。 【知识模块】 C语言程序设计 15 【正确答案】 A 【试题解析】 由题意可知计算公式的含义是:当 x大于等于 0时, y值等于 x的算术平方 根:当 x小于 0时, y值等于 x的相反数的算术平方根。所以选项 B)用一个完整的 if else语句表达了计算公式的含义;选项 C)用两个 if语句表达了计算公式的含义;选项 D)在求平方根函数的后面用 x07x: -x条件表达式来表达了计算公式的含义。选项 A)没有用 C语言语句正确的表达计算公式的含义。 【知识模块】 C语言程序设计 16 【正确答案】 C 【试题解

35、析】 a,b,c,d初始值分别为 1,2,3,0。嵌套的 if语句中,第一个 if中,表达式 a=1&b+=2值为 1,执行嵌套的 if分支,此时 b=3, b!=2成立,由于运算符是 ,不管后面一个表达式的值是不是 1,其整个表达式的值总是 1, c-!=3表达式不执行,最后打印出 a,b,c的值是 1, 3,3。 【知识模块】 C语言程序设计 17 【正确答案】 B 【试题解析】 代码中有两条并列的 if语句,第一条 if语句执行, (a=2)(b=1)值为1,由于逻辑或表达式,根据其短路运算规则, a=2, b=2,即 b值不变执行 if分支c=2。并列的 if语句中表达式 (c-3)&

36、(d= 1)为逻辑与表达式, c一 3不成立,不考虑 d= 1表达式, d为 5逻辑表达式值为 0,不执行相应 if分支。 【知识模块】 C语言程序设计 18 【正确答案】 D 【试题解析】 代码中有两条并列的 if语句,第一条 if语句,逻辑与表达式(a=2)&(b=1)中, a=2,则执行 b=1,得到该逻辑与表达式值为 1,执行分支语句c=2:第二条 if语句 (c=3)Il(d=-1), c=3不成立,执行 d=-1,而后得出整个逻辑与表达式值为 1,执行分支语句 a=5。 【知识模块】 C语言程序设计 19 【正确答案】 C 【试题解析】 含 else子句的 if语句的格式为 if(

37、表达式 ) 语句 1 else 语句 2 其中 if和 else是 C语言的关键字。 “语句 1”称为 if子句, “语句 2”称为 else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于 if和 else语句的嵌套原则是比较自由的。 【知识模块】 C语言程序设计 20 【正确答案】 A 【试题解析】 在 C语言中, switch()后一对圆括号中的可以是整型表达式或字符表达式。 case语句后面的常量表达式的类型必须与 switch后 圆括号中的表达式类型相同,各 case语句标号的值应该互不相同,选项 B)中 switch后括号表达式出错,选项 C)中 case

38、后面的常量类型不正确,选项 D)中 case后面出现了变量表达式,所以 D)不正确。 【知识模块】 C语言程序设计 21 【正确答案】 B 【试题解析】 因为变量的初始值分别为 k=5,n=0,所以程序第 1次进入循环时,执行 default语句, n=0, k=4,没有 break语句,因此执行 case 2分支语句, n为2, k为 3,程序进行第 2次循环,执行 case 3: n=3, k=2,输出 n值为 3,程序进行第 3次循环,执行 case 3这个分支,结果是 n=5, k=1,打印出 5;这时因为n=5不满足 n 5的循环条件,因此退出循环,程序运行结束。 【知识模块】 C语

39、言程序设计 22 【正确答案】 C 【试题解析】 本题考查的是用 switch语句实现多分支选择结构,首先进入第一个 switch(x)判断,进入 case 1中进行嵌套判断,如果 switch(y)也成立, a自加 1,遇到 break,退出嵌套,接着执行 case 2, a自加为 2, b自加为 1,遇到 break,结束循环,此时 a=2, b=1。 【知识模块】 C语言程序设计 23 【正确答案】 C 【试题解析】 题干中的表达式的功能是当 a b并且 b c时,变量 k的值等于1,其余情况下,变量 k的值都是等于 0。 【知识模块】 C语言程序设计 24 【正确答案】 B 【试题解析

40、】 在 while循环中每次变量 y的值减 1,直到其值等于 0时退出循环,这时 y的再减 1变为 -1。 【知识模块】 C语言程序设计 25 【正确答案】 C 【试题解析】 while循环语句的循环体为空语句,所以每一次循环程序什么都不做 。当循环自变量 y=0时,退出循环结束,变量 y执行自减运算,得 -1,所以打印输出变量 y的值为 -1。 【知识模块】 C语言程序设计 26 【正确答案】 C 【试题解析】 在 while语句中,先判断 while后面的表达式是否为 0,如果为 0,则退出循环,否则执行循环体。在本题中,当变量 a的值经过几次循环后,其值等于 0时,退出 while循环语

41、句,变量 a再执行自减运算,所以其值等于 -1。 【知识模块】 C语言程序设计 27 【正确答案】 C 【试题解析】 while循环的执行过程如下: 计算 while后面圆括号中表达式的值,当值为非 0时,执行步骤 ;当值为 0时,执行步骤 ; 执行循环体一次; 转去执行步骤 : 退出循环。在选项C)中,表达式 (ch=getchar()!=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。 【知识模块】 C语言程序设计 28 【正确答案】 C 【试题解析】 循环条件表达式为赋值表达式 k=-1,因

42、此循环执行无限次。 【知识模块】 C语 言程序设计 29 【正确答案】 D 【试题解析】 do-while语句先执行语句,后判断表达式的值。故 do-while语句又称 “直到型 ”循环结构。由于是先执行后判断,因此 do-while语句的循环语句至少被执行一次,循环条件至少判断一次。 【知识模块】 C语言程序设计 30 【正确答案】 C 【试题解析】 由于循环变量 i的初值等于 5,所以第一、二次进入 dowhile 循环语句时,条件语句 if(i 3=1), if(i 5=2)printlf(“* d“, i); break; )不执行,只执行 i+语句。当 i=7时,满足条件语句 if(

43、i 3=1), if(i 5=2)print“d“, i); break; ,所以输出 *7,结束循环。 【知识模块】 C语言程序设计 31 【正确答案】 C 【试题解析】 由于 a的初始值等于 -2,所以 while循环语言执行三次结束,第一次 a=-2, b=1,然后判断循环条件 a+非零,执行第二次循环体 a=-1, b=2,判断循环条件非零,执行循环体 a=0, b=3,判断循环条件为 0,此时变量 a的值等于1。 【知识模块】 C语言程序设计 32 【正确答案】 C 【试题解析】 rand()函数功能为产生一个随机数, rand() 5,则产生 04之间的任意随机数,当产生的随机数

44、n为 0时,执行 “case 0: exit(0)”这条语句,结束程序的运行。 【知识模块】 C语言程序设计 33 【正确答案】 D 【试题解析】 这道题考查了 for循环的嵌套应用。对于外层 for循环来说,变量 i从 1增到 2,循环执行 2次。当变量 i的值等于 1时,对于内层 for循环来说,变量 i从 3减到 1,求得变量 m的值等于 6。当变量 i的值等于 2时,第一遍执行 内层 for循环,变量 j的值等于 3,那么 i*j的值等于 6,其值大于 3,这时执行break语句,退出内层 for循环的执行。所以程序输出变量 m的值为 6。 【知识模块】 C语言程序设计 34 【正确答

45、案】 C 【试题解析】 本题中的外层行变量 i从 3逐次递减到 1,共输出 3行。内层列变量 i每次从 1递增到 2,每行输出 2个数字。所以当 i=3时,第一行输出i+1=4i+2=5,即 4 5;当 i=2时,第一行输出 i+1=3和 i+2=4,即 3 4:当 i=1时,第一行输出 i+1=2和 i+2=3,即 2 3。 【知 识模块】 C语言程序设计 35 【正确答案】 D 【试题解析】 循环变量 i从 0依次递增到 5,依次输出字母 A,b,C,d,E,f。 【知识模块】 C语言程序设计 36 【正确答案】 C 【试题解析】 rand()函数功能为产生一个随机数, rand() 5,

46、则产生 04之间的任意随机数,当产生的随机数 n为 0时,执行 case 0: exit(0)这条语句,结束程序的运行。 【知识模块】 C语言程序设计 37 【正确答案】 C 【试题解析】 循环条件 a&(b=0), a非零 同时 b=0则执行循环体,否则退出。循环体执行一次,此时 b=6, a=6, c=1 【知识模块】 C语言程序设计 38 【正确答案】 A 【试题解析】 程序中循环部分的主要功能是,在字符串 b中寻找是否含有子串a,如果含有则退出,此时 i为子串 a在字符串 b中第一次出现的位置。因此最后的输出函数则从第 i个字符开始一直输出到字符串的末尾。 【知识模块】 C语言程序设计

47、 39 【正确答案】 C 【试题解析】 外层 for循环的自变量 i从 1开始,每次循环后增 1,直到 i等于 3结束。对于外层循环自 变量 i的每一个值,内层循环的自变量 j每次从 i开始,每次循环后增 1,直到 j等于 3结束。所以在每次外循环开始后,内层循环在一行先打印 i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。 【知识模块】 C语言程序设计 40 【正确答案】 B 【试题解析】 在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。 for循环、 while循环、 do-while循环可以互相嵌套,但每层循

48、环在逻辑上必须完整。而在 for语句中, for语句中的 表达式可以部分或全部省略,但两个 “; ”不可省略。 【知识模块】 C语言程序设计 41 【正确答案】 D 【试题解析】 “x-”表示先执行程序,再令 x的值减 1;而 “-x”表示令 x的值减1,再执行程序。 x=8时, x 3为非 0值,执行语句 printf(“ d“, x-);continue; ,输出 “8, ”,此时经过 x-, x的值变为 7,跳出此次循环;执行 x-,x=6, x 3=0,后面语句不执行,执行语句 printf(” d, “, -x);,输出 “5, ”;执行 for语句中的 x-,得到 x=4,判断 x 3,输出 “4, ”,执行两次 x-后, x=2,执行

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

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

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