【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷25及答案解析.doc

上传人:livefirmly316 文档编号:1332038 上传时间:2019-10-17 格式:DOC 页数:12 大小:75KB
下载 相关 举报
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷25及答案解析.doc_第1页
第1页 / 共12页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷25及答案解析.doc_第2页
第2页 / 共12页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷25及答案解析.doc_第3页
第3页 / 共12页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷25及答案解析.doc_第4页
第4页 / 共12页
【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷25及答案解析.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、国家二级 C语言机试(C 语言程序设计)模拟试卷 25及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.以下是 if语句的基本形式:if(表达式)语句其中“表达式”(分数:2.00)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达或关系表达D.可以是任意合法的表达式2.有以下程序 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.0,0,0,3B.1,1,2,0C.编译有错D.0,1,2,03.

2、有以下程序 main()int x=1,y=0;if(!x)y+;else if(x=0) if(x)y+=2; else y+=3;printf(“dn“,y);程序运行后的输出结果是(分数:2.00)A.2B.0C.1D.34.若变量己正确定义,在 if(W)printf(“dn“,k);中,以下不可替代 W的是(分数:2.00)A.ch=getchar()B.a=b+cC.ab+c D.a+解析:解析:在 if()语句的括号是一个合法的 C语言表达式即可,如果表达式的值为 0,则不执行 if语句,否则执行 if语句,而在选项 C)中,符号不是 C语言的合法运算符,如果要表达 a大于或小于

3、 b+c可用 a!=b+c或(ab+c)(ab+c)来表达,而不能使用 ab+c。所以它不是一个合法的 C语言表达式。5.有以下程序段 int a,b,c;a=10;b=50;c=30;if(ab)a=b,b=c;c=a;printf(“a=d b=d c=dn“,a,b,c);程序的输出结果是(分数:2.00)A.a=10 b=50 c=30B.a=10 b=30 c=10C.a=10 b=50 c=10 D.a=50 b=30 c=50解析:解析:本题的程序段首先定义三个整型变量 a,b,c,并且其初始值分别等于 10,50,30,然后判断 ab 是否成立,如果条件成立,则把 b的值赋给

4、a,把 c的值赋给 b。由 a和 b的初始值可知,此条件表达式不成立,所以 a和 b的值保持不变。再执行下一条语句,把 a的值赋给 c,所以 c的当前值等于10,最后由输出语句输出变量 a,b,c 的当前值,分别为 10,50,10。6.设有定义: int a=1,b=2,c=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;解析:解析:在 C语言中,用分号表示一条语句的结束,用把几条语句放在一块表示一个语句块,其整体表示一个

5、功能。因而在题目给出的四个选项中,选项 B)、C)、D)表示的功能相同,而选项 A)表示的是一条 if语句,两条赋值语句。7.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是(分数:2.00)A.必须是整数值B.必须是正数C.可以是任意合法的数值 D.必须是逻辑值解析:解析:在 if语句中,表达式可以是任意合法的数值。当其值为非零时,执行 if语句,为 0时执行else语句。8.有如下嵌套的 if语句 if(ab)if(ac)k=a; else k=c; else if(bc)k=b; else k=c;以下选项中与上述 if语句等价的语句是(分数:2.00)A.

6、k=(ab)?(bc)?b:c);B.k=(ac)?b:c;C.k=(ac)?a:c;D.k=(ab)?(ac)?a:c):(bc)?b:c); 解析:解析:嵌套的 if else语句的含义是,在变量 a的信小干蛮量 h的值,同时,变量 a的值小于变量c的值时,把变量 a的值赋给变量 k。在变量 a的值小于变量 b的值,同时,变量 a的值大丁等丁变量 c的值时,把变量 c的值赋给变量 k。在变量 a的值大于等于变量 b的值,同时,变量 b的值小于变量 c的值时,把变量 b的值赋给变量 k。在变量 a的值大于等于变量 b的值,同时,变量 b的值大于等于变量 c的值时,把变量 c的值赋给变量 k。

7、9.有以下计算公式 (分数:2.00)A.y=sqrt(x);if(x0)y=sqrt(x); B.if(x=0)y=sqrt(x);else y=sqrt(x);C.if(x=0)y=sqrt(x);if(x0)y=sqrt(x);D.y=sqrt(x=0?x:x);解析:解析:由题意可知计算公式的含义是:当 x大于等于 0时,y 值等于 x的算术平方根;当 x小于 0时,y 值等于 x的相反数的算术平方根。所以选项 B)用一个完整的 if else语句表达了计算公式的含义;选项 C)用两个 if语句表达了计算公式的含义;选项 D)在求平方根函数的后面用 x0?x:x 条件表达式来表达了计算

8、公式的含义。选项 A)没有用 C语言语句正确的表达计算公式的含义。10.有以下程序#include main() int x;scanf(“d“,&x);if(x=3);else if(x!=10)printf(“dn“,x);程序运行时,输入的值在哪个范围才会有输出结果(分数:2.00)A.不等于 10的整数B.大于 3或等于 10的整数C.小于 3的整数D.大于 3且不等 10的整数 解析:解析:题目中,虽然 else和第二个 if不在同一行上,但等价于在同一行上,因此,程序的意思是当 x大于 3且不等于 10时打印出来。11.有以下程序 main()int a=1,b=2,c=3,d=0

9、; if(a=1&b+=2) if(b!=2c-!=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,2,3C.1,3,3 D.3,2,1解析:解析:a,b,c,d 初始值分别为 1,2,3,0。嵌套的 if语句中,第一个 if中,表达式a=1&b+=2值为 1,执行嵌套的 if分支,此时“b=3,b!=2”成立,由于运算符是,不管后面一个表达式的值是不是 1,其整个表达式的值总是 1,“c-!=3”表达式不执行,最

10、后打印出 a,b,c 的值是1,3,3。12.下列条件语句中,输出结果与其他语句不同的是(分数: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);else printf(“dn“,y);解析:解析:选项 B)、C)、D)这三条语句都是在变量不等于 0的情况下,输出 x;等于 0的情况下输出y,而选项 A)则正好相反。13.若有

11、以下程序#includestdiohmain()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,dn“,a,b,c,d);则程序的输出结果是(分数:2.00)A.2,1,2,1B.2,2,2,4 C.5,1,2,1D.1,2,3,4解析:解析:代码中有两条并列的 if语句,第一条 if语句执行,(a=2)(b=1)值为 1,由于逻辑或表达式,根据其短路运算规则,a=2,b=2,即 b值不变执行 if分支 c=2。并列的 if语句中表达式(c=3)&(d=1)为逻辑与表达式,c=3 不成立,不考虑 d=1

12、 表达式,d 为 5,逻辑表达式值为 0,不执行相应if分支。14.若有以下程序#includestdiohmain()int a=1,b=2,c=3,d=4,r=0; if(a!=1);else r=1; if(b=2)r+=2; else; if(c!=3)r+=3; else; if(d=4)r+=4; printf(“dn“,r);则程序的输出结果是(分数:2.00)A.10B.6C.7 D.3解析:解析:程序代码中有四条并列的 if语句,第一条 if表达式 a!=1不成立,执行 else分支,r=1;第二条 if表达式 b=2成立,执行 r+=2,r=3;第三条 if语句 c!=3不

13、成立,执行 else分支,分支为空语句;第四条 if分支 d=4成立,执行该 if分支语句,r+=4,r=7。15.若有以下程序#includestdiohmain()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,dn“,a,b,c,d);则程序的输出结果是(分数:2.00)A.2,1,2,一 1B.2,2,2,4C.1,2,3,4D.5,1,2,一 1 解析:解析:代码中有两条并列的 if语句,第一条 if语句,逻辑与表达式(a=2)&(b=1)中,a=2,则执行 b=1,得到该逻辑与表达式值为 1

14、,执行分支语句 c=2;第二条 if语句(c=3)(d=1),c=3 不成立,执行 d=1,而后得出整个逻辑与表达式值为 1,执行分支语句 a=5。16.若有以下程序 main()int a=1,b=2,c=3,d=4,r=0; if(a!=1); else r=1; if(b=2)r+=2; if(c!=3);r+=3; if(d=4)r+=4; printf(“dn“,r);则程序的输出结果是(分数:2.00)A.7B.10 C.6D.3解析:解析:程序代码中有四条并列的 if语句,第一条 if表达式 a!=1不成立,执行 else分支,r=1;第二条 if表达式 b=2成立,执行 r+=

15、2,r=3;第三条 if语句 c!=3不成立,执行语句 r+=3。r=6;第四条if分支 d=4成立,执行该 if分支语句,r+=4,r=10。17.以下叙述中正确的是(分数:2.00)A.if语句只能嵌套一层B.不能在 else子句中再嵌套 if语句C.if子句和 else子句中可以是任意的合法的 C语句 D.改变 if-else语句的缩进格式,会改变程序的执行流程解析:解析:含 else子句的 if语句的格式为 if(表达式)语句 1 else 语句 2 其中 if和 else是 C语言的关键字。“语句 1”称为 if子句,“语句 2”称为 else子句,这些子句只允许为一条语句,若需要多

16、条语句时,则应该使用复合语句,对于 if和 else语句的嵌套原则是比较自由的。18.以下选项中与 if(a=1)a=b;else a+;语句功能不同的 switch语句是(分数:2.00)A.switch(a) case 1:a=b;break; default:a+; B.switch(a=1) case 0:a=b;break; case 1:a+: C.switch(a) default:a+;break; case 1:a=b; D.switch(a=1) case 1:a=b;break; case 0:a+; 解析:解析:本题主要考查 if和 switch结构。“if(a=1)a

17、=b;else a+;”代码段的功能是如果 a等于则把 b的值赋值给 a,否则 a+。选项 A)使用 switch对 a进行判断,如果是 1则 a=b,跳出 switvch,如果是其他值则 a+;选项 B)对 a=1的结果进行 switch判断,如果为 0表示 a不等于 1则 a=b,和题目要求不符合;选项 C)和选项 A)一样;选项 D)和选项 case条件相反,满足题目要求。19.若以下选项中变量全部为整型变量,且己正确定义并赋值,则语法正确的 switch语句是(分数:2.00)A.switch(a+b) case 1:case 3:y=a+b; break; case 0:case 4

18、:y=a-b; B.switch(a*a+b*b) default:break; case 3:y=a+b;break; case 2:y=a-b;break; C.switch(a+9) case c1:y=a-b; case c2:y=a+b; D.switch a*b case 10:x=a+b; default :y=a-b; 解析:解析:本题考查 switch的使用。选项 A)中的 case 0和 case 4没有 break语句:选项 B)正确;选项 C)中的 case后面不是常量,错误;选项 D)中 switch后面没有括号。20.有以下程序 main()int x=1,y=0,

19、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=dn“,a,b);程序的运行结果是(分数:2.00)A.a=2,b=2B.a=1,b=1C.a=1,b=0D.a=2,b=1 解析:解析:本题考查的是用 switch语句实现多分支选择结构,首先进入第一个 switch(x)判断,进入case 1中进行嵌套判断,如果 switch(y)也成立,a 自加 1,遇到 break,退出嵌套,接着执行 case 2,a

20、自加为 2,b 自加为 1,遇到 break,结束循环,此时 a=2,b=1。21.若有定义: float x=15;int a=1,b=3,c=2;则正确的 switch语句是(分数:2.00)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 10:printf(“*n“);case 20:printf(“*n“);D.switch(a+b)case 1:printf(“*n“);cas

21、e c:printf(“*n“);解析:解析:在 C语言中,switch()后一对圆括号中的可以是整型表达式或字符表达式。case 语句后面的常量表达式的类型必须与 switch后圆括号中的表达式类型相同,各 case语句标号的值应该互不相同,选项 B)中 switch后括号表达式出错,选项 C)中 case后面的常量类型不正确,选项 D)中 case后面出现了变量表达式,所以 D)不正确。22.下列叙述中正确的是(分数:2.00)A.在 switch语句中必须使用 defaultB.break语句必须与 switch语句中的 case配对使用C.在 switch语句中,不一定使用 break

22、语句 D.break语句只能用于 switch语句解析:解析:break 为 C语言关键字,又称间断语句。break 语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在 switch语句中,也可以出现在循环语句中。default 是关键字,起标号的作用,代表所有 case标号之外的那些标号。default 标号可以出现住语句体中任何标号位置上。在 switch语句体中也可以没有 default标号。23.有以下程序 main()int k=5,n=0; doswitch(k) case 1:case 3:n+=1;k-;break; default:n=0;k-; case 2:cas

23、e 4:n+=2;k-;break; printf(“d“,n); while(k0&n5)运行以后的输出结果是(分数:2.00)A.0235B.235 C.02356D.2356解析:解析:因为变量的初始值分别为 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不满足 n5 的循环条件,因此退出

24、循环,程序运行结束。24.以下选项中与 if(a=1)a=b;else a+;语句功能不同的 switch语句是(分数:2.00)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 else 语句的含义是,如果变量 a的值等于 1,则把变量 b的值赋给变量 a,否则,变量a的值加 1。在本题的 4个选项中,与其含义

25、不同的是选项 A),表示如果变量 a的值等于 1,则把变量 a的值加 1,否则,把变量 b的值赋给变量 a。25.有以下程序#includemain()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; printf(“a=d,b=dn“,a,b); 程序运行后的输出结果是(分数:2.00)A.a=1,b=1B.a=1,b=0C.a=2,b=1 D.a=2,b=2解析:解析:本题考查的是用 switch语句实现多分支选择结构,首先进入第一个 sw

26、itch(x)判断,进入case 1中进行嵌套判断,如果 switch(y)也成立,a 自加 1,遇到 break,退出嵌套,接着执行 case 2,a 自加为 2,b 自加为 1,遇到 break,结束循环,此时 a=2,b=1。26.若以下选项中的变量 a,b,y 均已正确定义并赋值,则语法正确的 switch语句是(分数:2.00)A.switch(a*a+b*b)default:break;case 3:y=a+b;break;case 2:y=a-b;break; B.switch(a+b)case1:case3:y=a+b;break;case0:case4:y=a-b;C.swi

27、tch (a+9) case a:y=ab;case b:y=a+b;D.switch a*bcase 10:y=a+b;default:y=a-b;解析:解析:使用 switch语句直接处理多个分支,其 一般形式为: switch(表达式) case 常量表达式 1: 语句 1: break; case 常量表达式 n: 语句 n; break; default: 语句 n+1; break; switch语句的执行流程是:首先汁算 switch后面圆括号中表达式的值,然后用此值依次与各个 case的常量表达式比较,若圆括号中表达式的值与某个 case后面的常量表达式的值相等,就执行此 ca

28、se后面的语句,执行后遇 break语句就退出 switch语句;若圆括号中表达式的值与所有 case后面的常量表达式都不等,则执行 default后面的语句 n+1,然后退出 switch语句。 对于选项 B),case 语句和常量之间没有空恪,而选项 C)中的 case后面为变量,选项 D)中 switch后面没给出圆括号。27.在嵌套使用 if语句时,C 语言规定 else总是(分数:2.00)A.和之前与其具有相同缩进位置的 if配对B.和之前与其最近的 if配对C.和之前与其最近的且不带 else的 if配对 D.和之前的第一个 if配对解析:解析:本题考查 if语句,在 C语言中,

29、else 总是和之前与其最近的且不带 else的 if配对。28.以下程序段中,与语句: k=ab?(bc?1:0):0;功能相同的是(分数:2.00)A.if(ab)(bc)k=1;else k=0;B.if(a=b)k=0;else if(b=c)k=1;C.if(ab)&(bc)k=1;else k=0; D.if(ab)k=1;else if(bc)k=1;else k=0;解析:解析:题干中的表达式的功能是当 ab 并且 bc 时,变量 k的值等于 1,其余情况下,变量 k的值都是等于 0。29.关于“while(条件表达式)循环体”,以下叙述正确的是(分数:2.00)A.循环体的执

30、行次数总是比条件表达式的执行次数多一次B.条件表达式的执行次数与循环体的执行次数一样C.条件表达式的执行次数总是比循环体的执行次数多一次 D.条件表达式的执行次数与循环体的执行次数无关解析:解析:while 语句中表达式是循环条什,语句为循环体。while 语句中当表达式计算的值为真(非 0)时,执行循环体语句。因此条件表达式执行的次数总是比循环体多一次。30.有以下程序#includestdiohmain()(int y=10; while(y-); printf(“y=dn“,y);程序执行后的输出结果是(分数:2.00)A.y=0B.y=1 C.y=1D.while构成无限循环解析:解析

31、:在 while循环中每次变量 y的值减 1,直到其值等于 0时退出循环,这时 y的再减 1变为1。31.有以下程序 main()int k=5;while(-k)printf(“d“,k=3):printf(“n“);执行后的输出结果是(分数:2.00)A.2B.4C.1 D.死循环解析:解析:在程序语句中,k 的初始值为 5,进行第 1次 while循环后,k 自减 1为 4,非 0,执行循环体里的 printf语句,输出 1,此时 k的值变为 1。程序执行第 2次循环时,k 自减 1变为 0,为假,退出while循环语句。所以程序的最后结果为 1。32.有以下程序 main()int y

32、=10; while(y-); printf(“y=dn“,y);程序执行后的输出结果是(分数:2.00)A.y=0B.y=1C.y=1 D.while构成无限循环解析:解析:while 循环语句的循环体为空语句,所以每一次循环程序什么都不做。当循环自变量 y=0时,退出循环结束,变量 y执行自减运算,得1,所以打印输出变量 y的值1。33.有以下程序#includestdiohvoid main() int s; scanf(“d“,&s); while(s0) switch(s) case 1:printf(“d“,s+5); case 2:printf(“d“,s+4;break; ca

33、se 3:printf(“d“,s+3); default:printf(“d“,s+1);break; scanf(“d“,&s);运行时,若输入 1 2 3 4 5 0,则输出结果是(分数:2.00)A.66656B.6566456 C.66666D.6666656解析:解析:这道试题主要考查了 switch和 break语句,当变量 s的值为 1时,执行 case1、case 2 两条语句,输出 65;当变量 s的值为 2时,执行 case 2语句,输出 6;变量 s的值为 3时,执行case3、default 两条语句,输出 64;变量 s的值为 4时,执行 default语句,输入

34、5;变量 s的值为 5时,执行 default语句,输出 6;变量 s的值为 0时,程序运行结束。34.有以下程序#includemain()int a=7; while(a-); printf(“dn“,a);程序运行后的输出结果是(分数:2.00)A.0B.1C.1 D.7解析:解析:在 while语句中,先判断 while后面的表达式是否为 0,如果为 0,则退出循环,否则执行循环体。在本题中,当变量 a的值经过几次循环后,其值等于 0时,退出 while循环语句,变量 a再执行自减运算,所以其值等于1。35.在以下给出的表达式中,与 while(E)中的(E)不等价的表达式是(分数:2.00)A.(E0E0) B.(!E=0)C.(E!=0)D.(E=0)解析:解析:在 while(E)中,表达式 E可以是 C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项 A)中表达式 E0E0 是一个逻辑表达式。

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

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

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