第4章 第3.1节:if语句的三种形式(练习)-《C语言程序设计》(电子工业出版社)上好课

2026-04-29
| 2份
| 22页
| 47人阅读
| 0人下载

内容正文:

4.3.1节:if语句的三种形式 一、单项选择题 1.下列关于 C 语言单分支 if 语句的叙述中,正确的是( ) A. 当表达式的值为 0 时,执行其后的语句序列 B. 当表达式的值为非 0 时,执行其后的语句序列 C. 单分支 if 语句必须包含 else 部分 D. 单分支 if 语句的表达式只能是关系表达式 【答案】B 【解析】单分支 if 语句中,当表达式的值为非 0(真)时,执行其后的语句序列;值为 0(假)时跳过执行,故 A 错误,单分支 if 语句无 else 部分,表达式可以是任意合法的 C 表达式,故 C、D 错误。 2.下列关于双分支 if…else 语句的叙述中,错误的是( ) A. 当表达式的值为非 0 时,执行 if 后的语句序列 1 B. 当表达式的值为 0 时,执行 else 后的语句序列 2 C. if 和 else 后的语句序列必须用大括号括起来 D. 双分支语句只能执行其中一个分支的语句序列 【答案】C 【解析】当 if 或 else 后的语句序列只有一条语句时,可以省略大括号,故 C 错误;其余选项均正确。 3.若有定义int a=5;,执行下列语句后,输出结果为( ) if(a>10) printf("A"); else printf("B"); A. A B. B C. AB D. 无输出 【答案】B 【解析】a=5>10为假,执行 else 后的语句,输出 B。 4.若有定义int a=3,b=5;,执行下列语句后,输出结果为( ) if(a>b) printf("a>b"); else if(a==b) printf("a==b"); else printf("a<b"); A. a>b B. a==b C. a<b D. 无输出 【答案】C 【解析】a=3>b=5为假,继续判断a==b为假,执行 else 后的语句,输出 a<b。 5.下列关于 if 语句中 else 的配对规则,正确的是( ) A. else 总是和最外层的 if 配对 B. else 总是和其前面最近的未配对的 if 配对 C. else 总是和其后面最近的 if 配对 D. else 和 if 的配对顺序由程序书写顺序决定 【答案】B 【解析】C 语言中,else 总是和其前面最近的未配对的 if 配对,这是 else 的配对规则,故 B 正确,A、C、D 错误。 6.若有定义int a=10;,执行下列语句后,变量 a 的值为( ) if(a>5) { a=a-5;} printf("%d",a); A. 5 B. 10 C. 15 D. 0 【答案】A 【解析】a=10>5为真,执行 if 后的语句a=a-5,a 的值变为 5,输出结果为 5。 7.若有定义int a=2;,执行下列语句后,输出结果为( ) if(a==1) printf("A"); else if(a==2) printf("B"); else if(a==3) printf("C"); else printf("D"); A. A B. B C. C D. D 【答案】B 【解析】a=2,判断a==1为假,继续判断a==2为真,执行对应的语句,输出 B。 8.下列单分支 if 语句中,语法正确的是( ) A. if(a>10); printf("A"); B. if(a>10) printf("A"); C. if(a>10) then printf("A"); D. if a>10 printf("A"); 【答案】B 【解析】单分支 if 语句的格式为if(表达式) 语句序列;,A 选项中 if 后多了分号,导致语句序列与 if 无关;C 选项中 then 不是 C 语言关键字;D 选项中表达式缺少括号,故 A、C、D 错误,B 正确。 9.若有定义int a=3,b=4;,执行下列语句后,输出结果为( ) if(a<b){ printf("a");} else{ printf("b");} printf("end"); A. A B. b C. aend D. bend 【答案】C 【解析】a=3<b=4为真,执行 if 后的语句,输出 a,然后执行后续的 printf 语句,输出 end,最终结果为 aend。 10.下列关于 if 语句中大括号的使用,叙述正确的是( ) A. if 和 else 后的语句序列必须用大括号括起来 B. 只有当语句序列超过一条时,才需要用大括号括起来 C. 只有当语句序列是赋值语句时,才需要用大括号括起来 D. 大括号只能用于包含多条语句,不能包含一条语句 【答案】B 【解析】当 if 或 else 后的语句序列只有一条语句时,可以省略大括号;当语句序列包含多条语句时,必须用大括号括起来,故 B 正确,A、C、D 错误。 二、填空题。 1.单分支 if 语句的一般形式为:if (表达式) ____; 其中表达式的值为____时,执行其后的语句序列。 【答案】语句序列;非 0(或真) 【解析】单分支 if 语句中,表达式的值为非 0(真)时执行语句序列,值为 0(假)时跳过。 2.双分支 if…else 语句的一般形式为:if (表达式) {语句序列 1;} else {语句序列 2;},当表达式的值为非 0 时,执行____;当表达式的值为 0 时,执行____。 【答案】语句序列 1;语句序列 2 【解析】双分支语句根据表达式的值选择执行对应的语句序列。 3.若有定义int a=5;,则执行语句if(a>10) printf("A");后,输出结果为___________。 【答案】无输出 【解析】a=5>10为假,不执行 printf 语句,无输出。 4.若有定义int a=0;,则执行语句if(a) printf("true"); else printf("false");后,输出结果为___________。 【答案】false 【解析】a=0为假,执行 else 后的语句,输出 false。 5.多分支 if…else…if 语句中,最后的 else 可以省略,此时表示当所有表达式的值都为____时,不执行任何分支语句。 【答案】0(或假) 【解析】省略最后的 else 时,所有表达式为假时不执行任何分支语句。 6.当 if 或 else 后的语句序列包含多条语句时,必须用____将这些语句括起来,构成复合语句。 【答案】大括号({}) 【解析】多条语句构成的复合语句需要用大括号括起来。 7.若有定义int x=7;,则执行语句if(x>10) printf("A"); else if(x>5) printf("B"); else printf("C");后,输出结果为___________。 【答案】B 【解析】x=7>10为假,x>5为真,输出 B。 8.若有定义int a=3,b=5;,则执行语句if(a<b) {int t=a;a=b;b=t;} printf("%d,%d",a,b);后,输出结果为___________。 【答案】5,3 【解析】a=3<b=5为真,执行复合语句交换 a 和 b 的值,输出 5,3。 9.若有定义int a=0;,则执行语句if(!a) printf("A"); else printf("B");后,输出结果为___________。 【答案】A 【解析】!a=!0=1(真),执行 if 后的语句,输出 A。 10.若有定义int x=15;,则执行语句if(x<10) printf("A"); else if(x<20) printf("B"); else printf("C");后,输出结果为___________。 【答案】B 【解析】x=15<10为假,x<20为真,输出 B。 三、阅读程序题。 1.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int x=3; if(x<5) { x=x+2; } printf("%d",x);} 【答案】5 2.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int m=2; if(m=5) m=m+2; printf("%d",m); } 【答案】7 3.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int n=12; if(n>20||n<15) n=n-4; printf("%d",n); } 【答案】8 4.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int s=82; if(s>=90) printf("优"); else if(s>=70) printf("良"); else if(s>=60) printf("及格"); else printf("不及格");} 【答案】良 5.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int x=3,y=8; if(x<y && y%2==0) { x=x+y; y=x-y; } printf("%d",x); } 【答案】11 6.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int a=10,b=15; if(a>b) a=a-b; b=a+b; printf("%d",b); } 【答案】25 7.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int x=20; if(x<=30 && x>=10) x=x/2; printf("%d",x); } 【答案】10 8.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int flag=1; if(flag) flag=0; if(!flag) printf("关闭"); else printf("开启"); } 【答案】关闭 9.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int n=25; if(n>=20 && n%5==0) n=n+5; else if(n%5==0) n=n-5; printf("%d",n); } 【答案】30 10.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int x=0; if(x>5) printf("A"); else if(x>0) printf("B"); else if(x<0) printf("C"); else printf("D"); } 【答案】D 四、程序填空题(根据题意,将空缺的语句补上) 1.程序功能:输入两个整数,输出较大的那个数。 #include "stdio.h" main() { int a,b,max; scanf("%d%d",&a,&b); if(a>b) max=a; else ____; printf("%d",max); } 【答案】max=b 2.程序功能:输入一个整数,判断是否为偶数,是则输出 “even”,否则输出 “odd”。 #include "stdio.h" main() { int a; scanf("%d",&a); if(_____________) printf("even"); else printf("odd"); } 【答案】a%2==0 3.程序功能:输入两个实数,按从小到大的顺序输出。 #include "stdio.h" main() { float x,y,t; scanf("%f,%f",&x,&y); if(x>y) { t=x; x=y; ___________ } printf("%5.2f,%5.2f",x,y); } 【答案】y=t; 4.程序功能:输入一个整数,判断是否在 0-100 之间(含端点),是则输出 1,否则输出 0。 #include "stdio.h" main() { int a; scanf("%d",&a); if(_______________) printf("1"); else printf("0"); } 【答案】a>=0 && a<=100 5.程序功能:输入一个字符,判断是否为大写字母,是则输出 1,否则输出 0。 #include "stdio.h" main() { char ch; scanf("%c",&ch); if(__________________) printf("1"); else printf("0"); } 【答案】ch>='A' && ch<='Z' 五、编程题。 1. 输入一个整数,判断它是否能被 3 整除。能则输出 YES,否则不输出。 【参考代码】 #include<stdio.h> main() { int n; scanf("%d",&n); if(n%3==0) printf("YES"); } 2.输入一个年份,判断是否为整百年。是输出 Century,否则输出 Normal。 【参考代码】 #include<stdio.h> main() { int year; scanf("%d",&year); if(year%100==0) printf("Century"); else printf("Normal"); } 3.输入一个整数,判断它是正数、负数还是零,分别输出 +、-、0。 【参考代码】 #include<stdio.h> main() { int x; scanf("%d",&x); if(x>0) printf("+"); else if(x<0) printf("-"); else printf("0"); } 4.输入一个学生成绩,判断等级:90 及以上 A,80 及以上 B,60 及以上 C,60 以下 D。 【参考代码】 #include<stdio.h> main() { int score; scanf("%d",&score); if(score>=90) printf("A"); else if(score>=80) printf("B"); else if(score>=60) printf("C"); else printf("D"); } 5.输入一个整数,判断奇偶,同时判断是否大于 10。满足 “偶数且大于 10” 输出 Special,否则输出 Normal。 【参考代码】 #include<stdio.h> main() { int x; scanf("%d",&x); if(x%2==0 && x>10) printf("Special"); else printf("Normal"); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 4.3.1节:if语句的三种形式 一、单项选择题 1.下列关于 C 语言单分支 if 语句的叙述中,正确的是( ) A. 当表达式的值为 0 时,执行其后的语句序列 B. 当表达式的值为非 0 时,执行其后的语句序列 C. 单分支 if 语句必须包含 else 部分 D. 单分支 if 语句的表达式只能是关系表达式 2.下列关于双分支 if…else 语句的叙述中,错误的是() A. 当表达式的值为非 0 时,执行 if 后的语句序列 1 B. 当表达式的值为 0 时,执行 else 后的语句序列 2 C. if 和 else 后的语句序列必须用大括号括起来 D. 双分支语句只能执行其中一个分支的语句序列 3.若有定义int a=5;,执行下列语句后,输出结果为() if(a>10) printf("A"); else printf("B"); A. A B. B C. AB D. 无输出 4.若有定义int a=3,b=5;,执行下列语句后,输出结果为() if(a>b) printf("a>b"); else if(a==b) printf("a==b"); else printf("a<b"); A. a>b B. a==b C. a<b D. 无输出 5.下列关于 if 语句中 else 的配对规则,正确的是() A. else 总是和最外层的 if 配对 B. else 总是和其前面最近的未配对的 if 配对 C. else 总是和其后面最近的 if 配对 D. else 和 if 的配对顺序由程序书写顺序决定 6.若有定义int a=10;,执行下列语句后,变量 a 的值为() if(a>5) { a=a-5;} printf("%d",a); A. 5 B. 10 C. 15 D. 0 7.若有定义int a=2;,执行下列语句后,输出结果为() if(a==1) printf("A"); else if(a==2) printf("B"); else if(a==3) printf("C"); else printf("D"); A. A B. B C. C D. D 8.下列单分支 if 语句中,语法正确的是() A. if(a>10); printf("A"); B. if(a>10) printf("A"); C. if(a>10) then printf("A"); D. if a>10 printf("A"); 9.若有定义int a=3,b=4;,执行下列语句后,输出结果为() if(a<b){ printf("a");} else{ printf("b");} printf("end"); A. A B. b C. aend D. bend 10.下列关于 if 语句中大括号的使用,叙述正确的是() A. if 和 else 后的语句序列必须用大括号括起来 B. 只有当语句序列超过一条时,才需要用大括号括起来 C. 只有当语句序列是赋值语句时,才需要用大括号括起来 D. 大括号只能用于包含多条语句,不能包含一条语句 二、填空题。 1.单分支 if 语句的一般形式为:if (表达式) ____; 其中表达式的值为____时,执行其后的语句序列。 2.双分支 if…else 语句的一般形式为:if (表达式) {语句序列 1;} else {语句序列 2;},当表达式的值为非 0 时,执行____;当表达式的值为 0 时,执行____。 3.若有定义int a=5;,则执行语句if(a>10) printf("A");后,输出结果为___________。 4.若有定义int a=0;,则执行语句if(a) printf("true"); else printf("false");后,输出结果为___________。 5.多分支 if…else…if 语句中,最后的 else 可以省略,此时表示当所有表达式的值都为____时,不执行任何分支语句。 6.当 if 或 else 后的语句序列包含多条语句时,必须用____将这些语句括起来,构成复合语句。 7.若有定义int x=7;,则执行语句if(x>10) printf("A"); else if(x>5) printf("B"); else printf("C");后,输出结果为___________。 8.若有定义int a=3,b=5;,则执行语句if(a<b) {int t=a;a=b;b=t;} printf("%d,%d",a,b);后,输出结果为___________。 9.若有定义int a=0;,则执行语句if(!a) printf("A"); else printf("B");后,输出结果为___________。 10.若有定义int x=15;,则执行语句if(x<10) printf("A"); else if(x<20) printf("B"); else printf("C");后,输出结果为___________。 三、阅读程序题。 1.写出下列程序段的输出结果:________________。 #include "stdio.h" main() { int x=3; if(x<5) { x=x+2; } printf("%d",x);} 2.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int m=2; if(m=5) m=m+2; printf("%d",m); } 3.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int n=12; if(n>20||n<15) n=n-4; printf("%d",n); } 4.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int s=82; if(s>=90) printf("优"); else if(s>=70) printf("良"); else if(s>=60) printf("及格"); else printf("不及格");} 5.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int x=3,y=8; if(x<y && y%2==0) { x=x+y; y=x-y; } printf("%d",x); } 6.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int a=10,b=15; if(a>b) a=a-b; b=a+b; printf("%d",b); } 7.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int x=20; if(x<=30 && x>=10) x=x/2; printf("%d",x); } 8.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int flag=1; if(flag) flag=0; if(!flag) printf("关闭"); else printf("开启"); } 9.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int n=25; if(n>=20 && n%5==0) n=n+5; else if(n%5==0) n=n-5; printf("%d",n); } 10.写出下列程序段的输出结果:________________。 #include "stdio.h" int main() { int x=0; if(x>5) printf("A"); else if(x>0) printf("B"); else if(x<0) printf("C"); else printf("D"); } 四、程序填空题(根据题意,将空缺的语句补上) 1.程序功能:输入两个整数,输出较大的那个数。 #include "stdio.h" main() { int a,b,max; scanf("%d%d",&a,&b); if(a>b) max=a; else ____; printf("%d",max); } 2.程序功能:输入一个整数,判断是否为偶数,是则输出 “even”,否则输出 “odd”。 #include "stdio.h" main() { int a; scanf("%d",&a); if(_____________) printf("even"); else printf("odd"); } 3.程序功能:输入两个实数,按从小到大的顺序输出。 #include "stdio.h" main() { float x,y,t; scanf("%f,%f",&x,&y); if(x>y) { t=x; x=y; ___________ } printf("%5.2f,%5.2f",x,y); } 4.程序功能:输入一个整数,判断是否在 0-100 之间(含端点),是则输出 1,否则输出 0。 #include "stdio.h" main() { int a; scanf("%d",&a); if(_______________) printf("1"); else printf("0"); } 5.程序功能:输入一个字符,判断是否为大写字母,是则输出 1,否则输出 0。 #include "stdio.h" main() { char ch; scanf("%c",&ch); if(__________________) printf("1"); else printf("0"); } 五、编程题。 1. 输入一个整数,判断它是否能被 3 整除。能则输出 YES,否则不输出。 2.输入一个年份,判断是否为整百年。是输出 Century,否则输出 Normal。 3.输入一个整数,判断它是正数、负数还是零,分别输出 +、-、0。 4.输入一个学生成绩,判断等级:90 及以上 A,80 及以上 B,60 及以上 C,60 以下 D。 5.输入一个整数,判断奇偶,同时判断是否大于 10。满足 “偶数且大于 10” 输出 Special,否则输出 Normal。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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