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