C语言与高中数学学习的结合

所属栏目:应用数学论文 论文作者:/

  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

'); })();