C语言中具有代表性几种数学问题编程技巧探索

C语言中具有代表性几种数学问题编程技巧探索

[摘要]本文分析了C语言中几种常见的具有代表性的几类数学问题,从数学规律、语法结构分析、语句优化设计及应用方面,探索同一类编程问题的编程方法和技巧。

[关键词]数学问题;技巧;规律

[作者简介]高大菊(1983-),女,汉族,滁州城市职业学院助教。

在C语言程序设计过程中,很多的程序设计问题和数学问题是紧密联系的,怎样分析数学规律,灵活地使用C语言的几种结构来实现编程目的,往往带给高职学校的学生不少编程困难,现就在学习实践中对几种常见的具有代表性的数学问题的编程技巧总结一二。

一、序列问题

经常遇到这样的问题:给一组有一定规律的序列,然后求前n项的和或积的问题,这里简称序列问题。这类问题在编程中可以利用以下两点技巧:①遇求和设0自加,遇求积设1自乘,遇异号乘-1。②研究数字规律。

在设计时,如果遇到很多项相加求和的情况,这时可以设一个变量,令其初始值为0,然后做自加运算,达到求和的目的;同样,如果遇到很多项相乘求积的情况,可以设一个变量,令其初始值为1,然后做自乘运算,达到求积的目的;遇到一次加一次减即每一项符号不一样的情况,可以直接乘-1,达到改变符号目的,最后再找出前一项和后一项之间的联系,找到变化规律,这样问题就容易解决了。

例题:有一分数序列:1/3-1/3*2/5+1/3*2/5*3/7-1/3*2/5*3/7*4/9+…….求其前20项之和。

分析:这个例题首先看成是一个求和运算,可以设变量s=0,然后通过S+=来求和,认真分析每一项,会发现每一项又需要求积运算,可以设变量t=1,做t*=来求积,而且每隔一项符号就要变化一次,可以设一个符号变量m,每次与-1相乘自然符号达到变化要求。最后就剩下分析规律了,通过分析可以发现,每一项比前一项多出的部分中分子,分母之间都有a=a+1,b=b+2的规律,这样问题就好解决了。程序设计如下:

main( )

{float s=0,t=1;

intm=1,i,a=1,b=3;

for(i=1;i<=20;i++)

{ t* = a/b; s += m*t;m=(-1)*m; a=a+1; b=b+2;}

printf(“s=%9.6f\n”,s);

}

二、数字拆分问题

在C语言中,也经常接触到所谓的水仙花数,还有改变一个数据数字位置这样一类的问题,这些问题都需要将组成数据的每个数字作为一个独立的个体来看,达到设计目的,拆分技巧归纳如下:数据除最高位数(如个位,百位、千位等)得最高位数字,剩余数据继续除,除到个位才停止。

例如将一个三位正整数n拆分。

分析:n是一个三位数,那么最高位是百位,所以求百位数字的时候直接除100即可,依次类推,一直除到个位就可得出三个数字了。类似的问题可以用同样的方法解决。部分程序设计如下:

if(n>=100&&n<1000)

{i=n/100;(*求百位数字*)

j=(n-i*100)/10;(*求十位数字*)

k=(n-i*100-j*10)/1;(*求个位数字*)

}(注意:这里n,i,j,k均定义为int型,两个整形数据相除结果必为整。)

三、递归问题

C语言中会遇到很多的递归问题,有时需要多次重复循环或调用执行某个语句。关于递归的问题,第一步应该将问题简单化,将问题的规模缩小到最小,第二步,将问题分解为若干个小问题,然后通过描述这些较小问题解决原来较大问题的算法。我们设计时要注意两个条件:(1)递归形式,(2)递归结束条件,根据这两个条件再写循环体或递归函数。

请看下面的例题:

猴子吃桃问题。猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了钱一天剩下的一半零一个。到第10天早上再想吃时就剩下一个桃子了,求第一天共摘多少桃子。

分析:(1)到第十天的时候只剩下一个桃子,所以结束条件:f(10)=1。

(2)后一天的桃子数目总是等于前一天数目的1/2再减1,所以f(n+1)= f(n)/2-1,也就是f(n)=(f(n+1)+1)*2。

因为此问题是一个从后往前推导的问题,所以在利用循环结构设计时,应该从第9天循环开始,通过9次的循环,数字不停的叠加,最后一次就可以求出第一天的桃子总数了,见程序A。

利用递归函数设计时,首先还是把握住上面分析的两个条件,将这两个条件通过判断的方法写在递归函数中,通过主函数来调用,再用变量将返回值输出即可。见程序B。

main( )

{ int day=9,x1,x2=1; ea

c语言中的关于数学问题的编程,C语言中具有代表性几种数学问题编程技巧探索.doc...相关推荐

  1. 犀牛建模软件的英文语言包_使用tidytext和textmineR软件包在R中进行主题建模(

    犀牛建模软件的英文语言包 In this article, we will learn to do Topic Model using tidytext and textmineR packages ...

  2. c语言中变量r存放当前n值,C语言课件(王曙燕)chp3 算法和基本程序设计.ppt

    <C语言课件(王曙燕)chp3 算法和基本程序设计.ppt>由会员分享,可在线阅读,更多相关<C语言课件(王曙燕)chp3 算法和基本程序设计.ppt(39页珍藏版)>请在人人 ...

  3. 在c语言中 程序的最小编译单位是,C语言课堂练习习题集

    <C语言程序设计>自主学习检验题汇编 第一.二章 C程序与算法 单项选择题 1. 将汇编语言编写的程序翻译成目标程序的程序是() A)解释 B)编译 C)汇编 D)目标 2. 不属于面向机 ...

  4. 英语和数学不好是不是学不了计算机语言,英语和数学不好能学好C语言吗

    很多人都有这样一个疑问:"程序里面全是英文,可是我英语不好能学编程吗?" 当然能!能不能学好C语言跟英语关系不大.这一点英语专业的读者应该最有体会,他们所学的英语知识对学习C语言并 ...

  5. 数学语言和java基础语言的对应

    数学语言和java基础语言是对应的.在数学中,使用变量需要假设一个,在java中也需要声明一个.数学:设x=9设整数x=9,设y属于N,y=2x设整数k=x-9+yjava:int x=9;int y ...

  6. 数学/物理知识在软件/算法中应用(1),数学知识应用

    > 数学知识 1.拉普拉斯算子可以给图像锐化:2.傅里叶变化可以给图像去燥啊,压缩啊,提取特征那些吧. 3.高斯模糊:4.RSA,大数难分解:5.了解矩阵,Android开发之图像处理那点事-- ...

  7. 编程c语言要数学很好吗,编程与数学的关系:学好编程就能学好数学吗?

    原标题:编程与数学的关系:学好编程就能学好数学吗? 在大学数学学科中 线性代数是最为抽象的一门课 从初等数学到线性代数 思维跨度比微积分和概率统计要大得多 大多数小伙伴学过以后一直停留在 知其然不知其 ...

  8. C语言嵌入式系统编程修炼(经典中的经典)

    C语言嵌入式系统编程修炼      http://blog.chinaunix.net/u/25764/showart_326589.html转载自这里,真是太经典了. C语言嵌入式系统编程修炼   ...

  9. 《量化金融R语言高级教程》一2.2 在R中建模

    本节书摘来异步社区<量化金融R语言高级教程>一书中的第2章,第2.2节,作者: [匈牙利]Edina Berlinger(艾迪娜•伯林格) , 等 译者: 高蓉 责编: 胡俊英,更多章节内 ...

最新文章

  1. 差分 c语言,c语言 bmp位图差分
  2. android fragment 退出程序,android – 应用程序在Fragment中单击后退按钮后关闭
  3. Linux上端口开放常用命令
  4. halcon1D测量算子,持续更新
  5. c#进阶(5)—— WCF 实现简单预订功能
  6. Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)
  7. 20 FI配置-财务会计-定义税务科目
  8. DPDK 跟踪库tracepoint源码实例分析
  9. mysql新增表字段回滚_MySql学习笔记四
  10. C++新特性探究(十四):function
  11. P1117 [NOI2016]优秀的拆分
  12. 苏州大学计算机考研复试机试,2014年苏州大学计算机考研经验
  13. php读取剪贴板内容,jQuery获取剪贴板内容的方法
  14. oracle数据库连接时报12514_Oracle数据库之Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务...
  15. SQLSERVER tempdb 数据库异常增大原因查找
  16. 偏爱MySQL,Nifty使用4个Web Server支撑5400万个用户网站
  17. 一个十人开发团队的人员安排
  18. 陷阱技术探秘 ----动态汉化Windows技术的分析
  19. .Net微服务架构:API网关
  20. 如何把字幕文件(.ass)转换为word文件

热门文章

  1. 配置中心框架IConfCenter
  2. Zipline Development Guidelines
  3. 从刷票了解如何获得客户端IP
  4. 2020年全国硕士研究生招生考试考生进入复试的初试成绩基本要求(学术学位类)
  5. 人生苦短,我用Python——Life is short, You need Python
  6. 深度学习之利用TensorFlow实现简单的全连接层网络(MNIST数据集)
  7. 索尼将成立200亿日元基金 投资机器人、人工智能等新兴企业
  8. 200米外遥测心跳定身份,五角大楼全新黑科技,人脸伪装也没用
  9. mysql insert 结果集_SELECT查询结果集INSERT到数据表
  10. SSL/TLS协议详解