巧用一维数组解决两个编程题目
2021-06-08刘大可
刘大可
【摘要】 对口高考,是相对于普通高考而言。对口高考,一般是由省教育厅统一命题考试;相对于普通高考,是由教育部统一命题考试(全国卷)。对口高考是从中等职业学校毕业生招生,强调中等职业学校毕业生对口升高职的专业技能考试,以专业技能成绩为主要录取依据的招生办法。对口高考是为了培养应用型高技能人才而推出的一种招生形式。对口高考探索了一种新型的中、高职相互衔接的人才培养模式,丰富了高等职业教育的内涵,也有力推动了中职教育的发展,受到了学校和社会的欢迎。
【关键词】 一维数组 循环语句 静态变量 技能水平 总结归类
引言:
对口高考招生考试是指专门面向中等职业学校选拔优秀学生进入高等院校深造的考试。对口高考分为文化课程、专业理论考试和专业技能考试,文化课程为语文、数学、英语,满分为400分,后两者满分均为300分,总计1000分。C语言编程题目在上述两个考试科目的分值为140分,所以,很有必要加强对学习方法的研究,如何提高学生的技能水平,获得较高的考试分数,笔者进行了有益的尝试。
一、对编程题目的思索
笔者长期执教中职学校对口单招班的微机专业编程类课程,深深感到课程本身内容较难,学生基础较差,如何提高学生的学习成绩,激发他们的学习积极性,努力提升学生的编程能力等等,这些问题一直萦绕在我的脑海里。书本的内容是简单的、枯燥的、抽象的,学生在学习过程中,似懂非懂,简单的例题会做,书后的习题不太会做,或者变一变花样,就不会做。
对于高二的学生,还是立足于书本,打好基础,而对于高三的学生,一味的题海战术,不总结,不归类,不温故而知新,是不行的。
笔者在近几年的教学中,找到以下两个编程题目,题目本身难度中等,但是恰巧均借助一维数组实现程序的顺利运行,这两个题目,涵盖的知识点较多,解决问题的途径类似,对同学们的综合编程能力的提升有较大帮助,因此,我将两个题目汇总起来,进行对比,下面我们具体分析这两个题目。
二、题目展示
例题一:
程序对形如“12%u&770_ 1、编写long abstract(char str[])函数,处理形如“12%u&770_ 2、编写int single(int n)函数,判断n是否是首次出现在字符串中的数字,如是,返回真,否则返回假。 例题二: 求优美数。在等式a+b=c(a 编写函数int fun(int yms[][3])函数求优美数,将求出的结果存入数组yms中,函数返回优美数的个数。其中yms[][0]存放a,yms[][]存放b,yms[][2]存放c。 三、分析代码、总结归类 针对于第一个例题,我们在abstract函数里面,定义两个变量,分别是i和s,i作为循环变量,s用来保存从字符串中提取出来的数字字符形成的一个整数。数字字符的提取比较简单,可以利用一个while(str[i]>='0' && str[i]<='9')来实现,问题是如何解决重复出现的数字字符只取一个?这个时候,我们考虑到可以借助一个一维数组,比如说是int a[10],将a[0]到a[9]的初始值均设置为0,10个元素中若有某个元素被访问过,则修改其值。具体的操作由single函数完成。如将str[i]-'0'的值做为函数参数,single(str[i]-'0')函数的返回值来判断其数字字符提取的次数。具体的函数内的代码如下: 对于第二个例题,求优美数。在等式a+b=c(a 我们知道,在之前的字符串专项训练中,从字符串当中提取的数字字符不止一个,且要求将结果保存在数组中,而本题的要求是提取的是一个数字。这就导致了我们在循环语句的选择上,一个倾向于用while循环语句,一个倾向于用for循环语句。 我们要注意到,对一维数组的元素的值的修改是在循环语句的内部,还是在被循环语句调用的函数的内部。如果是前者,一维数组的元素的值的若被修改,只要利用if语句进行判断即可得出结论;若是后者,必须使用静态变量加以定义数组,若不然,在函数被循环语句重复调用的时候,一维数组会被反复定义及初始化,那样的话,则达不到我们预期的目的。所以说,同样是一维数组的使用,一个是常规操作,另一个则需要增加static静态变量的支持。 可能有一些同学对在一维数组a[10]定义的时候,前面加的关键字static的功能比较困惑,不知道它的作用。这里,我们复习一下静态局部变量(static局部变量)的基本概念。函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值)。这时就应該指定该局部变量为“静态局部变量”,用关键字static进行声明。 四、结束语 至此,我们完成了上述两个编程题目的代码部分,回过头看再次审视这两个题目,都已经涵盖了对口单招需要掌握的所有章节,简单的重复刷题是没有任何意义的,只有在刷题的同时不断的总结,归类,分析,再总结,才能有事半功倍的效果,特别是在高三复习时间紧迫,课程难度加大,高考录取分数逐年提高的情况下,提高学习效率是唯一且正确的途径。