浅谈数学在C语言编程中的应用 毕业论文.doc

上传人:韩长文 文档编号:3960919 上传时间:2019-10-11 格式:DOC 页数:8 大小:48.52KB
返回 下载 相关 举报
浅谈数学在C语言编程中的应用 毕业论文.doc_第1页
第1页 / 共8页
浅谈数学在C语言编程中的应用 毕业论文.doc_第2页
第2页 / 共8页
浅谈数学在C语言编程中的应用 毕业论文.doc_第3页
第3页 / 共8页
浅谈数学在C语言编程中的应用 毕业论文.doc_第4页
第4页 / 共8页
浅谈数学在C语言编程中的应用 毕业论文.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《浅谈数学在C语言编程中的应用 毕业论文.doc》由会员分享,可在线阅读,更多相关《浅谈数学在C语言编程中的应用 毕业论文.doc(8页珍藏版)》请在三一文库上搜索。

1、浅谈数学在C语言编程中的应用【摘 要】 本文首先阐明数学与C语言之间的关系,然后以全国新课程育改革在高中数学教材为基础列举在学习C语言的过程中常见的数学思想与方法并将这些思想与方法应用于C语言编程当中。【关键词】 C语言 算法 程序 编程语言 数学思想 数学方法引言在现代社会里,计算机已经成为人们日常生活和工作不可缺少的工具。听音乐看电影玩游戏打字画卡动画处理数据,计算机几乎渗透到了人们生活的所有领域。现如今许多公司在招聘员工时将计算机应用能力的高低作为一项重要的考察指标在进行参考,不仅在企业上如此在公务员的工作考核中也越来越重视计算机能力的应用水平,甚至为了适应社会发展和社会对人才的需要,全

2、国新课程教育改革在高中数学中也加入了算法这一章有关计算机的数学理论知识为学生将来学习计算机编程打下基础。所以现在许多学生选择掌握一门计算机程序语言来增加就业机会。C语言对学习者的数学基础要求较高对一部分学生来说学好C语言有一定的困难。本文就本专业知识和自身对C语言的学习经验对数学在C语言编程中的应用做出讲解,以帮助部分学生更好的学习C语言。1 与数学的关系C语言要知道C语言与数学的关系可以通过以下几个关系来得出。1.1:编程语言与程序的关系程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程

3、序两大类。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。简单一点说如果我们把程序作为一种产品,那么编程语言就是生产实现的工具。1.2:C语言与编程语言的关系 计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 如果按语种分,可以分为英文符号语言和汉语符号语言两类。目前通用的编程语言有两种形式:汇编语言和高级语言。而C语言是一款综合功能强大的编程语言,和其它编程语言相比它既具有汇编语言的功能又具有高级语言的功能这一优势。这使得C语言成为当今最受程序员欢迎也是应用最为广泛的编程语言之一。1.3:算法与程序的关系算法是程序的灵魂 我

4、们知道,计算机执行的是人们事先编制好的程序。一个程序,它包括两个方面:一是对数据的描述,即数据结构( Data Structure ),它在程序中的作用是指定数据的类型和组织形式。二是对操作的描述,即算法( Algorithm ),它在程序中的作用是控制操作的步骤,是程序实现的基本思想。著名计算机科学家沃思( Nikiklaus Wirth )就曾提出: 程序 = 数据结构 + 算法1.4:算法与数学的关系在高中数学教材必修3中有过这样几句话“算法不仅是数学及其应用的重要组成部分,也是计算机科学的重要基础。”“从数学发展的历史来看,算法的概念古已有之。比如,在西方数学中很早就有了欧几里得算法,

5、而中国古代数学中蕴含着更为丰富的算法内容和思想。割圆术,秦九韶算法等等都是很经典的算法。通过学习算法发展有条理的思考与表达的能力,提高逻辑思维能力。”并且在教材中给出了算法的定义。算法(algorithm)一词出现于12世纪,指的是用阿拉伯数字进行算术运算的过程。在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤。现在,算法通常可以编成计算机程序,让计算机执行并解决问题.这样算法与数学的关系就已经十分的明确了。总结:综上所述,C语言作为编程语言之一,是为生产实现程序的工具,而无论构成程序的数据结构还是算法都属于数学范畴。如果把程序比作产品,那么数学内容就是原料和零件,而C语言就

6、是把原料和零件加工组装成品的工具和机器。2 数学的思想方法在C语言中的应用2.1辗转相除法例1(1) 设计一个算法,判断7是否为质数。(2)设计一个算法,判断35是否为质数。算法分析:(1)根据质数的定义,可以这样判断:依次用26除7,如果它们中有一个能整除7,则7不是质数,否则7是质数。根据以上分析,可写出如下算法:第一步,用2除7,得到余数1。因为余数不为0,所以2不能整除7.第二步,用3除7,得到余数1。因为余数不为0,所以3不能整除7.第三步,用4除7,得到余数3。因为余数不为0,所以4不能整除7.第四步,用5除7,得到余数2。因为余数不为0,所以5不能整除7.第五步,用6除7,得到余

7、数1。因为余数不为0,所以6不能整除7.因此,7是质数。(2)类似地,可写出“判断35是否为质数”的算法:第一步,用2除35,得到余数1。因为余数不为0,所以2不能整除35.第二步,用3除35,得到余数2。因为余数不为0,所以3不能整除35.第三步,用4除35,得到余数3。因为余数不为0,所以4不能整除35.第四步,用5除35,得到余数0。因为余数为0,所以5能整除35.因此,35不是质数。对于任意的整数n(n2),若用i表示2(n-1)中的任意整数,则“判断n是否为质数”的算法包含下面的重复操作:用i除n,得到余数r。判断余数r是否为0,若是,则n不是质数;否则,将i的值增加1,再执行同样的

8、操作。这个操作一直要进行到i的值等于(n-1)为止。因此,“判断n是否为质数”的算法可以写成:第一步,给定大于2的整数n。第二步,令i=2。第三步,用i除n,得到余数r。第四步,判断“i=o”是否成立。若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示。第五步,判断“i(n-1)”是否成立。若是,则n是质数,结束算法;否则,返回第三步。2.2 更相减损术九章算术是中国古代的数学专著,其中的“更相减损术”也可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母子之数,以少减多,更相减损,求其等也。以等数约之。”翻译为现代语言如下:第一步,任意给定两个正整数,判断它们是否都是

9、偶数。若是,用2简约;若不是,执行第二步。第二步,以较大的数减去较小的数,接着把差与较小的数比较,并以大数减小数。继续这个操作,直到所得的数相等为止,则这个数或这个数与简约的数的乘积就是所求的最大公约数。例题2用更相减损术求98与63的最大公约数。解:由于63不是偶数,把98和63以大数减小数,并辗转相减如下:98-86=3563-35=2836-28=728-7=2121-7=1414-7=7所以,98和63的最大公约数等于7.2.3 秦九韶算法怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值?一个自然的做法是把5带入多项式f(x),计算各项的值,然后把它们加起来。这时,我

10、们一共做了1+2+3+4=10次乘法运算,5次加法运算。另一种做法是先计算x2 的值,然后依次计算x2*x,( x2*x)*x,( ( x2*x)*x)*x的值,这样每次都可以利用上一次计算的结果。这时,我们一共做了4次乘法运算,5次加法运算。第二种做法与第一种做法相比,乘法的运算次数减少了,因而能够提高运算效率。对于计算机来说,做一次乘法运算所用的时间比做一次加法运算长得多,所以采用第二种做法,计算机能更快地得到结果。我国南宋时期的数学家秦九韶在他的著作数书九章中提出了下面的算法。把一个n次多项式f(x)=anxn +an-1xn-1 +a1x+a0改写成如下形式: f(x)= anxn +

11、an-1xn-1 +a1x+a0 =(an xn-1+ an-1 xn-2+a1)x+ a0 =( an xn-2+ an-1 xn-3+a2)x+ a0 = =(anx+an-1)x+an-2)x+a1)x+a0 .求多项式的值时,首先计算最内层括号内一次多项式的值,即 u1= anxn+ an-1,然后由内向外逐层计算一次多项式的值,即 u2= u1x+ an-2, u3= u2x+ an-3, un= un-1x+a0,这样,求n次多项式f(x)的值就转化为求n个一次多项式的值。 上述方法称为秦九韶算法。算法分析:观察上述秦九韶算法中的n个一次式,可见uk的计算要用到uk-1的值。若令u

12、0=an,我们可以得到下面的公式: u0=an, uk=uk-1x+an-k(k=1,2, ,n).这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现。算法步骤如下:第一步,输入多项式的次数n,最高此项的系数an和x的值.第二步,将u的值初始化为an,将i的值初始化为n-1.第三步,输入i此项的系数ai.第四步,u=ux+ai,i=i-1.第五步,判断i是否大于或等于0,若是,则返回第三步;否则,输出多项式的值u.2.4进位制进位制使人们为了计数和运算方便而约定的计数系统,约定满二进一,就是二进制;满十进一,就是十进制;满十二进一,就是十二进制;等等。也就是说,“满几进一”就是几进制

13、,几进制的基数就是几。一般地,若k是一个大于1的整数,那么以k为基数的k进制数可以表示为一串数字连写在一起的形式anan-1a1a0(k) (an,an-1,a1N,0 ank,0an-1 ,a1,a0n是否成立,若是,则执行第五步;否则返回第三步。第五步,输出b的值。例题4 设计一个求解一元二次方程ax2+bx+c=0的算法。 算法分析:我们知道,若判别式=b2-4ac0,则原方程有两个不相等的实数根x1=(-b+)/(2a),x2=(-b-)/(2a);若=0,则原方程有两个相等的实数根x1= x2=(-b)/(2a);若0,则原方程没有实数根。也就是说,在求解方程之前,可以先判断判别式的

14、符号,根据判断的结果执行不同的步骤。又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算x1和x2之前,先计算p=(-b)/(2a),q=()/(2a)。解决这一问题步骤如下:第一步,输入3个系数a,b,c.第二步,计算=b2-4ac。第三步,判断0是否成立。若是,则计算p=(-b)/(2a),q=()/(2a):否则,输出“方程没有实数根”,结束算法。第四步,判断=0是否成立。若是,则输出x1= x2=p;否则,计算x1=p+q, x2=p-q,并输出x1,x2。3 结合具体事例解决编程问题3.1 例题1辗转相除法Main() int m,n,r;doPrintf(“请输入两个正整数

15、:”);Scanf(“%d%d”,&m,&n);While(m=0n=0);r=m%n;m=n;n=r;While(r!=0);printf(“%d”,m);3.2 例题2 更相减损术Main()int a,b;doPrint(“请输入两个正整数:”);Scanf(“%d%d”,&a,&b);While(m=0n=0);doIf(a%2=0)&(b%2=0)a=a/2;b=b/2;else ;while(a%2=0)&(b%2=0);while(a!=b)a=a-b;If(ab)a=a-b;else printf(“%d”,a);3.3 例题3秦九韶算法Main()int n,i;double

16、 x,v,ai;printf(“输入多项式的次数n,最高此项的系数an和x的值”);scanf(“%d%lf%lf”,&n,&an,&x);v=an;i=n-1;while(i=0)scanf(“输入ai=%d”,&an);v=v*x+ai;i=i-1;printf(“%ld”,v);3.4例4进位制设计一个算法,把k进制数a(共有n为)化为十进制数b.Main()int a,k,n,b,i,t;scanf(“%d%d%d”,&a,&k,&n);b=0;i=1;t=a%10;dob=b+t*k(i-1);a=a10;t=a%10;i=i+1;while(i=0.0) printf(“Two r

17、oot:x1=%lft x2=%lfn”,re+im,re-im);else printf(“Two complex roots:x1=%lf+I*%lft x2=%lf-I*%lfn”,er,im,er,im); 结束语C语言和其它编程语言相比学习起来难度较大。为什么C语言学习起来比较难呢?那是因为很多编程语言注重编程工具的熟练使用,而对于编写程序代码要求较低。C语言专注于编写程序代码,所以学习起来相对比较困难。为了解决编写程序代码较难的问题,本文着重阐明数学对于学习C语言的重要性和列举在C语言编程中比较常用的数学思想与方法,最后将这些数学思想与方法用C语言代码的形式表达出来,希望对读者能够有所帮助。参考文献:1 谭浩强.C 语言程序设计M.清华大学出版社,1999.12.2 谭浩强,刘炳文.C+程序设计教程M.中国科学技术出版社,19953 王载新,曾大亮.程序设计基础C语言M.人民邮电出版社,2000.6.4 中学数学课程教材研究开发中心.普通高中课程标准实验教科书数学3必修A版M.人民教育出版社,2007.2.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1