1 C语言在高中数学学习中的意义 C 语言是计算机编程的入门语言, 它具有功能强大、语法简单等特点,特别适合初学者学习和使用
其运算符丰富、数据类型多样,可用于高中数学的辅助学习中,以提高学习效率、激发学习兴趣[1]. 相比于初中数学,高中数学的知识量剧增,题型变换大,数学描述语言更加抽象,解题思路也更加灵活多变,仅靠大量刷题是远远不够的
针对当下高中学生对信息技术兴趣浓厚的特点,考虑将 C 语言编程和高中数学学习结合起来, 以开拓学生思维,达到真正对高中数学的知识点融会贯通,从而积极应对高考的目的
C 语言有三种基本的控制结构[2]:顺 序结构 、选择结构和循环结构
适合于解高中数学中的多元考虑、重复计算等方面的问题
通过反复多次执行 C 语言程序,并观察其输出, 可以测试学生对具体问题是否考虑周全,是否有遗漏的情况,从而更有利于学生对相关知识的把握和理解
只有对一个知识点真正了然于心,才能写出容错性好的 C 语言程序,输出正确的结果
从这个角度来看,相当于借助 C 语言的思维,去思考高中数学问题,对于帮助学生归纳、总结、梳理相关知识点是大有裨益的
本文以 C 语言在解三角形问题及数列问题中的应用[3]为例,探讨了 C 语言在高中数学学习中的应用
通过 C 语言与高中数学学习相结合, 以训练学生思维的开放性、灵活性,考虑问题的严密性和逻辑性,并为未来的学习打下良好的基础
2 C语言在解三角形问题中的应用 三角形 ABC 的三个角A、B、C 和它们的对边 a,b,c称为三角形的元素[3],已知三角形的几个元素求其他元素的过程叫做解三角形
利用正弦定理解三角形是高考常见题型,一般有两种类型的问题:(1)已知两角及一边,求其余两边;(2)已知两边及其中一边的对角,求其余两角及对边
解此类问题的关键是分情况讨论,可能的结果有三种:无解、一个解、两个解
容易出错的地方就在于(1)用正弦定理求出的结果,不满足三角形的三角和为 180度的情况;(2)忽视钝角的情况;(3)求出某角的正弦值大于 1 的情况
该类问题可用 C 语言的选择结构来完成和求解, 通过计算机来帮助我们验证是否充分考虑了各种可能的情况
2.1 源程序代码 #include<stdio.h> #include<math.h> #define pi 3.1415926 void main() { float a,b,A; float B; char ch; printf(“\n\t1 继续 \n”); printf(“\t2 退出 \n”); ch=getchar(); while(ch=='1‘) { printf(“请输入三角形的边 a、b,角 A:”); scanf(“%f%f%f”,&a,&b,&A); if(b/a*sin(A/180*pi)>1) printf(“此三角形无解! \n”); else{ if(a<b) if(A>=90) printf(“此三角形无解! \n”); else { B=asin(b/a*sin(A/180*pi)); printf(“ 有 两个解 , 角 B =% .1f° 或 % .1f° \n”,B/pi*180,180-B/pi*180); } if(a>=b){ B=asin(b/a*sin(A/180*pi));printf(“有唯一解,角 B=为%.1f°\n”,B/pi*180); } } printf(“\n\t1 继续 \n”); printf(“\t2 退出 \n”); getchar(); ch=getchar(); } } 2.2 运行结果 以上程序在 VC6.0 环境下编译通过后生成可执行文件,下面是以参考文献[3]中的例题为例执行程序后的运行结果,如图 1 所示: 3 C语言在等差数列求解中的应用 等差数列也是高频考点之一, 其题型变化灵活多样
下面以两个实例为例,探讨 C 语言在等差数列求解中的应用
3.1 实例 1: 求两个数之间能被某个数整除的整数的个数 该问题并没有显式包含等差数列之特点
但通过分析,我们可以发现,其隐含了数列为等差数列、公差为除数这个条件,要求数列中满足条件的项数
实际上是从给定的数列中反复取数, 并判断是否满足条件的问题
可用 C 语言的循环结构来求解
(1)源代码 #include<stdio.h> void main() { int first,end,div; int i,count=0; printf(“\n\t 请输入数列的首项和末项: ”); scanf(“%d%d”,&first,&end); printf(“\n\t 请输入除数: ”); scanf(“%d”,&div); for(i=first;i<=end;) { if(i%div==0) { count++; i+=div; } else i++; } printf(“\n\t %d 与 %d 之 间能被 %d 整 除的整数个数为%d \n”,first,end,div,count); printf(“\n\t”); } (2)程序运行结果如图 2 所示: 3.2 实例 2:已知等差数列的某两项 ,求数列其余任意项 该问题就是任意给定等差数列中的两项, 求解其余项;若数列的部分项为负数,还可以判断数列从哪一项开始为正数
可以用 C 语言的顺序结构+选择结构来完成
(1)源代码 #include<stdio.h> void main() { int m,n,a,b; int p,result; int pos=0,d; printf(“请输入数列的第一个已知项及其值:”); scanf(“%d%d”,&m,&a); printf(“请输入数列的第二个已知项及其值:”); scanf(“%d%d”,&n,&b); printf(“请输入数列中需要求解的项:”); scanf(“%d”,&p); d=(b-a)/(n-m); result=b-d*(n-p); printf(“该项的值为:%d\n”,result); while(a-d*(m-pos)<=0) { pos++; } printf(“从第 %d 项开始数列为正数 \n”,pos); } (2)程序运行结果如图 3 所示: 4 结语 高中数学的知识量非常大, 远远不止本文所列举的这些方面
本文通过对高中数学中一部分知识点用C 语言编程实现的尝试, 提高笔者对该部分知识点的理解
高中数学中还有很多的知识点,可以通过这种方式来加深理解,真正掌握其内涵,拓展其外延,以适应其灵活多变性
【图略】 参考文献: [1]刘红旗
C 语言在高中化学教学中的应用[J]. 安庆师范学院学报(自然科学版),2012,18(3):139-142. [2]谭浩强
C 程序设计[M].清华大学出版社,2010, 6. [3]田祥高
考点同步解读:高中数学(5 必修)[M]. 华中师范大学出版社,2014,11