第四章C程序设计习题Word下载.docx
《第四章C程序设计习题Word下载.docx》由会员分享,可在线阅读,更多相关《第四章C程序设计习题Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
(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<
y){x++;
y++;
[题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>
{x=x+y;
printf(“%f”,x);
elseprintf(“%f”,-x);
C)if(x>
{x=x+y;
print{(“%f”,x);
};
D)if(x>
0)
{x=x+y;
printf(“%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]以下程序的运行结果是___。
{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<
b)
if(c<
d)x=1;
e1se
if(a<
c)
if(b<
d)x=2;
e1sex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
[题4.23]以下程序的输出结果是____.
{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>
B)if(x=y)&
(x!
=0)x+=y;
C)if(x!
=y)scanf(%d”,&
x);
elsescanf(“%d”,&
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,则以下程序的运行结果是____.
{intx,y;
scanf(“%d”,&
y=x>
12?
x+10:
x-12;
printf(“%d\n”,y);
A)0B)22C)12D)10
[题4.30]以下程序的运行结果是____.
{intk=4,a=3,b=2,c=1;
printf(“\n%d\n”,k<
a?
k:
c<
b?
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<
x)?
w:
x;
m=(m<
y)?
m:
y;
z)?
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>
printf(“%d\n”,w&
A)0B)1C)0D)0
1111
1100
1110
4.2填空题
[题4.37]以下程序的运行结果是5251.
#include<
stdio.h>
voidmain(void)
{intx=1,y,z;
x*=3+2;
printf(“%d\t”,x);
x*=y=z=5;
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<
z||y<
z
[题4.42]设x,y,z均为int型变量,请写出描述”x,y和z中有两个为负数”的表达式[].
0&
y<
0)||(x<
z<
0)||(y<
[题4.50]条件”2<
3或x<
-10”的C语言表达式是[]。
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<
stdio.h>
{
intyear;
printf(“Inputyouryear:
”);
scanf(“%d”,&
year);
if(year>
=18)
printf(“you$4.5yuan/xiaoshi”);
printf(“you$3.0yuan/xiaoshi”);
输出结果:
you$3.0yuan/xiaoshi
[题4.65]请阅读以下程序:
{intt,h,m;
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
{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’)
c=2*pi*r;
printf(“area&
circleare%f%f”,a,c);
[题4.67]若运行时输入:
5999<
则以下程序的运行结果(保留小数点后一位)是___.(3635.4)
intx;
floaty;
x);
if(x>
=0&
=2999)y=18+0.12*x;
=3000&
=5999)y=36+0.6*x;
=6000&
=10000)y=54+0.3*x;
printf(“%6.1f”,y);
[题4.68]以下程序实现输出x,y,z三个数中的最大者。
{intx=4,y=6,z=7;
int[1];
(u,v)
if([2])u=x;
elseu=y;
if([3])v=u;
(u>
z)
elsev=z;
printf(“v=%d”,v);
[题4.71]以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。
如‘a’变成’f’,’w’变成’b’.请在[]内填入正确内容。
#include“stdio.h”
{charc;
c=gerchar();
if(c>
=’a’&
=’u’)[1];
(c=c+5)
elseif(c>
=’v’&
=’z’)[2];
(c=c-21)
putchar(c);
[题4.72]输入一个字符,如果它是一个大写字母,则把它变成小写字母;
如果它是一个小写字母,则把它变成大写字母;
其它字符不变。
请在[]内填入正确内容
{charch;
scanf(“%c”,&
ch);
if([1])ch=ch+32;
(ch>
=’A’&
=’Z’)
elseif(ch>
ch<
(ch=ch-32)
printf(“%c”,ch);
[题4.73]以下程序的运行结果是
{inta,b,C;
ints,w,t;
s=w=t=0;
b=3;
c=3;
0)s=a+b;
{if(b>
if(c<
=0)w=a-b;
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(!
c)x=15;
elsex=25;
printf(“%d\n”,d);
20
[题4.76]以下程序的运行结果是____.
{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;
(40)
if(x=z=y)x=4;
(4-2)
[题4.77]
{ints,t,a,b;
scanf(“%d,%d”,&
a,&
b);
s=1;
t=1;
if(a>
0)s=s+1;
b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf(“s=%d,t=%d”,s,t);
为了使输出结果t=4,输入量a和b应满足的条件是【】。
(0<
a<
[题4.79]下面程序根据以下函数关系,对输入的每个x值,计算出y值。
请在【】内填入正确内容。
x
y
2<
=10
x(x+2)
一1<
=2
2x
=-1
x-l
{intx,y;
if(【1】)y=x*(x+2);
elseif(【2】)y=2*x;
elseif(x<
=-1)y=x-1;
else【3】;
=-1)printf(“%d”,y);
elseprintf(“error”);
[1]x>
10[2]x>
-1&
=2[3]y=-1
[题4.82]以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。
请在[]内填入正确内容.
#include“math.h”
{floata,b,c;
floats,area;
scanf(“%f%f%f”,&
b,&
c);
if([1])(a+b>
c&
b+c>
a&
a+c>
{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]以下程序的运行结果是____.
{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<
,则以下程序的输出结果是____.
inta,b;
a);
b=(a>
=0)?
a:
-a;
printf(“b=%d”,b);
b=2
[题4.101]如果运行时输入字符’Q’,则以下程序的运行结果是____.
scanf(“%c”,&
ch=(ch>
=’Z’)?
(ch+32):
ch;
=’z’)?
(ch-32):
printf(“%c”,ch);
Q
[题4.102]若运行时输入:
1992<
,则以下程序的运行结果是____.
{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/<
{floatx,y;
charo;
doubler;
scanf(“%f%f%c”,&
x,&
y,&
o);
switch(o)
{case‘+’:
r=x+y;
break;
case‘-’:
r=x-y;
case‘*’:
r=x*y;
case‘/’:
r=x/y;
printf(“%f”,r);
}0.600000
[题4.109]根据以下嵌套的语句所给条件,填写switch语句,使它完成相同的功能。
(假设mark的取值在1~100之间。
)
if语句:
if(mark<
60)k=1;
elseif(mark<
70)k=2;
80)k=3;
90)k=4;
100)k=5;
switch语句:
switch([1])
{[2]k=1;
case6:
k=2;
break;
case7:
k=3;
case8:
k=4;
[3]k=5;
[1]mark/10
[2]case0:
case1:
case2:
case3:
case4:
case5:
[3]case9:
case10:
[题4.115]假设奖金税率如下(a代表奖金,r代表税率)
500r=0%
500<
1000r=5%
1000<
=a<
2000r=8%
2000<
3000r=10%
3000<
=ar=15%
以下程序对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣除奖金税后)。
题中r代表税率,t代表税款,b代表实得奖金数。
请在[]内填入
正确内容。
{floata,r,t,b;
intc;
scanf(“%f”,&
=3000)c=6;
elsec=[1];
switch(c)
{case0:
r=0;
r=0.05;
case3:
[2];
case4:
case5:
r=0.1;
case6:
r=0.15;
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整除的年也是闰年。
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;
case2:
if(yy%4==0&
yy%100!
=0||yy%400==0)[2];
else[3];
break;
default:
printf(“inputerror”);
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<
O│0│
│0<
=10│X│
│10<
=20│10│
│20<
40│-0.5x+20│
└──────┴────────┘
[题4.123]将以下程序段改用非嵌套的if语句实现。
ints,t,m;
t=(int)(s/10);
switch(t)
{case10:
m=5;