第五章 选择结构程序设计
学习目的与要求:1,学会正确使用关系运算符和逻辑运算符。
2,重点掌握三种if 语句。
3,能够理解if 语句的嵌套。
4,重点掌握switch语句。
重点,1,三种if 语句。
2,if 语句的嵌套。
3,switch语句。
第1讲
知识归纳
1,关系运算符
(1) <,<=,>,>= 优先级高
==,!= 优先级低
举例:先乘除,后加减
注意:区分=和= =
(2) 关系表达式的值:关系表达式成立,为真——用1 表示;
关系表达式不成立,为假——用0 表示。
2,逻辑运算符
(1) 优先级别,!,&&,|| 从左往右,优先级依次降低。
(2) 运算规则,
! 真 假 && 真 假 || 真 假
真 真 假 真 真 真
假 真 假 假 假 假 真 假
(3) 逻辑表达式的值,
表达式结果为真——值 为 1;
表达式结果为假——值 为 0。
(4) a&&b&&c:只有a为真(非0) 时,才需要判别b 的值,只有a和b 都为真的情况下才需要判别c的值。对&&运算符,只有a≠0,才继续进行右面的运算。
(5) a || b || c:只有a为假(0) 时,才需要判别b 的值,只有a和b 都为假的情况下才需要判别c的值。对 || 运算符,只有a=0,才继续进行其右面的运算。
第二部分 C语言程序设计同步训练
·137·
·137·
3,if 语句的第一、第二种形式
(1) if (条件)
{ 语句1;
}
(2) if (条件)
{ 语句1;
}
else
{ 语句2;
}
基础训练(A)
一、填空题
1,关系表达式的运算结果是 值。C 语言没有逻辑型数据,以 代表
“真”,以 代表“假”。
2,逻辑运算符!是 运算符,其结合性是由 。
3,C 语言提供的三种逻辑运算符是,,。其中优先级最高的为,优先级最低的为 。
4,逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以 和 来判定它们属于“真”或“假”。
5,设y为int型变量,请写出描述“y是偶数”的表达式 。
6,设x,y,z均为int型变量,请写出描述“x或y中有一g1022g4579于z”的表达式 。
7,条件“2<x<3或x<g1610”的C语言表达式是 。
8,判g7041char型变量ch是g2554为g3835写g4395g8609的g8503g11842表达式是 。
9,g5415a=3,b=2,c=1时,表达式f=a>b>c的值是 。
10,g5415a=5,b=4,c=2时,表达式a>b!=c的值是 。
11,g5062g11705A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值是 。
12,g14521a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是 。
13,有int x,y,z;g1000x=3,y= g164,z=5,则表达式(x&&y)==(x||z)的值为 。
14,有int x,y,z;g1000x=3,y= g164,z=5,则以下表达式的值为 。
!(x>y)+(y!=z)||(x+y)&&(y-z)
15,有int a=3,b=4,c=5,x,y;,则以下表达式的值为 。
!(x=a)&&(y=b)&&0
16,if (!k) a=3;语句中的!k可以g6925写为,g1363其g2163g14033不变。
g1120、g17885g6333题
1,逻辑运算符两侧运算对象的数据类型( )。
A) 只g14033是0或1
B) 只g14033是0或非0g8503数
如果语句1只有一个语句,可以不加{}
括起来;即 如果if 或else 下需要执行多条语句,一定用{}括起来,否则,只执行一条语句;
三种if 语句在这一点上是相同的;
C语言程序设计上机指导与同步训练
·138·
·138·
C) 只g14033是整型或g4395符型数据
D) 可以是任何类型的数据
2,以下关于运算符优先g20046g5219的描述中g8503g11842的是( )。
A) 关系运算符<算g7427运算符<g17183值运算符<逻辑g994运算符
B) 逻辑g994运算符<关系运算符<算g7427运算符<g17183值运算符
C) g17183值运算符<逻辑g994运算符<关系运算符<算g7427运算符
D) 算g7427运算符<关系运算符<g17183值运算符<逻辑g994运算符
3,下g2027运算符中优先级最高的是( )。
A)< B)+ C)&& D)!=
4,为判g7041g4395符变量c的值不是数g4395也不是g4395g8609时,g5224g18331用下述表达式( )。
A) c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122
B) !(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)
C) c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122
D) !(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)
5,g14033g8503g11842表示“g5415x的g2474值g3324g7591,100g761和g759200,300g761g14551g3272g1881为真,g2554则为假”的表达式是( )。
A) (x>=1)&&(x<=100)&&(x>=200)&&(x<=300)
B) (x>=1)||(x<=100)||(x>=200)||(x<=300)
C) (x>=1)&&(x<=100)||(x>=200)&&(x<=300)
D) (x>=1)||(x<=100)&&(x>=200)||(x<=300)
6,设x、y和z是int型变量,g1000x=3,y=4,z=5,则下面表达式中值为0的是( )。
A) g254xg255&&g254yg255
B) x<=y
C) x||y+z&&y-z
D) !((x<y)&&!z||1)
7,g5062g11705x=43,ch=g254Ag255,y=0;则表达式(x>=y&&ch<g254Bg255&&!y)的值是( )。
A)0 B)语g8873g19181 C)1 D)“假”
8,设有:int a=1,b=2,c=3,d=4,m=2,n=2;
g6203行(m=a>b)&&(n=c>d)g2530n的值为( )。
A)1 B)2 C)3 D)4
9,以下不g8503g11842的if语句g5430式是( )。
A) if(x>y&&x!=y);
B) if(x==y) x+=y;
C) if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);
D) if(x<y) {x++; y++;}
10,g5062g11705int x=10,y=20,z=30;以下语句g6203行g2530x,y,z的值是( )。
if(x>y)
z=x; x=y; y=z;
A) x=10,y=20,z=30 B) x=20,y=30,z=30
第二部分 C语言程序设计同步训练
·139·
·139·
C) x=20,y=30,z=10 D) x=20,y=30,z=20
11,以下if语句语g8873g8503g11842的是( )。
A) if(x>0)
printf(“%f”,x)
else printf(“%f”,-x);
B) if(x>0)
{ x=x+y; printf(“%f”,x); }
else printf(“%f”,-x);
C) if(x>0)
{ x=x+y; printf(“%f”,x); };
else printf(“%f”,-x);
D) if(x>0)
{ x=x+y; printf(“%f”,x) }
else printf(“%f”,-x);
12,请g19417g16847以下g12255g5219
main()
{
int a=5,b=5,c=0;
if(a==b+c) printf(“***\n”);
else printf(“$$$\n”);
}
以g990g12255g5219( )。
A) 有语g8873g19181不g14033g17902g17819g13546g16805 B) 可以g17902g17819g13546g16805但不g14033g17902g17819g17842g6521
C) g17767出*** D) g17767出$$$
三、写出下g2027g12255g5219的运行结果
1,g14521运行时g17767g1849:2<g3250g17722>,则以下g12255g5219的运行结果是 。
#include <stdio.h>
void main(void)
{
char Class;
printf(“Enter 1 for 1st class post or 2 for 2nd post”);
scanf(“%c”,&Class);
if(Class==‘1’)
printf(“1st class postage is 19p”);
else
printf(“2nd class postage is 14p”);
}
2,g14521运行时g17767g1849:4.4<g3250g17722>,则以下g12255g5219的运行结果是 。
#include <stdio.h>
void main(void)
{
float CostPrice,SellingPrice;
C语言程序设计上机指导与同步训练
·140·
·140·
printf(“Enter Cost Price $:”);
scanf(“%f”,&CostPrice);
if(CostPrice>=5)
{
SellingPrice=CostPrice+CostPrice*0.25;
printf(“Selling Price(0.25)$%6.2f”,SellingPrice);
}
else
{
SellingPrice=CostPrice+CostPrice*0.30;
printf(“Selling Price(0.30)$%6.2f”,SellingPrice);
}
}
3,以下g12255g5219的运行结果是 。
main()
{
if(2*2==5<2*2==4)
print(“T”);
else
printf(“F”);
}
能力提高(B)
一、g17885g6333题
1,g14521g5088g7407g5415A的值为g3867数时,表达式的值为“真”,A的值为偶数时,表达式的值为
“假”,则以下不g14033g9397g17287要g8726的表达式是( )。
A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2
2,下g2027运算符中优先级最低的( ),优先级最高的是( )。
A)?,B)& C)+ D)!=
3,请g19417g16847以下g12255g5219
main()
{
int a=5,b=0,c=0;
if(a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
以下g12255g5219( )。
A) 有语g8873g19181不g14033g17902g17819g13546g16805 B) 可以g17902g17819g13546g16805但不g14033g17902g17819g17842g6521
C) g17767出*** D) g17767出$$$
4,以下g12255g5219的运行结果是( )。
main()
{
int m=5;
if(m++>5) printf(“%d\n”,m);
第二部分 C语言程序设计同步训练
·141·
·141·
else printf(“%d\n”,m--);
}
A)4 B)5 C)6 D)7
g1120、g7693据g12255g5219的g2163g14033g4570以下g12255g5219g15929g1817g4448整
以下g12255g5219对g17767g1849的4g1022整数,g6365从g4579g2052g3835的g20046g5219g17767出。请g3324 g1881填g1849g8503g11842g1881g4493。
main()
{
int t,a,b,c,d;
printf(“input a,b,c,d:”)
scanf(“%d,%d,%d,%d”,);
if(a>b) { }
if ( ) {t=a;a=c;c=t;}
if (a>d) {t=a;a=d;d=t;}
if ( ) {t=b;b=c;c=t;}
if (b>d) {t=b;b=d;d=t;}
if (c>d) {t=c;c=d;d=t;}
printf(“%d,%d,%d,%d”,a,b,c,d);
}
三、g13546g12255题
1,g16809g13546g12255判g7041g17767g1849的g8503整数是g2554g7094是 5 g2460是 7的整g1505数。g14521是,则g17767出 yes;g2554则g17767
出no。
2,g13546g2058g12255g5219要g8726g17767g1849整数x、y和z,g14521x
2
+y
2
+z
2
g3835于1000,则g17767出x
2
+y
2
+z
2
g2327g1313以g990
的数g4395,g2554则g17767出3数g1055和。
3,g13546写g12255g5219,g17767g1849三g16294型的3条g17805g19283,g8726其面g12227。g8892g5859:对于不合g10714的g17805g19283g17767g1849要g17767
出数据g19181g16835的提示g1461g5699。
第2讲
知识归纳
1,if 语句的第三种形式
if ( 条件1 ) { 语句1 }
else if ( 条件2 ) { 语句2 }
else if ( 条件3 ) { 语句3 }
vertellipsis
else { 语句 n}
2,if 语句的嵌套
(1) 三种if 语句可以g1126g11468g4896g3883,g5224g5415g8892g5859的是,else g5647是g994它g990面最g17829的if g18209对。
(2) g3926果 if g994 else 的数g11458不一g7691,为g4466g10628g12255g5219设g16757者的g1237g3282,可以g2164{} g6336g17227来g11842定
g18209对关系。
C语言程序设计上机指导与同步训练
·142·
·142·
3,条件运算符
(1) g7696式:表达式1?表达式 2,表达式 3
(2) 条件运算符的结合g7053g2533为“g14270右g14279左”;
g3926:a>b?a:c>d?c:d; //先算出c>d?c:d,用它的结果,g1328为表达式3,g2454g994g2081面的运算。
4,switch语句
g7696式:switch ( 表达式 )
{ case g5132量表达式1,{ 语句 1 }
case g5132量表达式2,{ 语句 2 }
…,
case g5132量表达式 n,{ 语句 n }
default,{ 语句 n+1 } //default 可有可g7092;
}
switch语句g2530,表达式的类型g5132用int或char型数据类型,caseg2530的g5132量表达式类型一定g994表达式类型g2317g18209;
(1) caseg2530g5132量表达式的值g5529g20047g1126不g11468g2528;
(2) case和default出g10628次g5219不g5445g2721g6203行结果;
(3) case语句g2530g3926没有break,g20046g5219g2533下g6203行。g2011g16772!
基础训练(A)
一、填空题
1,g3324if语句中g2460g2265含一g1022或多g1022if语句称为 。
2,为了避免g3324g4896g3883的条件语句 if-else中产生g1120义性,C 语言规定:else 子句g5647是g994 if
g18209对。g3926果if g994else数g11458不一g7691,为g4466g10628设g16757者的g1237g3282,可以g2164 来g11842定g18209对关系。
3,条件运算符是C语言中唯一的一g1022 g11458运算符,其结合性为 。
4,假设条件表达式的g7696式为:表达式1?表达式2:表达式3
g14521表达式2和表达式3的类型不g2528,此时条件表达式的值的类型为g1120者中较 的类型。
5,g3324switch语句中,switchg2530面g6336弧g1881的“表达式”,可以为 类型。
6,g14521a=1,b=2,则表达式a>b?a:b+1的值是 。
7,g14521w=1、x=2、y=3、z=4,则条件表达式w<x?w:y<z?y:z的值是 。
8,g14521有以下if 语句:if (a<b) min=a;
else min=b;
可用条件运算符来处g10714的等价式子为 。
9,g14521x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是 。
10,设有变量定义:int a=5,c=4;则(--a==++c)?--a:c++的值是,此时c的存储单元的值为 。
第二部分 C语言程序设计同步训练
·143·
·143·
g1120、判g7041题
1,g3324switch语句中,每一g1022的caseg5132量表达式的值可以g11468g2528。( )
2,g3324switch语句中,各g1022case和default的出g10628次g5219g5445g2721g6203行结果。( )
3,g3324switch语句中,多g1022case可以共用一组g6203行语句。( )
4,条件表达式g14033g2474代一般if的语句。( )
5,caseg2530的g5132量表达式类型一定g994表达式类型g2317g18209。( )
三、写出以下g12255g5219的运行结果
1,
main()
{
int a=2,b=3,c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
printf(“%d\n”,c);
}
2,
main()
{
int a,b,c;
int s,w,t;
s=w=t=0;
a=-1; b=3; c=3;
if(c>0) s=a+b;
if(a<=0)
{
if(b>0)
if(c<=0) w=a-b;
}
else if(c>0) w=a-b;
else t=c;
printf(“%d %d %d”,s,w,t);
}
3,
switch(grade)
{
case ‘A’,printf(“85-100\n”);
case ‘B’,printf(“70-84\n”);
case ‘C’,printf(“60-69\n”);
case ‘D’,printf(“<60\n”);
default,printf(“error!\n”);
}
g14521grade的值为‘C’,则g17767出结果是__________。
C语言程序设计上机指导与同步训练
·144·
·144·
能力提高(B)
一、写出下g2027g12255g5219的运行结果
1,
#include <stdio.h>
void main(void)
{
int x,y=1,z;
if(y!=0) x=5;
printf(“\t%d\n”,x);
if(y==0) x=4;
else x=5;
printf(“\t%d\n”,x);
x=1;
if(y<0)
if(y>0) x=4;
else x=5;
printf(“\t%d\n”,x);
}
2,
#include <stdio.h>
void main(void)
{
int x,y=-2,z;
if((z=y)<0) x=4;
else if(y==0) x=5;
else x=6;
printf(”\t%d\t%d\n”,x,z);
if(z=(y==0))
x=5;
x=4;
printf(“\t%d\t%d\n”,x,z);
if(x=z=y) x=4;
printf(“\t%d\t%d\n”,x,z);
}
3,
#include <stdio.h>
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1,
switch(y)
{
case 0,a++; break;
第二部分 C语言程序设计同步训练
·145·
·145·
case 1,b++; break;
}
case 2,
a++; b++; break;
}
printf(“a=%d,b=%d”,a,b);
}
g1120、g7693据g12255g5219的g2163g14033g4570以下g12255g5219g15929g1817g4448整
以下g12255g5219g16757算某年某月有几天。其中判别闰年的条件是:g14033被4整除但不g14033被100整除的年是闰年,g14033被400整除的年也是闰年。请g3324 g1881填g1849g8503g11842g1881g4493。
main()
{
int yy,mm,len;
printf(“year,month=”);
scanf(“%d %d”,&yy,&mm);
switch(mm)
{
case 1,
case 3,
case 5,
case 7,
case 8,
case 10,
case 12,; break;
case 4,
case 6,
case 9,
case 11,len=30; break;
case 2,
if(yy%4==0&&yy%100!=0||yy%400==0) ;
else ;
break;
default,printf(“input error”); break;
}
printf(“the length of %d %d is %d\n”,yy,mm,len);
}
三、g4570以下g12255g5219段g6925用g4896g3883的if语句g4466g10628
int s,t,m;
t=(int)(s/10);
switch(t)
{
case 10,m=5; break;
case 9,m=4; break;
case 8,m=3; break;
case 7,m=2; break;
case 6,m=1; break;
default,m=0;
}
C语言程序设计上机指导与同步训练
·146·
·146·
四、g13546g12255题
1,g5062g11705银行整存整g2474存款不g2528期限的月g5699利率分别为,
0.315% 期限一年
0.330% 期限g1120年
0.345% 期限三年
0.375% 期限五年
0.420% 期限八年
要g8726g17767g1849存钱的本金和期限,g8726g2052期时g14033从银行得g2052的利g5699g994本金的合g16757。
2,g13546写一g1022简单g16757算器g12255g5219,g17767g1849g7696式为:data1 op data2。其中 data1和data2是g2454g2164
运算的两g1022数,op为运算符,它的g2474值只g14033是+、-、*、/。
3,g13546写g12255g5219,g17767g1849一g1313学生的生日(年:y0、月:m0、日:d0); 并g17767g1849g5415g2081的日期(年:
y1、月:m1、日:d1); g17767出该生的g4466际年龄。
链接二级考试
一、g17885g6333题
1,g5415a=1,b=3,c=5,d=5时,g6203行下面一段g12255g5219g2530,x的值为( )。
A) 1 B) 2 C) 3 D) 6
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
(1999年4月)
2,设有g3926下定义
int a=1,b=2,c=3,d=4,m=2,n=2;
则g6203行表达式:(m=a>b)&&(n=c>d)g2530,n的值为( )。
A) 1 B) 2 C) 3 D) 0
(1999年4月)
3,g3324g6203行以下g12255g5219时,为了g1363g17767出结果为:t=4,则给 a 和 b g17767g1849的值g5224g9397g17287的条件是
( )。
A) a>b B) a<b<0 C) 0<a<b D) 0>a>b
main()
{ int s,t,a,b;
scanf("%d,%d",&a,&b);
s=1; t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
第二部分 C语言程序设计同步训练
·147·
·147·
else if(a==b) t=5;
else t=2*s;
printf("t=%d\n",t);}
(1999年4月)
4,语句:printf("%d",(a=2)&&(b= g162);的g17767出结果是( )。
A) g7092g17767出 B) 结果不g11842定 C) –1 D) 1
(1999年9月)
5,g5415c的值不为0时,g3324下g2027g17885项中g14033g8503g11842g4570c的值g17183给变量a、b的是( )。
A) c=b=a; B) (a=c) ‖(b=c) ;
C) (a=c) &&(b=c); D) a=c=b;
(1999年9月)
6,g14033g8503g11842表示a和bg2528时为g8503或g2528时为负的逻辑表达式是( )。
A) (a>=0‖b>=0)&&(a<0‖b<0)
B) (a>=0&&b>=0)&&(a<0&&b<0)
C) (a+b>0)&&(a+b<=0)
D) a*b>0
(1999年9月)
7,以下g12255g5219的g17767出结果是( )。
A) –1 1 B) 0 1 C) 1 0 D) 0 0
main( )
{ int a= -1,b=1,k;
if((++a<0)&& ! (b-- <=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
(1999年9月)
8,设 int x=1,y=1; 表达式(!x||y--)的值是( )。
A) 0 B) 1 C) 2 D)g161
(2000年4月)
9,g994 y=(x>0?1:x<0?-1:0);的g2163g14033g11468g2528的if语句是( )。
A) if (x>0) y=1; B) if(x)
else if(x<0)y=g161; if(x>0)y=1;
else y=0; else if(x<0)y=g161;
else y=0;
C) y=g161 D) y=0;
if(x) if(x>=0)
if(x>0)y=1; if(x>0)y=1;
else if(x==0)y=0; else y=g161;
else y=g161;
C语言程序设计上机指导与同步训练
·148·
·148·
(2000年4月)
10,g14521有定义,float w; int a,b; 则合g8873的switch语句是( )。
A) switch(w) B) switch(a);
{ case 1.0,printf("*\n"); { case 1 printf("*\n");
case 2.0,printf("**\n"); case 2 printf("**\n");
} }
C) switch(b) D) switch(a+b);
{ case 1,printf("*\n"); { case 1,printf("*\n");
default,printf("\n"); case 2,printf("**\n");
case 1+2,printf("**\n"); default,printf("\n");
} }
(2000年4月)
11,有g3926下g12255g5219
main()
{ int x=1,a=0,b=0;
switch(x){
case 0,b++;
case 1,a++;
case 2,a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
该g12255g5219的g17767出结果是( )。
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2
(2000年9月)
12,有g3926下g12255g5219
main()
{ float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf(“%f\n”,y);
}
该g12255g5219的g17767出结果是( )
A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000
(2000年9月)
13,有g3926下g12255g5219
main()
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++
第二部分 C语言程序设计同步训练
·149·
·149·
printf(“%d\n”,c);
}
该g12255g5219的g17767出结果是( )
A) 0 B) 1 C) 2 D) 3
(2000年9月)
14,有g3926下g12255g5219段
int a=14,b=15,x;
char c=’A’;
x=(a&&b)&&(c<’B’);
g6203行该g12255g5219段g2530,x的值为( )。
A) ture B) false C) 0 D) 1
(2000年9月)
15,设x、y、t均为int型变量,则g6203行语句:x=y=3;t=++x||++y;g2530,y的值为( )。
A) 不定值 B) 4 C) 3 D) 1
(2001年4月)
16,g14521g6203行以下g12255g5219时从键盘g990g17767g18499,则g17767出结果是( )。
A) 11 B) 10 C) 9 D) 8
main()
{ int n;
scanf(“%d”,&n);
if(n++<10) printf(“%d\n”,n);
else printf(“%d\n”,n--);
}
(2001年4月)
17,g14521a,b、c1、c2、x、y、均是整型变量,g8503g11842的switch语句是( )。
A) swich(a+b); B) switch(a*a+b*b)
{ case 1:y=a+b; break; {case 3,
case 0:y=ag16b; break; case 1:y=a+b;break;
} case 3:y=bg16a,break;
}
C) switch a D) switch(a-b)
{ case c1,y=ag16b; break {default:y=a*b;break
case c2,x=a*d; break case 3:case 4:x=a+b;break
default:x=a+b; case 10:case 11:y=ag16b;break;
} }
(2001年4月)
18,g14521变量c为char类型,g14033g8503g11842判g7041出c为g4579写g4395g8609的表达式是( )。
A) ‘a’<=c<= ‘z’ B) (c>= ‘a’)||(c<= ‘z’)
C) (‘a’<=c)and (‘z’>=c) D) (c>= ‘a’)&&(c<= ‘z’)
(2001年4月)
C语言程序设计上机指导与同步训练
·150·
·150·
19,假定w、x、y、z、m均为int型变量,有g3926下g12255g5219段
w=1; x=2; y=3; z=4;
m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;
则该g12255g5219运行g2530,m的值是( )。
A) 4 B) 3 C) 2 D) 2
(2001年9月)
20,以下g12255g5219的g17767出结果是( )。
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
A) 5 B) 4 C) 6 D) 不g11842定
(2002年4月)
21,以下g12255g5219的g17767出结果是( )。
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A) 1 B) 0 C) 非0的数 D) -1
(2002年4月)
22,g5062有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是( )。
A) 6 B) 0 C)2 D) 1
(2002年9月)
23,有一函数,
0x
0x
0x
1
0
1
y
<
=
>
=
,以下g12255g5219段中不g14033g7693据x值g8503g11842g16757算出y值的是( )。
A) if(x>0) y=1; B) y=0;
else if(x==0) y=0; if(x>0) y=1;
else y=g161; else if(x<0) y=g161;
C) y=0; D) I f(x>=0)
if(x>=0); if(x>0) y=1;
if(x>0) y=1; else y=0;
else y=g161; else y=g161;
(2002年9月)
24,有以下g12255g5219
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0:m++;break;
第二部分 C语言程序设计同步训练
·151·
·151·
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf(“%d\n”,m);
}
g12255g5219运行g2530的g17767出结果是( )。
A) 1 B) 2 C) 3 D) 4
(2002年9月)
25,C语言中用于结构化g12255g5219设g16757的三种基本结构是( )。
A) g20046g5219结构、g17885g6333结构、循环结构 B) if、switch、break
C) for、while、do-while D) if、for、continue
(2003年4月)
26,有以下g12255g5219
main()
{ int i=1,j=1,k=2;
if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k);
}
g6203行g2530g17767出结果是( )。
A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,3
(2003年4月)
27,有以下g12255g5219
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)
}
g6203行g2530g17767出结果是( )。
A) 2 B) 3 C) 4 D) g13546g16805时有g19181,g7092结果
(2003年4月)
28,以下g17885项中非g8873的表达式是( )。
A) 0<=x<100 B) i=j==0 C) (char)(65+3) D) x+1=x+1
(2003年9月)
29,有以下g12255g5219
main()
{ int a=1,b=2,m=0,n=0,k;
C语言程序设计上机指导与同步训练
·152·
·152·
k=(n=b>a)||(m=a<b);
printf("%d,%d\n",k,m);
}
g12255g5219运行g2530的g17767出结果是( )。
A) 0,0 B) 0,1 C) 1,0 D) 1,1
(2003年9月)
30,有定义语句:int a=1,b=2,c=3,x; 则以下g17885项中各g12255g5219段g6203行g2530,x 的值不为 3
的是( )。
A) if(c<a) x=1; B) if(a<3) x=3;
else if(b<a) x=2; else if (a<2) x=2;
else x=3; else x=1;
C) if(a<3) x=3; D) if(a<b) x=b;
if(a<2) x=2; if(b<c) x=c;
if(a<1) x=1; if(c<a) x=a;
(2003年9月)
一、填空题
1,条件“20<x<30或x<g16100”的C语言表达式是_________。
(1996年4月)
2,g14521x为int类型,请以最简单的g5430式写出g994逻辑表达式!x等价的C语言关系表达式
________。
(2000年4月)
3,表示“整数x的绝对值g3835于5”时值为“真”的C语言表达式是__________。
(2000年9月)
4,下g2027g12255g5219段的g17767出结果是_________。
int n=’c’;
switch(n++)
{ default,printf(“error”);break;
case ‘a’:case ‘A’:case ‘b’:case ‘B’:printf(“good”);break;
case ‘c’:case ‘C’:printf(“pass”);
case ‘d’:case ‘D’:printf(“warn”);
}
(2001年4月)
5,设y是int型变量,请写出判g7041y为g3867数的关系表达__________。
(2001年9月)
6,g14521从键盘g17767g184958,则以下g12255g5219g17767出的结果是__________。
main()
{ int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
第二部分 C语言程序设计同步训练
·153·
·153·
}
(2002年4月)
7,以下g12255g5219g17767出的结果是__________。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
(2002年4月)
8,以下g12255g5219的g17767出结果是__________。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d \n”,x,y);
}
(2002年9月)
9,g14521有以下g12255g5219
main()
{ int p,a=5;
if(p=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
g6203行g2530g17767出结果是_________。
(2003年4月)
10,g14521有以下g12255g5219
main()
{ int a=4,b=3,c=5,t=0;
if(a<b)t=a;a=b;b=t;
if(a<c)t=a;a=c;c=t;
printf("%d %d %d\n",a,b,c);
}
g6203行g2530g17767出结果是_________。
(2003年4月)
11,以下g12255g5219的g17767出结果是_________。
main()
{ int p=30;
printf (“%d\n”,(p/3>0? p/10:p%3));
}
(2003年9月)
C语言程序设计上机指导与同步训练
·154·
·154·
12,以下g12255g5219的g17767出结果是_________。
main()
{ int a=1,b=3,c=5;
if (c=a+b) printf("yes\n");
else printf("no\n");
}
(2003年9月)