招生电话:0759-2296349

课程咨询微信号:619809370

地址:湛江市霞山区人民大道南81号新宇大厦501室

新闻中心

第四章 选择结构程序设计《计算机基础与程序设计》广东普通专升本

2026-09-08

1.【精析】 ×表达式可以为逻辑表达式或关系表达式,也可以是任意的数值类型。

二、

1.【精析】 定义三个变量a,b,c   用于接收输入的三次成绩,使用嵌套的选择结构对三个变量值进行比 较,输出其中的最大者。

编写程序如下:

2.【精析】 定义一个整型变量a 用于接收输人的整数,使用嵌套的选择结构判断该数与0的大小关 系,若大于0则为正数,若小于0则为负数,否则该数为0。

编写程序如下:

单项选择题

1.【精析】 B    C语句规定,else 子句总是与它上面最近的未配对 if 配对。

2.【精析】 B   题中的if(a语句中a 条件判断为真,执行语b=a;”  b 赋值为1,然后执行“c=b;”  语句将c 赋值为1,else 子句没有执行,所以a 值不变,选项B 正确。

if…else  选择结构中,若条件表达式为真则执行if 子句中的语句,否则执行else 子句中的语句。

3.【精析】 C   选项Aif  句的执行体是一条空语句,正确;选项B  if 语句的执行体是由逗号表 达式组成的一条语句,正确;选项Ci=0,”  不正确,应该是i=0;”,    选项D  if 语句的执行体是 i=j;”,   正确。

4.【精析】 B“if     (a>b)c=a;     ”是一条if 语句,因为a>b 不成立,所以跳过语句c=a;  ”,直接执行赋值 语句a=b;”   b=c;”,    a=20,b=30,e=30

5.【精析】 C    选项B 和选项D if语句中都是复合语句, a>b 条件不成立,所以复合语句不执  行,abc保持原值;选项A c=a,a=b,b=c;”      只有一个分号,是由逗号表达式构成的一条语句, 又由于a>b 条件不成立,所以该语句不执行,a bc 保持原值;选项 C 中有3条语句,其中“if(a>

b)c=a;”     是一条 if 语句,由于 a>b 条件不成立,c=a;”   没有执行,但语句a=b;b=c;”     是执行的, a  b 的值变为6和3,故选 C

6.【精析】 B    选项A 中由于条件a 为假,不会执行i++;” 语句;选项Ba=b 是一个赋值表达式,其

单项选择题

1.【精析】 B    C语句规定,else 子句总是与它上面最近的未配对 if 配对。

2.【精析】 B   题中的if(a语句中a 条件判断为真,执行语b=a;”  b 赋值为1,然后执行“c=b;”  语句将c 赋值为1,else 子句没有执行,所以a 值不变,选项B 正确。

if…else  选择结构中,若条件表达式为真则执行if 子句中的语句,否则执行else 子句中的语句。

3.【精析】 C   选项Aif  句的执行体是一条空语句,正确;选项B  if 语句的执行体是由逗号表 达式组成的一条语句,正确;选项Ci=0,”  不正确,应该是i=0;”,    选项D  if 语句的执行体是 i=j;”,   正确。

4.【精析】 B“if     (a>b)c=a;     ”是一条if 语句,因为a>b 不成立,所以跳过语句c=a;  ”,直接执行赋值 语句a=b;”   b=c;”,    a=20,b=30,e=30

5.【精析】 C    选项B 和选项D if语句中都是复合语句, a>b 条件不成立,所以复合语句不执  行,abc保持原值;选项A c=a,a=b,b=c;”      只有一个分号,是由逗号表达式构成的一条语句, 又由于a>b 条件不成立,所以该语句不执行,a bc 保持原值;选项 C 中有3条语句,其中“if(a>

b)c=a;”     是一条 if 语句,由于 a>b 条件不成立,c=a;”   没有执行,但语句a=b;b=c;”     是执行的, a  b 的值变为6和3,故选 C

6.【精析】 B    选项A 中由于条件a 为假,不会执行i++;” 语句;选项Ba=b 是一个赋值表达式,其

单项选择题

1.【精析】 B    C语句规定,else 子句总是与它上面最近的未配对 if 配对。

2.【精析】 B   题中的if(a语句中a 条件判断为真,执行语b=a;”  b 赋值为1,然后执行“c=b;”  语句将c 赋值为1,else 子句没有执行,所以a 值不变,选项B 正确。

提醒:在if…else  选择结构中,若条件表达式为真则执行if 子句中的语句,否则执行else 子句中的语句。

3.【精析】 C   选项Aif  句的执行体是一条空语句,正确;选项B  if 语句的执行体是由逗号表 达式组成的一条语句,正确;选项Ci=0,”  不正确,应该是i=0;”,    选项D  if 语句的执行体是 i=j;”,   正确。

4.【精析】 B“if     (a>b)c=a;     ”是一条if 语句,因为a>b 不成立,所以跳过语句c=a;  ”,直接执行赋值 语句a=b;”   b=c;”,    a=20,b=30,e=30

5.【精析】 C    选项B 和选项D if语句中都是复合语句, a>b 条件不成立,所以复合语句不执  行,abc保持原值;选项A c=a,a=b,b=c;”      只有一个分号,是由逗号表达式构成的一条语句, 又由于a>b 条件不成立,所以该语句不执行,a bc 保持原值;选项 C 中有3条语句,其中“if(a>

b)c=a;”     是一条 if 语句,由于 a>b 条件不成立,c=a;”   没有执行,但语句a=b;b=c;”     是执行的, a  b 的值变为6和3,故选 C

6.【精析】 B    选项A 中由于条件a 为假,不会执行i++;” 语句;选项Ba=b 是一个赋值表达式,其

值为赋值后变量a 的值4,条件为真,执行“i++;” 语句;选项C 中由于条件为假,不会执行i++;”  句;选项D  b-a  等于4,!( b-a)  0,条件为假,不会执行i++;” 语句。

7.【精析】 D     if 下面的两条语句未加花括号,这样if(a==6)a=a+2;”         是一条独立的语句,后 面的else 部分找不到对应的if 部分,因此,有语法错误。

8.【精析】 A    ?:为条件运算符,在语句“x中先判断条件x 是否成立,条件为真即返回 x的值,否则返回( x,y)  的值;x=100,y=200,    x为真,即x ( x,y)  的值为100,选项A 正确。

9.【精析】 B    表达式(x>='a'&&x<='z')   表示的意思是'a¹<=x<='z¹,   如果从键盘输人的字符满足该条件 (表示输入的是英文小写字母),则条件表达式(x>'a'&&x<='z' )的值为真,执行 printf("%cIn",x-   32)语  (小写字母的 ASCII 值比大写的 ASCII 值多32),将小写字母转换成大写字母后输出,否则执行 printf(“%c\n”,x)   语句,输出原字符。选项B 正确。

值为赋值后变量a 的值4,条件为真,执行“i++;” 语句;选项C 中由于条件为假,不会执行i++;”  句;选项D  b-a  等于4,!( b-a)  0,条件为假,不会执行i++;” 语句。

7.【精析】 D     if 下面的两条语句未加花括号,这样if(a==6)a=a+2;”         是一条独立的语句,后 面的else 部分找不到对应的if 部分,因此,有语法错误。

8.【精析】 A    ?:为条件运算符,在语句“x中先判断条件x 是否成立,条件为真即返回 x的值,否则返回( x,y)  的值;x=100,y=200,    x为真,即x ( x,y)  的值为100,选项A 正确。

9.【精析】 B    表达式(x>='a'&&x<='z')   表示的意思是'a¹<=x<='z¹,   如果从键盘输人的字符满足该条件 (表示输入的是英文小写字母),则条件表达式(x>'a'&&x<='z' )的值为真,执行 printf("%cIn",x-   32)语  (小写字母的 ASCII 值比大写的 ASCII 值多32),将小写字母转换成大写字母后输出,否则执行 printf(“%c\n”,x)   语句,输出原字符。选项B 正确。

二、判断题

1.【精析】 ×  在if  语句中可以包含一个或多个if 语句,称为if 语句的嵌套。

2.【精析】 × if  语句有两种形式,一种是不带else 子句的;另一种是带else 子句的,所以else 子句不 if  语句的必选项。

3.【精析】 ×    else 子句不能作为语句单独使用,它必须是if 语句的一部分, if 配对使用, if 语句 可单独使用。

4.【精析】 × if…else 语句是一种分支结构,当条件满足时,有if语句”和“else 语句”两条分支,可以 根据条件执行其中一个。

提醒:

表达式的值在逻辑上只有真和假,故if 和 else 在执行流程上是互斥的,执行且只能选择执行两者

中的一个。

5.【精析】 ×  s witch 选择结构中可以没有 default 语句,此时如果没有与 switch 表达式相匹配的 case 常量,则不执行任何语句,程序转到switch的下一条语句。

6.【精析】  复合语句在语法上是一条语句,但包含若干条语句,这些语句需要用{}括起来。

7.【精析】 √   在 switch 选择结构中,每一个 case 量必须互不相同,否则就会出现互相矛盾的 现象(对 switch 表达式的同一个值,有两种或多种执行方案)。

8.【答案】 

9.【精析】×  执行if  语句时,首先对括号内的表达式求解,若表达式的值为0,即为“假”,此时条件不 成立,if 语句不执行,表达式的值为非0,即为“真”,条件成立,执行 if 语句。

10. 【精析】×用switch 语句编写的程序可以实现多分支选择结构,也可以使用if 的嵌套来处理,但 过多的if 嵌套语句会造成程序冗长易出错,可读性降低。 一般不建议使用if 嵌套来实现多分支选 择结构。

11.【答案】 

三、填空题

1.复合语句                                     

2.switch

3.if                                                                                         

4.  

 简答题

1.【参考答案】 C 语言中“1”表示“真”,“0”表示“假”。系统在判断时,一般是当表达式的值非 “0”时,即表示“真”;仅当表达式的值为0”时,表示“假”。

2.【参考答案】 if 选择结构一般用于单分支选择结构,根据判断的结果决定执行哪种操作。

switch 语句一般用于实现多分支选择结构,可以根据表达式的值,使流程跳转到不同的语句。

计算题

1.【精析】(1)0,6,7 (2)0,0,6

(1) if 条件成立,执行j=k++;”  语句,先把k 的值6赋给j, 所以j 的值为6,执行k++操作后,k 的值变 7 ,i 值无变化,输出结果为0,6,7。

(2)修改条件为“if(i>0&&j>=0)”,  if 条件不成立,程序不执行任何操作,原样输出i,j,k   的值。

2. 【精析】(1) -3   (2)  m! =0

(1)执行第一条if 语句时,因为!n 为真,所以x 被赋值为-1; m=0 ,第二条if 语句条件为假,不执行; 第三条if 语句的条件为真,x 被赋值为-3后输出。

(2)当m!=0   时,第二条if语句条件为真,程序执行x=x+1;” 语句。

3.【精析】(1)6  (2)7

对于条件表达式(x--<7),    先使用x 的值7进行判断,7<7不成立,所以执行else 部分的语句,再执行 x--  操作,x的值变为6;执行“printf("%d\n",x++);”       语句时,先使用x 的值6进行输出,再进行自 ( x 变为7)。

4. 【精析】(1)m= 7      (2)6

先使用m 的值6进行判断,if条件为假,执行m++操作后,m=7; 执行else 子句,m--  表达式先取m  7输出后再使m 自减1,即输出结果为m=7,  此时 m 的值为6。

5.【精析】(1)0 ( 2)1

(1)在if…else 语句中,else 总是和最近的且未配对的if 配对,由于(!x) 不成立,接着判断(x==0),     不成立,所以对y 未进行任何操作,其值仍为初始值0。

(2)当x=0  时,(!x)为真,条件成立,执行y++;” 语句,输出y 的值为1。

6. 【精析】(1)跳出循环  (2) 12

表达式k+1 的值为11(但k 的值仍为10),满足case  11分支,执行“++k;” 语句,因其后无break  句,继续执行 case  12分支中的“++k;” 语句,执行完成后k 的值为12,此时遇到 break 语句结束分支 语句,输出k 的值。

7.【精析】(1)end      (2)3end

(1)该程序中,需要注意if…else  语句的实际配对关系,a>b 条件不成立,执行printf("end\n"   );”语 句。所以,该程序的最后输出为end

(2) a>b条件成立,a>c  条件成立,执行printf("%d",a);”  语句,输出a 的值。然后执行prinf("end\n");” 语句,输出end

提升题

一、单项选择题

1.【精析】 B   if 语句中,if 后会跟一个表达式,一般为逻辑表达式或关系表达式,此表达式应用 () 括起来,选项B 的正确表示形式为if((x  =y)&&(x!   =0))x+=y;”

2.【精析】 A    对于表达式a>b?(b>e?1:0):0;”     ,只有当a>b  时,其值为表达式( b>e?1:0)   的值。而 表达式( b>c?1:0),只有当b>e 时,其值为1。也就是说,只有当a>b b>e  k的值才为1,其他情况下,k 的值都为0,因此,选项A 正确。

提醒:“z=x>9?x:y;   ”语句的作用是当条件成立时将x  的值赋给z,  否则将y  的值赋给z

3.【精析】 C    switch  语句中表达式的值必须是整型或字符型数据,与之对应,case 面的常量也应为 整型或字符型常量,按照这一原则,选项B 和选项D 不正确;选A 中,取余的两个操作数都应为整 数,因此表达式c%3 不正确,故选C

4.【精析】 C  选项C 中,当x 的值为1时,表达式x==1   的值为真,即为1,这样会执行 case  1分支中 x++;” 语句,与题目中if语句的功能不同。

5.【精析】 B    只有当x 大于1时才会执行else 部分,另外x 不等于5,才会执行打印输出语句。所以 若要使程序输出结果则x 必须大于1且不等于5。

二计算题

1.【精析】 (1) 1119      (2) 112028

(1)3条if 语句都为单分支语句,x的值为11时,满足条件x>10, 输出x 的值11,又由于x>5 成立,继续 执行printf("%d\n",x+8);”    语句,输出19。

(2)x 的值为20时,满足条件x>13, 执行语句printf("%d",     x-9);”,      输出11,又满足条件x>10,  x 的值20,还满足条件x>5, 继续执行printf("%d\n",x+8);”       语句,输出28。

2.【精析】(1)150  (2) 1015

(1)程序中,“if(a==b)t=a;"”     构成一条if 句。由于a==b   条件不成立,语句t=a;”   不执行;程序 接着执行a=b;”“b=t;”    这两条语句,执行后a=15,b=0

(2)修改过后,“if(a==b){t=a;a=b;b=t;}”      构成一条if 语句,由于条件不成立,则不执行任何操作, 原样输出ab的值。

3.【精析】(1)passtesterror    (2)  you

(1) n 被赋值为字符'e¹, case  'c' 匹配,输出pass; 此时并没有遇到break 语句,继续执行case 'd   句,输出test, 接着执行default 子句,输出error 后遇 break 语句结束switch 支语句。

(2)当n='a¹,   case   'a¹匹配,没有输出,此时没有遇到 break 语句,继续执行 case  'b' 子句,输出you,  break 语句结束switch 分支语句。

4.【精析】(1)11 (2) 10

先取a 的值判断,表达式a++>10 不成立,a 的值再自增1为11,执行语句“printf("%d\n"  ,a--);”    先将a 的值输出,即输出11,再使a 自减1,此时a 的值为10。

5.【精析】(1) ** 0**

(1)这是   switeh 嵌套语句。a   =1,执行 case    1:switch(b)分支,b=0,      case  0:

printf("**0**\n");            break;”语句,   * * 0 * * ;case   1:switch(b)分支执行完后,碰到 break

语句,结束switch分支语句。

(2)b=1, 执行case              1:printf("**1**In");break;”语句,打印出**1** ;case   1:switch(b) 支执行完后,碰到break 语句,结束switch 分支语句。

6.【精析】(1)条件运算符 (2)3

条件运算符的表达式是:表达式1?表达式2:表达式3,含义是:当表达式1的值为真时,返回表达式 2的值,否则返回表达式3的值。

根据运算符的优先级,先计算赋值运算符右侧的条件表达式5?a++:b-- 的值;由于条件5为真,所以  a++的值作为条件表达式的值;这样c=5? a++:b--;  ”等价于“c=a++;”,a++  表示先使用a 的值, 再将a 的值加1,因此c 的值为3。

三、应用题

 

 

上一篇

这里有最新的公司动态,这里有最新的网站设计、移动端设计、网页相关内容与你分享

下一篇