第4章 选择结构程序习题解答.docx
《第4章 选择结构程序习题解答.docx》由会员分享,可在线阅读,更多相关《第4章 选择结构程序习题解答.docx(20页珍藏版)》请在冰豆网上搜索。
![第4章 选择结构程序习题解答.docx](https://file1.bdocx.com/fileroot1/2022-12/7/1cff9292-79f8-4813-a42e-d5b5b24fd045/1cff9292-79f8-4813-a42e-d5b5b24fd0451.gif)
第4章选择结构程序习题解答
第4章选择结构程序设计习题解答
1.设x、t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,t的值为0。
2.假定所有变量均已正确定义,则程序段:
inta=0,y=10;
if(a=0)//条件式为0
y--;
elseif(a>0)
y++;
else
y+=y;
运行后y的值是20。
3.能表述2020&&x<30||x<-100。
4.若有定义语句“inta=25,b=14,c=19;”,则以下语句执行结果是***a=25,b=14,c=19***。
if(a<=25&&b<=2&&c)
printf("***a+b=%d,a-b=%d***\n",a+b,a-b);
else
printf("***a=%d,b=%d,c=%d***\n",a,b,c);
5.假定i和j为int型变量,则执行以下语句后i的值是37。
#include
voidmain()
{
inti=1,j;
switch(i)
{
case1:
for(j=0;j<9;j++)
i+=j;
break;
case2:
for(j=1;j<10;j++)
i+=j;
break;
case3:
i++;
}
}
6.以下两条if语句:
可合并成一条if语句,即。
if(a<=b)
x=1;
else
y=2;
if(a>b)
printf("***y=%d\n",y);
else
printf("***x=%d\n",x);
可合并成一条if语句,即:
if(a<=b)
{
x=1;
printf("***x=%d\n",x);
}
else
{
y=2;
printf("***y=%d\n",y);
}
7.输入两个字符,若这两个字符的序号(ASCII码)之差为偶数,则输出它们的后继字符,否则输出它们的前驱字符。
#include
voidmain()
{
chara,b;
intc;
printf("Inputtwochar:
");
scanf("%c%c",&a,&b);
c=a-b;
if(c%2==0||(-c)%2==0)
printf("%c%c\n",a+1,b+1);
else
printf("%c%c\n",a-1,b-1);
}
8.输入整数a和b,如果a能被b整除,就输出版式和和商,否则输出算式、整数商和余数。
#include
voidmain()
{
inta,b;
printf("Inputtwoint_numbers:
");
scanf("%d%d",&a,&b);
if(a%b==0)
printf("%d/%d=%d\n",a,b,a/b);
else
printf("%d/%d=%d****%d\n",a,b,a/b,a%b);
}
9.输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内,圆外还是在圆周上,其中圆心坐标为(2,2),半径为1。
#include
#include
voidmain()
{
floatx,y;
doublez;
printf("Inputtwoint_numbers(pointA):
");
scanf("%f,%f",&x,&y);
z=sqrt((x-2)*(x-2)+(y-2)*(y-2));
if(z<1)
printf("PointAinthecircular.\n");
elseif(z==1)
printf("PointAatthecircular.\n");
else
printf("PointAwithoutthecircular.\n");
}
10.输入年号和月份,输出这一年该月的天数(一个年份,先判断是否闰年)。
#include
voidmain()
{
inty,m;
intleap_year;
printf("Inputyearandmonth");
scanf("%d%d",&y,&m);
if(y%4==0&&y%100!
=0||y%400==0)
leap_year=1;
else
leap_year=0;
switch(m)
{
case1:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case2:
if(leap_year)
printf("Year%dMonth%dDay:
%d\n",y,m,29);
else
printf("Year%dMonth%dDay:
%d\n",y,m,28);
break;
case3:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case4:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case5:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case6:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case7:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case8:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case9:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case10:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case11:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case12:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
}
}
11.请将以下语句改写成switch语句(a>0)。
if(a<30)m=1;
elseif(a<40)m=2;
elseif(a<50)m=3;
elseif(a<60)m=4;
elsem=5;
#include
voidmain()
{
inta,m;
scanf("%d",&a);
switch(a/10)
{
case5:
m=4;break;//a<60
case4:
m=3;break;//a<50
case3:
m=2;break;//a<40
case2:
case1:
case0:
m=1;break;//a<30
default:
m=5;//a>=60
}
printf("%d\n",m);
}
12.有一函数:
编写一程序,要求输入x的值,输出y的值。
分别用不嵌套的if语句,嵌套的if语句,switch语句编写。
注:
为了方便用switch语句的编写,假设x,y均为整型变量。
#include
intf1(intx)
{
inty;
if(x>-5&&x<0)
y=x-1;
else
{
if(x==0)
y=0;
if(x>0&&x<8)
y=x+1;
}
returny;
}
intf2(intx)
{
inty;
if(x>-5&&x<0)
y=x-1;
elseif(x==0)
y=0;
elseif(x>0&&x<8)
y=x+1;
returny;
}
intf3(intx)
{
inty;
switch(x%13)
{
case7:
case6:
case5:
case4:
case3:
case2:
case1:
y=x+1;
break;
case0:
y=0;
break;
case-1:
case-2:
case-3:
case-4:
y=x-1;
}
returny;
}
voidmain()
{
intx;
printf("Inputanumberin(-5,8):
");
scanf("%d",&x);
printf("%d\n",f1(x));
printf("%d\n",f2(x));
printf("%d\n",f3(x));
}
实验4选择结构程序设计
6.程序填空。
⑴本程序用来输入4个整数,按大小顺序输出。
#include
intmain()
{
inta,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a
if(aif(aif(bif(bif(cprintf("%d%d%d%d\n",a,b,c,d);
return0;
}
⑵将字母换成小写。
#include
intmain()
{
charc;
scanf("%c",&c);
if(c>='A'&&c<='Z')
c=c+32;
printf("%c\n",c);
return0;
}
7.编程。
⑴
编程求x=0.5、5、50时的y的值。
#include
intmain()
{
doublex,y;
printf("Inputx:
");
scanf("%lf",&x);
if(x<1)
y=x;
elseif(x<10)
y=3-x/5.0;
elseif(x>10)
y=3*x-11;
printf("y=%f\n",y);
return0;
}
Inputx:
0.5
y=0.500000
Inputx:
5
y=2.000000
Inputx:
50
y=139.000000
⑵给一个不多于3位的正整数。
①求出它是几位。
②分别打印出每一位数字。
③按反序打印出每位数字。
#include
intmain()
{
intn,i=0;
printf("Inputaintegern:
");
scanf("%d",&n);
do
{
printf("%d",n%10);
n/=10;
i++;
}while(n);
putchar('\n');
printf("nis%ddigits\n",i);
return0;
}
⑶与日历有关的的问题。
①输入年、月,求该月的天数。
注:
本章习题10。
#include
voidmain()
{
inty,m;
intleap_year;
printf("Inputyearandmonth");
scanf("%d%d",&y,&m);
if(y%4==0&&y%100!
=0||y%400==0)
leap_year=1;
else
leap_year=0;
switch(m)
{
case1:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case2:
if(leap_year)
printf("Year%dMonth%dDay:
%d\n",y,m,29);
else
printf("Year%dMonth%dDay:
%d\n",y,m,28);
break;
case3:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case4:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case5:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case6:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case7:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case8:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case9:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case10:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
break;
case11:
printf("Year%dMonth%dDay:
%d\n",y,m,30);
break;
case12:
printf("Year%dMonth%dDay:
%d\n",y,m,31);
}
}
②给出年、月、日,计算出该日是该年的第几天。
#include
voidmain()
{
inty,m,d;
intleap_year;
printf("Inputyear、monthandday");
scanf("%d%d%d",&y,&m,&d);
if(y%4==0&&y%100!
=0||y%400==0)
leap_year=1;
else
leap_year=0;
switch(m)
{
case1:
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
break;
case2:
printf("Year%dMonth%dDay%d:
is%d\n",y,m,31+d);
break;
case3:
if(leap_year)
{
d=31+29+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case4:
if(leap_year)
{
d=31+29+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case5:
if(leap_year)
{
d=31+29+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case6:
if(leap_year)
{
d=31+29+31+30+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case7:
if(leap_year)
{
d=31+29+31+30+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case8:
if(leap_year)
{
d=31+29+31+30+31+30+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+30+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case9:
if(leap_year)
{
d=31+29+31+30+31+30+31+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+30+31+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case10:
if(leap_year)
{
d=31+29+31+30+31+30+31+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+30+31+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case11:
if(leap_year)
{
d=31+29+31+30+31+30+31+31+30+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+30+31+31+30+31+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
case12:
if(leap_year)
{
d=31+29+31+30+31+30+31+31+30+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
else
{
d=31+28+31+30+31+30+31+31+30+31+30+d;
printf("Year%dMonth%dDay%d:
is%d\n",y,m,d,d);
}
break;
}
}
③1900年元旦是星期一,问1900年7月1日是星期几。
#include
voidmain()
{
inty,m,d;
intleap_year;
y=1900;m=7;d=1;
if(y%4==0&&y%100!
=0||y%400==0)
leap_year=1;
else
leap_year=0;
if(leap_year)
d=31+29+31+30+31+30+d;
else
d=31+28+31+30+31+30+d;
d%=7;
if(d==0)
printf("1900-7-1:
Sunday\n");
else
printf("1900-7-1:
week%d\n",d);
}
⑷输入3个实数,编程判断能否以它们为边长构成三角形,若能再说明是何种三角形(等边三角形、等腰三角形、直角三角形或一般三角形)。
#include
#include//为了引用函数要sqrt()
main()
{
floata,b,c;
printf("pleaseentera,b,c:
");
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
if(a==b&&a==c&&b==c)
printf("Thetriangleisaequilateraltriangle.\n");
elseif(a==b||a==c||b==c)
printf("Thetriangleisaisocelestriangle.\n");
elseif(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
printf("Thetriangleisaright-angledtriangle.\n");
else
printf("Thetriangleisacommontriangle