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%
5001000<=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;