高考数学教你当个程序员!这道题经老黄一改,能解决的人不会太多

数学有一类“程序题”,其实是程序员编程的基础。从初中数学就开始出现,甚至小学数学偶尔也能看到,而2022年高考数学理科全国乙卷的选择题中,就出现了这么一道程序题。如果您将来想成为一名程序员,那么这样的题目是一定得学会解决的。

执行右边的程序框图,输出的n=

A. 3; B. 4; C. 5; D. 6

高考数学教你当个程序员!这道题经老黄一改,能解决的人不会太多

字很少,关键是要读懂这个图。

首先,给a,b,n三个变量赋值:a=1, b=1, n=1;

然后进入循环节(一类线性程序),重新给b赋值:b=b+2a,不知道有没有哪位天才把它看作一个二元一次方程,解得a=0. 哈哈!那就好玩了。其实它是b=1+2×1=3的意思。从现在开始, b就不等于1,而是等于3了。

再继续给a和n重新赋值,a=b-a=3-1=2, n=n+1=2,对n赋值是一个“计时器”,就是每一次循环, n都会加1。

一个循环的最后是计算|b^2/a^2-2|的值,再与0.01比较大小。如果小于0.01,就输出n的值,否则就继续给b重新赋值,进入下一个循环。比如,第一个循环中,b=3, a=2,所以b^2/a^2=9/4, 减2等于0.25,绝对值明显大于0.01,因此就要进入下一个循环。需要注意的是,下一个循环起始三个变量的值分别是:a=2, b=3, n=2,而不是全等于1了。如果需要进入更多循环,a,b,n的赋值,也都是继承上一个循环最后的值的。

因此,这道题一般的做法是,逐个循环求值。通常只要进行两三次循环就可以求得结果。

循环1:b=b+2a=3, a=b-a=3-1=2, n=n+1=2, |b^2/a^2-2|=0.25>0.01;

循环2:b=b+2a=3+4=7, a=b-a=7-2=5, n=3, |b^2/a^2-2|=0.04>0.01;

循环3:b=b+2a=7+10=17, a=b-a=17-5=12, n=4, |b^2/a^2-2|=1/144<0.01;

因此输出n=4, 选B.

这道题要是把问题改成,一共进行了几个循环。估计出错的人就会特别多了。因为很多人会拿n=4做答案。其实只是进行了3次循环而已。

如果把b的初始赋值涂掉,说:程序员在编程时,不小心把墨水淋在程序设计图上,造成b的初始赋值看不清楚。假如已知b是自然数,输出的n=4,问,b的初始赋值是多少?你能解决吗?

事实上,这里面含有一个数列的概念,把a, b在每个循环中最后的赋值分别看作数列{an}和{bn}的一个项。

当a1=1, b1=?时,循环1:b2=b1+2a1=b1+2, a2=b2-a1=b1+1, n=n+1=2;

循环2:b3=b2+2a2=3b1+4, a3=b3-a2=2b1+3, n=3;

循环3:b4=b3+2a3=7b1+10, a4=b4-a3=5b1+7, n=4, 由|b4^2/a4^2-2|=|(7b1+10)^2/(5b1+7)^2-2|<0.01;

有-0.01<(7b1+10)^2/(5b1+7)^2-2<0.01;

1.99<(7b1+10)^2/(5b1+7)^2<2.01;

1.41<(7b1+10)/(5b1+7)<1.418;

7.05b1+9.87<7b1+10<7.09b1+9.92; 0.05b1<0.13, 0.09b1>0.08;

解得:0.9

瞧,经过老黄这么一改,再把数据调整一下,把它放到解答题中去,估计能完成的人不会很多。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章