第三次课程:常用算法与上机注意事项 在实际的考试中,笔试中的补充代码与上机中的改错、编程是学生普遍感到畏惧的,也是历年得分率很低的,在此,给大家说明一下关于这方面解答题目的思路: 一:要想取得好成绩,第一要搞清楚题目意思,不能乱猜 例题:(2007年春填空第7题) 下面程序功能是:将文本框中用逗号分割的数据(文本框中必须要有数据),分别赋值给二维数组B的各个元素,并将B数组各个元素分行显示在文本框中,程序界面参见下图
private sub Command1_click() dim b(3,3) as single, I as integer, Pos1 as integer dim Pos2 as Integer, S as string, J as integer S=text1 if S=”” then Text1=”请输入数据” ___________________ end if For I=1 to 3 For j=1 to 3 Pos1=_____________________ pos2=Instr(Pos1,S,”,”) If _____________________then B(I,J)=Val(Mid(S, Pos1, Pos2-Pos1)) Else B(I,J)=Val(Mid(S,Pos1)) End If Text2=Text2 & Str(B(I,J)) Next J ______________________ Next i End Sub 分析:拿到题目后,要分步骤,首先根据题目找出题目中的关键字眼 (1)逗号分割的数据 (2)文本框中必须要有数据 (3)赋值给二维数组B (4) 各个元素分行显示 根据关键字眼找代码中的实现部分 文本框中必须要有数据实现代码: if S=”” then Text1=”请输入数据” ___________________ end if 逗号分割的数据:实现代码 pos2=Instr(Pos1,S,”,”) 赋值给二维数组实现代码 If _____________________then B(I,J)=Val(Mid(S, Pos1, Pos2-Pos1)) Else B(I,J)=Val(Mid(S,Pos1)) End If 各个元素分行显示实现代码: Next J ______________________ Next i
(二)一是加深对For循环程序的理解,每一个题目都涉及到了for循环的使用,始终要记住,每一个题目都是有规律可寻的 (1)务必熟悉For循环执行流程(请查书,此处不多说) (2)循环体中循环变量的改变影响循环次数,而初值、终值和步长的改变不会影响循环次数
(三)常见算法: (1)穷举法: 基本思想:不重复,不遗漏的列举出所有可能的情况,从中寻找满足条件的结果 适合用穷举法来解决的问题应具有下面两个特点: 1有明显的穷举范围且穷举的数目应该是有限的 2可能按某种规则列举穷举对象 例题: <2004—2007年历年真题>P168页编程题目 (2)素数问题: 素数是指只能被自己与1整除的数,最小的素数是2 例题: <2004—2007年历年真题>P169页改错题目 (3)整数拆分: 整数拆分就是将一个整数的个位、十位、百分位一一分离出来 例题:<2004—2007年历年真题>P172页改错题目 (4)交换 将两个变量的值互相交换,交换时一般采用中间变量的方法: 例题:<2004—2007年历年真题>P173页编程题目 (5)最大公约数 欧几里得算法:辗转相除法(详细可参考书) 例题:<2004—2007年历年真题>P174页编程题目 (6)进制转换 十进制转换为二进制:除二取余,直到商是0为止,再反转 十进制转换为八进制:除八取余,直到商是0为止,再反转 十进制转换为十六进制:与取二、八进制是一样的,所不同的是会遇到大于等于10的余数,需要转化成字母: 10-A 11->B 12->C 13->D 14->E 15->F 二进制转换成十进制:按位权展开,展开时乘以2的次幂即可,如:(10101)=1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=21 八、十六进制转换成十进制:按位权展开,展开时乘以8、16的次幂即可 例题:<2004—2007年历年真题>P147页编程题目 (7)递归调用: 详细见书说明 (8)迭代算法 特点:(1)问题中由一个不断由旧数值推出新值的过程 (2)迭代过程有终止的条件 例题:2007年春笔试试题填空第六题 (9)冒泡法排序(详细见书) 特点:(1)首先进行第一趟冒泡,从数组的第一个元素开始,每一个元素都与它的下一个元素进行比较,如果小于等于下一个元素则位置不变,否则交换两个位置,这样最大的元素肯定就到了最后一个位置 (2)然后进行第二趟冒泡,从数组的第一个元素开始,到n-1个元素结束,循环继续上述过程完成冒泡过程 (10)累加与累乘 特点:重复的在一个变量上做相加或相乘运算 do while true sum=sum+1 loop (11)最大最小值问题 特点:通过比较,确定最大或最小值 dim a(10) as integer max=a(1) for i=2 to 10 if a(i)>max then max=a(i) next (12)矩阵问题 例题:2007年春填空第八题 特点:利用二维数组来解决 上机考试注意事项 上机考试最忌讳紧张,应该沉着。一般首先应该把第1道改错题的代码按原样输入进去,输入时要细心,不要自己制造新错误。输人完毕应先按文件名要求保存;再试着运行看看系统提示什么错误,不要先急于运行,以免遇到死循环的诗崭。一旦出现死循环可能会前功尽弃,可以用Ctrl++[Break】键退出死循环。如果死循环后采用重新启动vb的做法,这样先前还没有保存的文件就丢失了。最后根据报错或试运行结果来判断出错原因,进行修改。记住:发现有实在改不出来的错误,可先搁一搁,接着去做编程题目,,等做完编程题的基本部分后,再回过来改错上机考试的试题及评分标准 上机题总分占40分,其中改错题占14分,编程题占26分。 (1)改错题:题目中都是设3个错误点(在历年上机考题中也出现过只有2个错误点的试题),一般分别是语法错误(如数组的声明、重复定义等略有难度的语法错误)、运行锚误、逻辑错误等,这些错误基本上都是平时编程时比较容易犯的错误,错误点不重复。 评分标准:录入原题:2分。改错:4分/个。根据改错点给分,新错误不扣分。 (2)编程题:按照题目要求的功能,根据参考界面编程,程序中都涉及一定难度的算法。 评分标准:界面设计:根据界面元素的复杂程度,给5~8分,每个元素得一定的分数。“清除”按钮:2分。“退出”按钮:1分。含算法的按钮:根据代码多少按步骤给分。编程时注意:首先应该进行变量的说明,然后按输入_处理一输出的顺序来设计程序的逻辑结构。写程序时一定要记住采用规范的书写方法,这样既不容易出错,又能轻松地拿到基本分。即根据逻辑关系采用缩进的形式来写,注意层次感,让人一看一目了然。需要用到程序控制结构时,先把前后配套的代码(如For I=…Next I,If…Then…End If)写出来,然后再在其中添加其他代码。 从历年的考试情况看,Visual Basic的上机部分虽然只考两道题,试题类型和知识点也基本固定,但并不容易拿分,很多同学只能拿到基本分。建议考前多做针对性训练,熟练掌握以往上机考试题中涉及的各类算法题目。第1题争取能改对2个错误,第2题除设计出程序界面、清除及退出(或结束)按钮外,争取把含算法按钮的基本代码(如变量的定义、基本算法结构、基本输入/输出语句等)写出来,这样就可以拿到25分以上了,上机考试成绩也就一定合格啦!
|