7、条件“22&&x<3。
8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。
9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。
10、当a=5,b=4,c=2时,表达式a>b!
=c的值是1。
11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A
C>B的值是0。
12、若a=6,b=4,c=2,则表达式!
(a-b)+c-1&&b+c/2的值是1。
13、有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。
14、有intx,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。
!
(x>y)+(y!
=z)||(x+y)&&(y-z)
15、有inta=3,b=4,c=5,x,y;,则以下表达式的值为0。
!
(x=a)&&(y=b)&&0
16、if(!
k)a=3;语句中的!
k可以改写为k==0,使其功能不变。
二、选择题
1、逻辑运算符两侧运算对象的数据类型( D )。
A)只能是0或1
B)只能是0或非0正数
C)只能是整型或字符型数据
D)可以是任何类型的数据
2、以下关于运算符优先顺序的描述中正确的是( C )。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
3、下列运算符中优先级最高的是( B )。
A)
=
4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式( D)。
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、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是( C )。
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型变量,且x=3,y=4,z=5,则下面表达式中值为0的是(D)。
A)‘x’&&‘y’
B)x<=y
C)x||y+z&&y-z
D)!
((xz||1)
7、已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!
y)的值是(C)。
A)0B)语法错C)1D)“假”
8、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为(B)。
A)1B)2C)3D)4
9、以下不正确的if语句形式是( C )。
A)if(x>y&&x!
=y);
B)if(x==y)x+=y;
C)if(x!
=y)scanf(“%d”,&x)elsescanf(“%d”,&y);
D)if(x10、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B)。
if(x>y)
z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
11、以下if语句语法正确的是( B ) 。
A)if(x>0)
printf(“%f”,x)
elseprintf(“%f”,-x);
B)B) if(x>0)
{x=x+y;printf(“%f”,x);}
elseprintf(“%f”,-x);
C)C) if(x>0)
{x=x+y;printf(“%f”,x);};
elseprintf(“%f”,-x);
D)D) if(x>0)
{x=x+y;printf(“%f”,x)}
elseprintf(“%f”,-x);
12、请阅读以下程序:
main()
{
inta=5,b=5,c=0;
if(a==b+c)printf(“***\n”);
elseprintf(“$$$\n”);
}
以下程序( C )。
A)有语法错不能通过编译B)可以通过编译但不能通过连接
C)输出***D)输出$$$
三、写出下列程序的运行结果
1、若运行时输入:
2<回车>,则以下程序的运行结果是2ndclasspostageis14p 。
#include
voidmain(void)
{
charClass;
printf(“Enter1for1stclasspostor2for2ndpost”);
scanf(“%c”,&Class);
if(Class==‘1’)
printf(“1stclasspostageis19p”);
else
printf(“2ndclasspostageis14p”);
}
2、若运行时输入:
4.4<回车>,则以下程序的运行结果是 SellingPrice(0.30)$5.72 。
#include
voidmain(void)
{
floatCostPrice,SellingPrice;
printf(“EnterCostPrice$:
”);
scanf(“%f”,&CostPrice);
if(CostPrice>=5)
{
SellingPrice=CostPrice+CostPrice*0.25;
printf(“SellingPrice(0.25)$%6.2f”,SellingPrice);
}
else
{
SellingPrice=CostPrice+CostPrice*0.30;
printf(“SellingPrice(0.30)$%6.2f”,SellingPrice);
}
}
3、以下程序的运行结果是 F 。
main()
{
if(2*2==5<2*2==4)
print(“T”);
else
printf(“F”);
}
能力提高(B)
一、选择题
1、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( D )。
A)A%2==1B)!
(A%2==0)C)!
(A%2)D)A%2
2、下列运算符中优先级最低的(A),优先级最高的是(C)。
A)?
:
B)&&C)+D)!
=
3、请阅读以下程序:
main()
{
inta=5,b=0,c=0;
if(a=b+c)printf(“***\n”);
elseprintf(“$$$\n”);
}
以下程序( D )。
A)有语法错不能通过编译B)可以通过编译但不能通过连接
C)输出***D)输出$$$
4、以下程序的运行结果是( C )。
main()
{
intm=5;
if(m++>5)printf(“%d\n”,m);
elseprintf(“%d\n”,m--);
}
A)4B)5C)6D)7
二、根据程序的功能,将以下程序补充完整
1、以下程序对输入的四个整数,按从小到大的顺序输出。
请在 内填入正确内容。
main()
{
intt,a,b,c,d;
printf(“inputa,b,c,d:
”)
scanf(“%d,%d,%d,%d”,&a,&b,&c,&d );
if(a>b){ t=a;a=b;b=t; }
if( a>c ){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c ){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);
}
三、编程:
1、试编程判断输入的正整数是否既是5又是7的整倍数。
若是,则输出yes;否则输出no。
2、编制程序要求输入整数x、y和z,若x2+y2+z2大于1000,则输出x2+y2+z2千位以上的数字,否则输出三数之和。
3、编写程序,输入三角型的三条边长,求其面积。
注意:
对于不合理的边长输入要输出数据错误的提示信息。
1、参考答案
main()
{intx;
if(x%5==0&&x%7==0)
printf(“yes”);
else
printf(“no”);
}
2、参考答案
main()
{intx,y,z,a,b;
scanf(“%d%d%d”,&x,&y,&z);
a=x*x+y*y*z*z;
if(a>1000)
{b=a/1000;printf(“%d”,b);}
elseprintf(“%d”,x+y+z);
}
3、参考答案
#include
main()
{floata,b,c,s,area;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
{s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%7.2f\n”,area);}
else
printf(“bunengzhuchengsanjiaoxing\n”);
}
第2讲
基础练习(A)
一、填空题
1、在if语句中又包含一个或多个if语句称为if语句的嵌套。
2、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总是与其之前最近的未配对的if配对。
如果if与else数目不一样,为实现设计者的企图,可以加花括号关系。
3、条件运算符是C语言中唯一的一个三目运算符,其结合性为从右至左。
4、假设条件表达式的格式为:
表达式1?
表达式2:
表达式
若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较高的类型
5、在switch语句中,switch后面括弧内的“表达式”,可以为任何类型。
6、若a=1,b=2,则表达式a>b?
a:
b+1的值是3。
7、若w=1、x=2、y=3、z=4,则条件表达式ww:
yy:
z的值是1。
8、若有以下if语句:
if(a
elsemin=b;
可用条件运算符来处理的等价式子为min=(a
a:
b;。
9、若x=1,y=2,z=3,则表达式(xx:
y)==z++的值是0。
10、设有变量定义:
inta=5,c=4;则(--a==++c)?
--a:
c++的值是5,此时c的存储单元的值为6。
二、判断题
1、在switch语句中,每一个的case常量表达式的值可以相同。
(错)
2、在switch语句中,各个case和default的出现次序影响执行结果。
(对)
3、在switch语句中,多个case可以共用一组执行语句。
(对)
4、条件表达式能取代一般if的语句。
(错)
5、case后的常量表达式类型一定与表达式类型匹配。
(对)
三、写出以下程序的运行结果
1、main()-1
{
inta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf(“%d\n”,c);
}
2、main()200
{
inta,b,c;
ints,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;
}
elseif(c>0)w=a-b;
elset=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”);
}
若grade的值为’C’,则输出结果是60-69
〈60
error!
能力提高(B)
一、写出下列程序的运行结果
1、#include5
5
1
voidmain(void)
{
intx,y=1,z;
if(y!
=0)x=5;
printf(“\t%d\n”,x);
if(y==0)x=4;
elsex=5;
printf(“\t%d\n”,x);
x=1;
if(y<0)
if(y>0)x=4;
elsex=5;
printf(“\t%d\n”,x);
}
2、#include4-2
40
4-2
voidmain(void)
{
intx,y=-2,z;
if((z=y)<0)x=4;
elseif(y==0)x=5;
elsex=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、#includea=2,b=1
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf(“a=%d,b=%d”,a,b);
}
二、根据程序的功能,将以下程序补充完整
以下程序计算某年某月有几天。
其中判别闰年的条件是:
能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。
请在 内填入正确内容。
main()
{
intyy,mm,len;
printf(“year,month=”);
scanf(“%d%d”,&yy,&mm);
switch(mm)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:
len=31 ;break;
case4:
case6:
case9:
case11:
len=30;break;
case2:
if(yy%4==0&&yy%100!
=0||yy%400==0) len=29;
else len=28 ;
break;
default:
printf(“inputerror”);break;
}
printf(“thelengthof%d%dis%d\n”,yy,mm,len);