第四章C程序设计习题.docx

上传人:b****4 文档编号:4994152 上传时间:2022-12-12 格式:DOCX 页数:20 大小:22.98KB
下载 相关 举报
第四章C程序设计习题.docx_第1页
第1页 / 共20页
第四章C程序设计习题.docx_第2页
第2页 / 共20页
第四章C程序设计习题.docx_第3页
第3页 / 共20页
第四章C程序设计习题.docx_第4页
第4页 / 共20页
第四章C程序设计习题.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第四章C程序设计习题.docx

《第四章C程序设计习题.docx》由会员分享,可在线阅读,更多相关《第四章C程序设计习题.docx(20页珍藏版)》请在冰豆网上搜索。

第四章C程序设计习题.docx

第四章C程序设计习题

第四章逻辑运算和判断选取控制

4.1选择题

[题4.1]逻辑运算符两侧运算对象的数据类型____.

A)只能是0或1B)只能是0或非0正数

C)只能是整型或字符型数据D)可以是任何类型的数据

[题4.4]能正确表示”当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是____.

A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B)(x>=1)||(x<=10)||(x>=200)||(x<=210)

C)(x=>1)&&(x<=10)||(x>=200)&&(x<=210)

D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)

[题4.6]判断char型变量ch是否为大写字母的正确表达式是____.

A)’A’<=ch<=’Z’

B)(ch>=’A’)&(ch<=’Z’)

C)(ch>=’A’)&&(ch<=’Z’)

D)(‘A’<=ch)AND(‘Z’>=ch)

[题4.7]设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是____.

A)‘x‘&&‘y‘B)x<=y

C)x||y+z&&y-zD)!

((x

z||1)

[题4.8]已知x=43,ch=‘A’,y=0;则表达式

(x>=y&&ch<'B’&&!

y)的值是____.

A)0B)语法错C)1D)”假”

[题4.9]若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”。

则以下不能满足要求的表达式是____.

A)A%2==1B)!

(A%2==0)C)!

(A%2)D)A%2

[4.10]设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后n的值为____.

A)1B)2C)3D)4

[题4.12]以下程序的运行结果是____.

#include“stdio.h”

main()

{inta,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

printf(“%d,%d”,a,b);

}

A)6,1B)2,1C)6,0D)2,0

[题4.14]执行以下语句后a的值为[1],b的值为[2]。

inta=5,b=6,w=1,x=2,y=3,z=4;

(a=w>x)&&(b=y>z);

[1]A)5B)0C)2D)l

[2]A)6B)0C)1D)4

[题4.15]以下不正确的if语句形式是____.

A)if(x>y&&x!

=y);

B)if(x==y)x+=y;

C)if(x!

=y)scanf(“%d”,&x)elsescanf(“%d”,&y);

D)if(x

[题4.17]已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是___.

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

[题4.18]以下if语句语法正确的是___.

A)if(x>O)

printf(“%f”,x)

elseprintf(“%f”,-x)

B)if(x>O)

{x=x+y;printf(“%f”,x);}

elseprintf(“%f”,-x);

C)if(x>O)

{x=x+y;print{(“%f”,x);};

elseprintf(“%f”,-x);

D)if(x>0)

{x=x+y;printf(“%f”,x)}

elseprintf(“%f”,-x);

[题4.19]请阅读以下程序:

Main()

{inta=5,b=0,c=0;

if(a=b+c)printf(“***\n”);

elseprintf(“$$$\n”);

以上程序___。

A)有语法错不能通过编译B)可以通过编译但不能通过连接

C)输出***D)输出$$$

[题4.20]以下程序的运行结果是___。

main()

{intm=5;

if(m++>5)printf(“%d\n”,m);

elseprintf{(“%d\n”,m--);

}

A)4B)5C)6D)7

[题4.21]当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是

if(a

if(c

e1se

if(a

if(b

e1sex=3;

elsex=6;

elsex=7;

A)1B)2C)3D)6

[题4.23]以下程序的输出结果是____.

Main()

{inta=100,x=10,y=20,ok1=5,ok2=0;

if(x

if(y!

=10)

if(!

ok1)

a=1;

else

if(ok2)a=10;

a=-1;

phintf(“%d\n”,a);

}

A)1B)0C)-1D)值不确定

[题4.25]为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:

else子句总是与___配对。

A)缩排位置相同的ifB)与之最近的if

C)其之后最近的ifD)同一行上的if

[题4.26]以下不正确的语句为___。

A)if(x>y);

B)if(x=y)&&(x!

=0)x+=y;

C)if(x!

=y)scanf(%d”,&x);elsescanf(“%d”,&y);

D)if(x

[题4.28]若有条件表达式(exp)?

a++:

b--,则以下表达式中能完全等价于表达式(exp)的是____.

A)(exp==0)B)(exp!

=0)

C)(exp==1)D)(exp!

=1)

[题4.29]若运行时给变量x输入12,则以下程序的运行结果是____.

main()

{intx,y;

scanf(“%d”,&x);

y=x>12?

x+10:

x-12;

printf(“%d\n”,y);

A)0B)22C)12D)10

[题4.30]以下程序的运行结果是____.

Main()

{intk=4,a=3,b=2,c=1;

printf(“\n%d\n”,k

k:

c

c:

a);

}

A)4B)3C)2D)1

[题4.32]若w、x、y、z、m均为int型变量,则执行下面语句后的m值是___.

w=1;x=2;y=3;z=4;

m=(w

w:

x;

m=(m

m:

y;

m=(m

m:

z;

A)1B)2C)3D)4

[题4,34]执行以下程序段后的输出结果是___.

intw=3,z=7,x=10;

printf(“%d\n”,x>10?

x+100:

x-10);

printf(“%d\n”,w++||z++);

printf(“%d\n”,!

w>z);

printf(“%d\n”,w&&z);

A)0B)1C)0D)0

1111

1100

1110

4.2填空题

[题4.37]以下程序的运行结果是5251.

#include

voidmain(void)

{intx=1,y,z;

x*=3+2;

printf(“%d\t”,x);

x*=y=z=5;

printf(“%d\t”,x);

x=y==z;

printf(“%d\n”,x);

}

[题4.38]在C语言中,表示逻辑”真”值用[]。

非0数字

[题4.39]设y为int型变量,请写出描述”y是奇数”的表达式[]。

(y%2==1)

[题4.40]c语言提供的三种逻辑运算符是[1]、[2]、[3]。

&&||!

[题4.41]设x,y,z均为int型变量,请写出描述”x或y中有一个小于z”的表达式[]。

x

[题4.42]设x,y,z均为int型变量,请写出描述”x,y和z中有两个为负数”的表达式[].

(x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0)

[题4.50]条件”2

(x>2&&x<3)||(x<-10)

[题4.55]有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为【1】。

(1)

[题4.61]若运行时输入:

16<回车>,则以下程序的运行结果是___.

#include

voidmain(void)

{

intyear;

printf(“Inputyouryear:

”);

scanf(“%d”,&year);

if(year>=18)

printf(“you$4.5yuan/xiaoshi”);

else

printf(“you$3.0yuan/xiaoshi”);

}

输出结果:

you$3.0yuan/xiaoshi

[题4.65]请阅读以下程序:

main()

{intt,h,m;

scanf(“%d”,&t);

h=(t/100)%12;

if(h==0)h=12;

printf(“%d:

”,h);

m=t%100;

if(m<10)printf(“0”);

printf(“%d”,m);

if(t<1200||t==2400)

printf(“AM”);

elseprintf(“PM”);

}

若运行时输入:

1605<回车>时,程序的运行结果是4:

05PM.

[题4.66]以下程序实现:

输入圆的半径r和运算标志m,按照运算标志进行指定计算。

请在[]内填入正确内容。

标志运算

a面积

b周长

c二者均计算

#definepi3.14159

main()

{charm;

floatr,c,a;

printf(“inputmarkacorb&&r\n”);

scanf(“%c%f”,&m,&r);

if([1])(m==’a’)

{a=pi*r*r;printf(“areais%f”,a);}

if([2])(m==’b’)

{a=2*pi*r;printf(“circleis%f”,a);}

if([3])(m==’c’)

{a=pi*r*r;c=2*pi*r;printf(“area&&circleare%f%f”,a,c);}

[题4.67]若运行时输入:

5999<回车>,则以下程序的运行结果(保留小数点后一位)是___.(3635.4)

main()

{

intx;

floaty;

scanf(“%d”,&x);

if(x>=0&&x<=2999)y=18+0.12*x;

if(x>=3000&&x<=5999)y=36+0.6*x;

if(x>=6000&&x<=10000)y=54+0.3*x;

printf(“%6.1f”,y);

}

[题4.68]以下程序实现输出x,y,z三个数中的最大者。

请在[]内填入正确内容。

main()

{intx=4,y=6,z=7;

int[1];(u,v)

if([2])u=x;(x>y)

elseu=y;

if([3])v=u;(u>z)

elsev=z;

printf(“v=%d”,v);

}

[题4.71]以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。

如‘a’变成’f’,’w’变成’b’.请在[]内填入正确内容。

#include“stdio.h”

main()

{charc;

c=gerchar();

if(c>=’a’&&c<=’u’)[1];(c=c+5)

elseif(c>=’v’&&c<=’z’)[2];(c=c-21)

putchar(c);

}

[题4.72]输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。

请在[]内填入正确内容

main()

{charch;

scanf(“%c”,&ch);

if([1])ch=ch+32;(ch>=’A’&&ch<=’Z’)

elseif(ch>=’a’&&ch<=’z’)[2];(ch=ch-32)

printf(“%c”,ch);

[题4.73]以下程序的运行结果是

main()

{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);

}(200)

[题4.74]以下程序的运行结果是___.

mian()

{inta,b,c,d,x;

a=c=0;

b=1;

d=20;

if(a)d=d-10;

elseif(!

b)

if(!

c)x=15;

elsex=25;

printf(“%d\n”,d);

}

20

[题4.76]以下程序的运行结果是____.

#include

voidmain(void)

{intx,y=-2,z=0;

if((z=y)<0)x=4;

elseif(y==0)x=5;

elsex=6;

printf(“\t%d\t%d\n”,x,z);(4-2)

if(z=(y==0))

x=5;

x=4;

printf(“\t%d\t%d\n”,x,z);(40)

if(x=z=y)x=4;

printf(“\t%d\t%d\n”,x,z);(4-2)

}

[题4.77]

main()

{ints,t,a,b;

scanf(“%d,%d”,&a,&b);

s=1;

t=1;

if(a>0)s=s+1;

if(a>b)t=s+t;

elseif(a==b)t=5;

elset=2*s;

printf(“s=%d,t=%d”,s,t);

}

为了使输出结果t=4,输入量a和b应满足的条件是【】。

(0

[题4.79]下面程序根据以下函数关系,对输入的每个x值,计算出y值。

请在【】内填入正确内容。

x

y

2

x(x+2)

一1

2x

x<=-1

x-l

main()

{intx,y;

scanf(“%d”,&x);

if(【1】)y=x*(x+2);

elseif(【2】)y=2*x;

elseif(x<=-1)y=x-1;

else【3】;

if(y!

=-1)printf(“%d”,y);

elseprintf(“error”);

}

[1]x>2&&x<10[2]x>-1&&x<=2[3]y=-1

[题4.82]以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。

请在[]内填入正确内容.

#include“math.h”

{floata,b,c;

floats,area;

scanf(“%f%f%f”,&a,&b,&c);

if([1])(a+b>c&&b+c>a&&a+c>b)

{s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“%f”,area);

if([2])(a==b&&b==c)

printf(“等边三角形”);

elseif([3])(a==b||b==c||c==a)

printf(“等腰三角形”);

elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))

printf(“直角三角形”);

elseprintf(“一般三角形”);

}

elseprintf(“不能组成三角形”);

}

[题4.88]以下程序的运行结果是____.

main()

{inta=2,b=3,c;

c=a;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

printf(“%d\n”,c);

}

-1

[题4.91]设有变量定义:

inta=10,c=9;

则表达式(--a!

=c++)?

—a:

++c的值是[]。

11

[题4.92]若有说明语句:

intx=1,y=0;则表达式x>(y+x)?

10:

12.5>y++?

’a’:

’A’的值是[]。

97或’a’

[题4.99]若运行时输入:

-2<回车>,则以下程序的输出结果是____.

main()

{

inta,b;

scanf(“%d”,&a);

b=(a>=0)?

a:

-a;

printf(“b=%d”,b);

}

b=2

[题4.101]如果运行时输入字符’Q’,则以下程序的运行结果是____.

main()

{charch;

scanf(“%c”,&ch);

ch=(ch>=’A’&&ch<=’Z’)?

(ch+32):

ch;

ch=(ch>=’a’&&ch<=’z’)?

(ch-32):

ch;

printf(“%c”,ch);

}

Q

[题4.102]若运行时输入:

1992<回车>,则以下程序的运行结果是____.

main()

{inty,t;

scanf(“%d”,&y);

t=((y%4==0&&y%100!

=0)||y%400==0)?

1:

0;

if(t)printf(“%dis”,y);

elseprintf(“%disnot”,y);

printf(“aleapyear”);

}

1992isaleapyear

[题4.108]若运行时输入:

35/<回车>,则以下程序的运行结果是___.

main()

{floatx,y;

charo;

doubler;

scanf(“%f%f%c”,&x,&y,&o);

switch(o)

{case‘+’:

r=x+y;break;

case‘-’:

r=x-y;break;

case‘*’:

r=x*y;break;

case‘/’:

r=x/y;break;

}

printf(“%f”,r);

}0.600000

[题4.109]根据以下嵌套的语句所给条件,填写switch语句,使它完成相同的功能。

(假设mark的取值在1~100之间。

if语句:

if(mark<60)k=1;

elseif(mark<70)k=2;

elseif(mark<80)k=3;

elseif(mark<90)k=4;

elseif(mark<100)k=5;

switch语句:

switch([1])

{[2]k=1;break;

case6:

k=2;break;

case7:

k=3;break;

case8:

k=4;break;

[3]k=5;

}

[1]mark/10

[2]case0:

case1:

case2:

case3:

case4:

case5:

[3]case9:

case10:

 

[题4.115]假设奖金税率如下(a代表奖金,r代表税率)

a<500r=0%

500

1000<=a<2000r=8%

2000<=a<3000r=10%

3000<=ar=15%

以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金税后)。

题中r代表税率,t代表税款,b代表实得奖金数。

请在[]内填入

正确内容。

main()

{floata,r,t,b;

intc;

scanf(“%f”,&a);

if(a>=3000)c=6;

elsec=[1];

switch(c)

{case0:

r=0;break;

case1:

r=0.05;break;

case2:

case3:

[2];break;

case4:

case5:

r=0.1;break;

case6:

r=0.15;break;

}

t=a*r;

b=a-t;

printf(“r=%f,t=%f,b=%f”,r,t,b);

}

[1]a/500[2]r=0.08

[题4.117]以下程序计算某年某月有几天。

其中判别闰年的条件是:

能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。

请在[]内填入正确内容。

main()

{

intyy,mm,len;

printf(“year,month=”);

scanf(“%d%d”,&yy,&mm);

switch(mm)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

[1];break;

case4:

case6:

case9:

case11:

len=30;break;

case2:

if(yy%4==0&&yy%100!

=0||yy%400==0)[2];

else[3];

break;

default:

printf(“inputerror”);

break;

}

printf(“thelengthof%d%dis%d\n”,yy,mm,len);

}

[1]len=31[2]len=29[3]len=28

4.3编程题

[题4.119]编制程序要求输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。

[题4.120]试编程判断输入的正整数是否既是5又是7的整倍数。

若是,则输出yes;否则输出no。

[题4.121]请编程序:

根据以下函数关系,对输入的每个x值,计算出相应的y值。

┌──────┬────────┐

│X│y│

├──────┼────────┤

│x

├──────┼────────┤

│0

├──────┼────────┤

│10

├──────┼────────┤

│20

└──────┴────────┘

[题4.123]将以下程序段改用非嵌套的if语句实现。

ints,t,m;

t=(int)(s/10);

switch(t)

{case10:

m=5;break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1