第4章 第3.2节:if语句的嵌套及条件表达式(练习)-《C语言程序设计》(电子工业出版社)上好课

2026-04-29
| 2份
| 24页
| 50人阅读
| 0人下载

内容正文:

4.3.2节:if语句的嵌套及条件表达式 一、单项选择题 1.关于 C 语言中 if 语句嵌套的一般形式,以下说法正确的是( ) A. if 语句只能嵌套在 if 子句中 B. if 语句只能嵌套在 else 子句中 C. if 语句可以嵌套在 if 子句或 else 子句中,也可多层嵌套 D. if 语句的嵌套必须保证 if 与 else 数量完全相等 【答案】C 【解析】if 语句的嵌套可在 if 子句或 else 子句中,也可多层嵌套,且结构不强制对称,可根据实际需求使用部分结构。 2.条件运算符?:在 C 语言中属于( ) A. 单目运算符 B. 双目运算符 C. 三目运算符 D. 以上都不是 【答案】C 【解析】条件运算符?:是 C 语言中唯一的三目运算符,需要三个运算对象参与运算。 3.条件表达式表达式1 ? 表达式2 : 表达式3的执行规则是( ) A.先求解表达式 2,再根据表达式 1 的值决定是否执行表达式 3 B.若表达式 1 为真,执行表达式 3;否则执行表达式 2 C.若表达式1为真,求解表达式2的值作为整个表达式的值;否则求解表达式3的值 D.同时求解表达式 2 和表达式 3,再根据表达式 1 的值选择结果 【答案】C 【解析】条件表达式的规则是:表达式 1 为真则取表达式 2 的值,否则取表达式 3 的值,不会同时求解两个分支的表达式。 4.以下关于 if 语句嵌套的代码片段,输出结果为( ) int a=5,b=3; if(a>b) if(b>0) printf("A"); else printf("B"); else if(a>0) printf("C"); else printf("D"); A. A B. B C. C D. D 【答案】A 【解析】外层a>b为真,进入内层b>0判断,3>0为真,输出 "A"。 5.执行以下代码后,变量max的值为( ) int a=7,b=9,max; max = a>b ? a : b; A. 7 B. 9 C. 16 D. 2 【答案】B 【解析】条件表达式中a>b(7>9)为假,因此取表达式 3 的值b,即 9。 6.关于条件运算符的优先级和结合性,以下说法正确的是( ) A. 优先级高于关系运算符,结合方向为自左至右 B. 优先级仅高于赋值运算符,结合方向为自右至左 C. 优先级低于赋值运算符,结合方向为自右至左 D. 优先级高于逻辑运算符,结合方向为自左至右 【答案】B 【解析】条件运算符的优先级仅高于赋值运算符,低于逻辑、关系、算术运算符,结合方向为自右至左。 7.执行以下代码后,变量result的值为( ) int a=10,b=20,c=15; int result = (a>b) ? (a>c?a:c) : (b>c?b:c); A. 10 B. 15 C. 20 D. 35 【答案】C 【解析】外层条件表达式中a>b(10>20)为假,执行内层表达式b>c?b:c(20>15 为真),取b的值 20。 8.执行以下代码后,输出结果为( ) float a=6,b=6,c=6; if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b) if(a==b&&b==c) printf("等边三角形"); else if(a==b||b==c||a==c) printf("等腰三角形"); else printf("任意三角形"); else printf("不能构成三角形"); A. 等边三角形 B. 等腰三角形 C. 任意三角形 D. 不能构成三角形 【答案】A 【解析】首先判断三边能构成三角形,且a==b&&b==c成立,因此输出 “等边三角形”。 9.以下代码片段中,printf语句的执行情况是( ) int a=3,b=5; if(a==3) if(b<4) printf("A"); else printf("B"); else printf("C"); A. 输出 A B. 输出 B C. 输出 C D. 无输出 【答案】B 【解析】外层a==3为真,进入内层b<4判断(5<4 为假),执行 else 分支,输出 "B"。 10.条件表达式(a>b) ? (a>c?a:c) : (b>c?b:c)的作用是( ) A. 求 a、b、c 中的最小值 B. 求 a、b、c 中的最大值 C. 判断 a、b、c 是否相等 D. 计算 a、b、c 的和 【答案】B 【解析】该表达式通过嵌套条件表达式,依次比较 a 与 b、再与 c 比较,最终得到三个数中的最大值。 二、填空题。 1.条件运算符?:是 C 语言中唯一的______目运算符,语法格式为___________。 【答案】三;表达式1 ? 表达式2 : 表达式3 【解析】条件运算符是唯一的三目运算符,需要三个运算对象参与运算。 2.条件表达式的执行规则中,若表达式 1 的值为真,则整个条件表达式的值为______的值。 【答案】表达式 2 【解析】条件表达式规则:表达式 1 为真取表达式 2 的值,为假取表达式 3 的值。 3.执行代码int a=8,b=5,max; max = a>b ? a : b;后,变量max的值为___________。 【答案】8 【解析】a>b(8>5)为真,条件表达式取a的值 8。 4.执行代码int a=3,b=7,c=5; int max = (a>b)?(a>c?a:c):(b>c?b:c);后,变量max的值为___________。 【答案】7 【解析】外层a>b(3>7)为假,执行b>c?b:c(7>5 为真),取b的值 7。 5.等腰三角形的判断条件是:至少有两条边长度相等,用 C 语言表达式表示为___________。 【答案】a==b||b==c||a==c 【解析】判断等腰三角形的条件为任意两边相等,用逻辑或运算符连接三个相等判断。 6.条件表达式x>0 ? 1 : (x<0 ? -1 : 0)的作用是判断变量 x 的符号,当 x 为正数时返回______,负数时返回 - 1,零时返回 0。 【答案】1 【解析】该嵌套条件表达式中,外层x>0为真时返回 1,为假则判断内层x<0。 7.等边三角形的判断条件是:三条边长度都相等,用 C 语言表达式表示为___________。 【答案】a==b&&b==c 【解析】判断等边三角形需要三边同时相等,用逻辑与运算符连接两个相等判断。 8.执行以下代码后,变量result的值为___________。 int a=12,b=9; int result = a>b ? (a-b) : (b-a); 【答案】3 【解析】a>b(12>9)为真,取a-b的值 3,因此result=3。 9.条件表达式可以改写为等价的if-else语句,例如_____________可改写为if(a>b) max=a; else max=b;。 【答案】max = a>b?a:b; 【解析】条件表达式的双分支逻辑可以用 if-else 语句实现等价功能。 10.条件运算符的结合方向为______,即多个条件运算符连续使用时,使用该结合方向进行计算。 【答案】自右至左 【解析】条件运算符的结合方向为自右至左。 三、阅读程序题。 1.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int a=6,b=6,c=6; if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b) if(a==b&&b==c) printf("等边三角形! "); else if(a==b||b==c||a==c) printf("等腰三角形! "); else printf("任意三角形! "); else printf("不能构成三角形! "); } 【答案】等边三角形! 2.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int x=-3,y; y = x>0 ? 1 : (x<0 ? -1 : 0); printf("y=%d ",y); } 【答案】y=-1 3.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int a=10,b=12; if(a>b) printf("A"); else if(b>10) printf("B"); else printf("C"); } 【答案】B 4.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int a=4,b=5,c=3; int max = (a>b)?(a>c?a:c):(b>c?b:c); printf("max=%d ",max); } 【答案】max=5 5.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a=12, b=9; int res; if(a>10) if(b>10) res=1; else res=2; else res=3; printf("%d",res); } 【答案】2 6.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x=15; if(x>10) if(x<20) printf("OK"); else printf("NO"); else printf("NONE"); } 【答案】OK 7.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x=6, y=2; int res; if(x%y==0) if(x/y>2) res=100; else res=200; else res=300; printf("%d",res); } 【答案】100 8.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x=7; if(x%3==0) printf("X"); else if(x%4==0) printf("Y"); else printf("Z"); } 【答案】Z 9.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a=15, b=12, c=8; if(a>b) if(b>c) if(a+b>c) printf("1"); else printf("2"); else printf("3"); else printf("4"); } 【答案】1 10.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a=3, b=6, c=2; if(a*b>c*10) printf("X"); else if(a+b>c) printf("Y"); else printf("Z"); } 【答案】Y 四、程序填空题(根据题意,将空缺的语句补上) 1.以下程序使用条件表达式求两个数的最大值,请补全代码: #include "stdio.h" main() { int a,b,max; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); max = ______; printf("max=%d ",max); } 【答案】a>b?a:b 2.以下程序使用条件表达式求两个数的差的绝对值,请补全代码: #include "stdio.h" main() { int a,b,diff; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); diff = ______; printf("差的绝对值=%d ",diff); } 【答案】a>b?(a-b):(b-a) 3.程序功能:条件表达式嵌套,判断 x 是否大于 100,是则赋值 50,否则赋值 10 #include <stdio.h> main() { int x, y; scanf("%d",&x); _________________; printf("%d",y); } 【答案】y = x>100 ? 50 : 10 4.程序功能:a>b 时,若 b>c 输出 1,否则输出 2;a≤b 时,若 a>c 输出 3,否则输出 4。 #include <stdio.h> main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a>b) if(b>c) printf("1"); else printf("2"); else if(______) printf("3"); else printf("4"); } 【答案】a>c 5.程序功能:能被 3 或 5 整除,但不能同时被 3 和 5 整除,赋值 1,否则 0 #include <stdio.h> main() { int n,f; scanf("%d",&n); f = (______) ? 1 : 0; printf("%d",f); } 【答案】(n%3==0 || n%5==0) && !(n%3==0 && n%5==0) 五、编程题。 1. 输入一个 0~100 的成绩,判断等级:90~100:优秀;80~89:良好;60~79:及格;0~59:不及格。 【参考代码】 #include <stdio.h> main() { int score; scanf("%d",&score); if(score>=0 && score<=100) if(score>=90) printf("优秀"); else if(score>=80) printf("良好"); else if(score>=60) printf("及格"); else printf("不及格"); else printf("成绩无效"); } 2.输入一个整数 x,用 if 嵌套 计算分段函数:x≥10 → y=3x-5;0≤x<10 → y=2x;x<0 → y=x+10。 【参考代码】 #include <stdio.h> main() { int x,y; scanf("%d",&x); if(x>=0) if(x>=10) y=3*x-5; else y=2*x; else y=x+10; printf("%d",y); } 3.输入一个整数,用 if 嵌套 判断:能被 2 和 5 同时整除输出 "YES",只能被其中一个整除输出 "PART",都不能输出 "NO"。 【参考代码】 #include <stdio.h> main() { int n; scanf("%d",&n); if(n%2==0) if(n%5==0) printf("YES"); else printf("PART"); else if(n%5==0) printf("PART"); else printf("NO"); } 4.输入两个整数 a、b,用 if 嵌套 判断:a 和 b 都为正 → 输出和;都为负 → 输出乘积;一正一负 → 输出差的绝对值。 【参考代码】 #include <stdio.h> main() { int a,b; scanf("%d%d",&a,&b); if(a>0) if(b>0) printf("%d",a+b); else printf("%d",a-b>0?a-b:b-a); else if(b<0) printf("%d",a*b); else printf("%d",a-b>0?a-b:b-a); } 5.输入三个整数(可重复),使用条件表达式实现:找出最大数和最小数,计算两者的差值并输出(要求:仅用条件表达式,不使用 if 语句)。 【参考代码】 #include <stdio.h> main() { int a,b,c,max,min,diff; scanf("%d%d%d",&a,&b,&c); // 嵌套条件表达式求最大值 max = a>b ? (a>c ? a : c) : (b>c ? b : c); // 嵌套条件表达式求最小值 min = a<b ? (a<c ? a : c) : (b<c ? b : c); // 计算差值 diff = max - min; printf("%d",diff); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 4.3.2节:if语句的嵌套及条件表达式 一、单项选择题 1.关于 C 语言中 if 语句嵌套的一般形式,以下说法正确的是( ) A. if 语句只能嵌套在 if 子句中 B. if 语句只能嵌套在 else 子句中 C. if 语句可以嵌套在 if 子句或 else 子句中,也可多层嵌套 D. if 语句的嵌套必须保证 if 与 else 数量完全相等 2.条件运算符?:在 C 语言中属于() A. 单目运算符 B. 双目运算符 C. 三目运算符 D. 以上都不是 3.条件表达式表达式1 ? 表达式2 : 表达式3的执行规则是() A.先求解表达式 2,再根据表达式 1 的值决定是否执行表达式 3 B.若表达式 1 为真,执行表达式 3;否则执行表达式 2 C.若表达式1为真,求解表达式2的值作为整个表达式的值;否则求解表达式3的值 D.同时求解表达式 2 和表达式 3,再根据表达式 1 的值选择结果 4.以下关于 if 语句嵌套的代码片段,输出结果为() int a=5,b=3; if(a>b) if(b>0) printf("A"); else printf("B"); else if(a>0) printf("C"); else printf("D"); A. A B. B C. C D. D 5.执行以下代码后,变量max的值为() int a=7,b=9,max; max = a>b ? a : b; A. 7 B. 9 C. 16 D. 2 6.关于条件运算符的优先级和结合性,以下说法正确的是() A. 优先级高于关系运算符,结合方向为自左至右 B. 优先级仅高于赋值运算符,结合方向为自右至左 C. 优先级低于赋值运算符,结合方向为自右至左 D. 优先级高于逻辑运算符,结合方向为自左至右 7.执行以下代码后,变量result的值为() int a=10,b=20,c=15; int result = (a>b) ? (a>c?a:c) : (b>c?b:c); A. 10 B. 15 C. 20 D. 35 8.执行以下代码后,输出结果为() float a=6,b=6,c=6; if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b) if(a==b&&b==c) printf("等边三角形"); else if(a==b||b==c||a==c) printf("等腰三角形"); else printf("任意三角形"); else printf("不能构成三角形"); A. 等边三角形 B. 等腰三角形 C. 任意三角形 D. 不能构成三角形 9.以下代码片段中,printf语句的执行情况是() int a=3,b=5; if(a==3) if(b<4) printf("A"); else printf("B"); else printf("C"); A. 输出 A B. 输出 B C. 输出 C D. 无输出 10.条件表达式(a>b) ? (a>c?a:c) : (b>c?b:c)的作用是() A. 求 a、b、c 中的最小值 B. 求 a、b、c 中的最大值 C. 判断 a、b、c 是否相等 D. 计算 a、b、c 的和 二、填空题。 1.条件运算符?:是 C 语言中唯一的______目运算符,语法格式为___________。 2.条件表达式的执行规则中,若表达式 1 的值为真,则整个条件表达式的值为______的值。 3.执行代码int a=8,b=5,max; max = a>b ? a : b;后,变量max的值为___________。 4.执行代码int a=3,b=7,c=5; int max = (a>b)?(a>c?a:c):(b>c?b:c);后,变量max的值为___________。 5.等腰三角形的判断条件是:至少有两条边长度相等,用 C 语言表达式表示为___________。 6.条件表达式x>0 ? 1 : (x<0 ? -1 : 0)的作用是判断变量 x 的符号,当 x 为正数时返回______,负数时返回 - 1,零时返回 0。 7.等边三角形的判断条件是:三条边长度都相等,用 C 语言表达式表示为___________。 8.执行以下代码后,变量result的值为___________。 int a=12,b=9; int result = a>b ? (a-b) : (b-a); 9.条件表达式可以改写为等价的if-else语句,例如_____________可改写为if(a>b) max=a; else max=b;。 10.条件运算符的结合方向为______,即多个条件运算符连续使用时,使用该结合方向进行计算。 三、阅读程序题。 1.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int a=6,b=6,c=6; if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&a+c>b) if(a==b&&b==c) printf("等边三角形! "); else if(a==b||b==c||a==c) printf("等腰三角形! "); else printf("任意三角形! "); else printf("不能构成三角形! "); } 2.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int x=-3,y; y = x>0 ? 1 : (x<0 ? -1 : 0); printf("y=%d ",y); } 3.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int a=10,b=12; if(a>b) printf("A"); else if(b>10) printf("B"); else printf("C"); } 4.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int a=4,b=5,c=3; int max = (a>b)?(a>c?a:c):(b>c?b:c); printf("max=%d ",max); } 5.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a=12, b=9; int res; if(a>10) if(b>10) res=1; else res=2; else res=3; printf("%d",res);} 6.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x=15; if(x>10) if(x<20) printf("OK"); else printf("NO"); else printf("NONE");} 7.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x=6, y=2; int res; if(x%y==0) if(x/y>2) res=100; else res=200; else res=300; printf("%d",res);} 8.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int x=7; if(x%3==0) printf("X"); else if(x%4==0) printf("Y"); else printf("Z"); } 9.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a=15, b=12, c=8; if(a>b) if(b>c) if(a+b>c) printf("1"); else printf("2"); else printf("3"); else printf("4"); } 10.写出下列程序段的输出结果:________________。 #include <stdio.h> main() { int a=3, b=6, c=2; if(a*b>c*10) printf("X"); else if(a+b>c) printf("Y"); else printf("Z"); } 四、程序填空题(根据题意,将空缺的语句补上) 1.以下程序使用条件表达式求两个数的最大值,请补全代码: #include "stdio.h" main() { int a,b,max; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); max = ______; printf("max=%d ",max); } 2.以下程序使用条件表达式求两个数的差的绝对值,请补全代码: #include "stdio.h" main() { int a,b,diff; printf("请输入a,b的值:"); scanf("%d,%d",&a,&b); diff = ______; printf("差的绝对值=%d ",diff); } 3.程序功能:条件表达式嵌套,判断 x 是否大于 100,是则赋值 50,否则赋值 10 #include <stdio.h> main() { int x, y; scanf("%d",&x); _________________; printf("%d",y); } 4.程序功能:a>b 时,若 b>c 输出 1,否则输出 2;a≤b 时,若 a>c 输出 3,否则输出 4。 #include <stdio.h> main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a>b) if(b>c) printf("1"); else printf("2"); else if(______) printf("3"); else printf("4"); } 5.程序功能:能被 3 或 5 整除,但不能同时被 3 和 5 整除,赋值 1,否则 0 #include <stdio.h> main() { int n,f; scanf("%d",&n); f = (______) ? 1 : 0; printf("%d",f); } 五、编程题。 1. 输入一个 0~100 的成绩,判断等级:90~100:优秀;80~89:良好;60~79:及格;0~59:不及格。 2.输入一个整数 x,用 if 嵌套 计算分段函数:x≥10 → y=3x-5;0≤x<10 → y=2x;x<0 → y=x+10。 3.输入一个整数,用 if 嵌套 判断:能被 2 和 5 同时整除输出 "YES",只能被其中一个整除输出 "PART",都不能输出 "NO"。 4.输入两个整数 a、b,用 if 嵌套 判断:a 和 b 都为正 → 输出和;都为负 → 输出乘积;一正一负 → 输出差的绝对值。 5.输入三个整数(可重复),使用条件表达式实现:找出最大数和最小数,计算两者的差值并输出(要求:仅用条件表达式,不使用 if 语句)。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第4章 第3.2节:if语句的嵌套及条件表达式(练习)-《C语言程序设计》(电子工业出版社)上好课
1
第4章 第3.2节:if语句的嵌套及条件表达式(练习)-《C语言程序设计》(电子工业出版社)上好课
2
第4章 第3.2节:if语句的嵌套及条件表达式(练习)-《C语言程序设计》(电子工业出版社)上好课
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。