内容正文:
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。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$