高中数学第一章算法初步1.2基本算法语句教材习题点拨新人教B必修3创新
高中数学第一章算法初步 1.2 基本算法语句教材习题点拨新人
教B版必修3
练习A
本节的练习只要求写出计算程序或结果,有条件的同学可使用带有储存功能的计算器计算或在计算机上运算.
1.下列Scilab程序运行后,a,b,c各等于多少?
(1)a=3;b=-5;c=8;a=b;b=c;
print(%io(2),a,b,c);
(2)a=3;b=-5;c=8;a=b;b=c;c=a;
print(%io(2),a,b,c);
解:(1)c=8 b=8 a=-5
(2)c=-5 b=8 a=-5
2.已知函数f(x)=x3,求f(13).
解:x=13;
y=x*x*x;
print(%io(2),y);
3.写出求平行四边形面积公式的程序:
S=ah(a为一边的长,h为其上的高).
并写出每步程序语句的作用.
解:a=input(“along=”);//输入一边长
h=input(“high=”);//输入这边上的高
S=a*h;//把a*h的值赋给S
print(%io(2),S);//输出面积
4.任给三个正数,求它们的算术平均数,并写出每步程序语句的作用.
解:a=input(“a=”);//输入第一个正数
b=input(“b=”);//输入第二个正数
c=input(“c=”);//输入第三个正数
aver=(a+b+c)/3;//把表达式(a+b+c)/3的值赋值给变量aver
print(%io(2),aver);//输出aver的值
练习B
1.用公式法求方程x2-3x+2=0的两个根.
解:程序:a=1;b=-3;c=2;
d=b*b-4*a*c;
t =sqrt(d);
x1=(-b +t)/(2*a);
x2=(-b -t)/(2*a);
print(%io(2),x1,x2);
2.用公式法解方程组????? x +y =-13x -y =13.
解:a11=1;a12=1;a21=3;a22=-1;
b1=-1;b2=13;
D =a11*a22-a21*a12;
x1=(b1*a22-b2*a12)\D ;
x2=(b2*a11-b1*a21)\D ;
print(%io(2),x2,x1);
3.任给一个三角形的底和高,求这个三角形的面积.
解:h =input(“h=”);
a =input(“a=”);
S =12*a*h ;
print(%io(2),S);
4.任给两点的坐标,求这两点的距离.
解:x1=input(“x1=”);
y1=input(“y1=”);
x2=input(“x2=”);
y2=input(“y2=”);
a =(x1-x2) (x1-x2)+(y1-y2) (y1-y2);
h =sqrt(a);
print(%io(2),h);
练习A
1.任给一个实数,求它的绝对值.
解:a =input(“a=”);
if a >=0
x =a ;
else
x =-a ;
end
print(%io(2),x);
2.任意给三个数,求它们中的最大数.
解:a=input(“a=”);
b=input(“b=”);
c=input(“c=”);
if a>b
max=a;
else
max=b;
end
if c>max
max=c;
end
print(%io(2),max);
3.用生成随机数命令rand( )生成一些随机数,如果生成的数大于等于0.5,输出数1,否则输出数0.
解:x=rand();
if x>=0.5
v=1;
else v=0;
end
print(%io(2),x,v);
练习B
1.任给一个正数,求它的自然对数.
解:a=input(“a=”);
if a<=0
print(%io(2),“输入错误”);
else
y=log(a);
print(%io(2),y);
end
2.已知三个实数,求它们中的最小数.
解:a=input(“a=”);
b=input(“b=”);
c=input(“c=”);
if a<b
min=a;
else
min=b;
end
if c<min
min=c;
end
print(%io(2),min);
3.某商店对顾客购买货物款数满500元,减价3%,不足500元不予优惠.输入一顾客购物的款数,计算出这个顾客实交的货款.
解:m=input(“m=”);
if m>=500
m=m* 0.97;
end
print(%io(2),m);
4.已知函数
1,1
0,11
1,1
x
y x
x
<-
?
?
=-≤≤
?
?->
?
给出x的值,计算出y的值.
解:x=input(“x=”);if x<-1
y=1;
else
if x<=1
y=0;
else
y=1;
end
end
print(%io(2),y);
练习A
1.求1+2+3+…+10,并显示每次循环结果,并写出程序中每一步的作用.
解:S=0;//设定初值
for i=1:1:10 //设定i的初值,步长,终值
S=S+i //循环计算,并显示每次循环结果
end
S //显示最终结果
2.求小于100的所有正偶数的和.
解:S=0;
for i=2:2:98
S=S+i;
end
S
3.计算300×(1+0.05)8.
解:M=300;
for i=1:1:8
M=M*(1+0.05);
end
M
4.求0.1+0.2+0.3+…+0.9+1.
解:S=0;
for i=0.1:0.1:1.0
S=S+i;
end
S
练习B
1.求小于100的所有正奇数的和.求出一共进行了多少次循环,并显示前5次循环结果.
解:S=0;
j=0;
for i=1:2:99
S=S+i;
j=j+1;
if j<=5,S
end
end
disp(“number of cycles is”)
print(%io(2),S ,j);
2.求所有立方小于10 000的正整数.
解:j =1;
while j*j*j <10 000
print(%io(2),j);
j =j +1;
end
3.求1+12+13+…+19+110.
解:S =0;
for i =1:1:10
S =S +1/i ;
end
S
4.计算1+2+22+23+ (263)
解:S =0;
M =1;
for i =1:1:64
S =S +M ;
M =2*M ;
end
S
习题1-2A
1.任给三个变量a ,b ,c 赋值,求下列算式的值:
(1)a +b +c ;
(2)4a +b +3c ;
(3)b 2-4a c ;
(4)(a +b )÷c .
解:(1)a =input(“a=”);
b =input(“b=”);
c =input(“c=”);
s =a +b +c ;
print(%io(2),s);
(2)a=input(“a=”);
b=input(“b=”);
c=input(“c=”);
s=4*a+b+3*c;
print(%io(2),s);
(3)a=input(“a=”);
b=input(“b=”);
c=input(“c=”);
s=b*b-4*a*c;
print(%io(2),s);
(4)a=input(“a=”);
b=input(“b=”);
c=input(“c=”);
s=(a+b)/c;
print(%io(2),s);
2.任给一个自变量的值,求下列函数值:
(1)f(x)=3x4-5x3+1;
(2)f(x)=x5-x2.
解:(1)x=input(“x=”);
y=3*x*x*x*x-5* x* x* x+1;
print(%io(2),y);
(2)x=input(“x=”);
y=x*x*x*x*x-x*x;
print(%io(2),y);
3.已知圆半径为10.945,求圆的面积.解:r=10.945;
S=%pi*r*r;
print(%io(2),S);
点评:程序中用%pi表示π.
4.求所有平方后小于1 000的正整数.解:j=1;
while j* j<1 000
j,j=j+1;
end
5.已知m,n是两个正整数,求满足m+n<10的所有正整数对m,n.
解:for m=1:1:8
for n=1:1:8
if m+n<10
print(%io(2),m,n);
end
end
end
习题1-2B
1.任给一个圆锥的底面半径r和高h,求圆锥的体积V.
解:r=input(“r=”);
h=i nput(“h=”);
V=%pi*r*r*h/3;
print(%io(2),V);
(其中%pi表示π)
2.设个人月收入在5 000以内的所得税的档次为(单位:元):
0<x≤1 0000%
1 000<x≤3 000 10%
3 000<x≤5 000 25%
请您设计一算法,输入某人的月收入,计算他应交的个人收入所得税,并画出相应框图.解:x=input(“x=”);
if x>5 000,disp(“exceeding limit”)
else
if x>0 and x<=1 000
y=0;
else
if x<=3 000
y=x 0.1;
else
y=x 0.25;
end
end
end
print(%io(2),y);
3.求1-12+13-14+…+199-1100.
解:S =0;
for i =1:1:100 if mod(i,2)==1 S =S +1/i ; else
S =S -1/i ; end
end
print(%io(2),s);