网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言中级教程 何谓表达式-4.pptVIP

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中级教程何谓表达式-4ppt课件

关于迭代 迭代是用前次计算出来的值作为新起点再次计算,反复进行,逐步逼近精确值的一种数值计算方法。 例如 用公式xn+1=1/2(xn+a/xn) 求整数a的平方根。 若求5的平方根 。第一次迭代:设x=1,则(1+5)/2=3;第二次迭代:x=3,则(3+5/3)/2=7/3=2.3; 第三次迭代:x=2.3则(2.3+5/2.3)/2=47/21=2.24….; 不同于普通循环,普通循环并不要求每次使用前次的计算结果; 也不同于递归,不是某函数的自我调用。结束也不同,递归是靠截止条件,而迭代则靠前后两次计算结果的差值是否接近来停止的。 已知:正数a和求a的算术平方根x的公式。 求 :a的算术平方根x。 算法:① 从键盘上输入a,并假设a的根为x=a; 误差标志变量dx。 ② 重复做: 记下上一个根 x0=x。 按公式求下一个根 x。 求两个根的误差绝对值dx=fabs(x-x0)。 ③当两次求得的根之差的绝对值 dx=0.00001时停止。x既为所求平方根。 #include “stdio.h” #include “math.h” void main() { float a, x, x0, dx; printf(“\n 请输入被开方数 a=); scanf(%f,a); x=a; do { x0=x; // 记下前次计算结果 x=(x+a/x)/2; dx=fabs(x- x0); }while(dx0.00001); printf(“\n a的平方根 x=%f,x); } 实用框架: while ( 1 ) { //一些语句,如输入、遍历、比较、选择 等 if ( 条件 ) break; } 其语义是:只有“条件”满足才能跳出循环,否则无休止地执行“一些语句”。 比如:在用户输入数据时,只有输入的数据合乎要求才能跳出循环,否则重新输入数据。此框架可确保其后的语句得到的数据是正确的。还可以用于拦截检查等。 “死循环”的用途: 定义数据; 描述函数; 调用函数。 仅此三项,别无其他。 显然,这不是现实世界的“问题”的本来面貌,而是被程序员“变换”了的求解处理过程——程序员充当了“变换器”。 要想胜任“变换器”角色,就不仅仅只是“知道”语言的全部知识,更重要的是“理解”它们的含义以及该怎么使用。这才叫“程序设计”。 编程的内容: 函数调用的形实结合时的类型转换 当函数调用的形实结合时,形参与实参类型不相同,会遵守“实参服从形参”的原则,而不是短的服从长的。 具体情况在后面“函数”一讲会有详细的介绍。 函数的返回类型的转换 当函数的返回类型与return所带的表达式类型不相同时,会遵守“表达式类型服从返回类型”的原则,而不是短的服从长的。 具体情况在后面“函数”一讲会有详细的介绍。 int fun ( ) { char ch = ‘a’; int i = 100; float f = 3.44f; double d = 0.22 ; … return ch+i*f-d ; } 由转换产生的临时变量所引发的问题 当: int a = 3; double d = 12.8 ; a = int( d ) ; // ok! int( d ) = a ; // error ! 请解释原因! 因为 int( d ) 是强制类型转换运算,它要产生一个短命的、无名的临时变量,这临时变量是不能充当左值的。 表达式的副作用 各个不同的编译器,根据自己的理由,会对表达式的运算顺序作以安排,或从左向右,或从右向左。于是会影响运算结果; ( 算式 A ) ( 算式 C ) ( 算式 B ) + * 运算顺序肯定是先*后+。但是把三个括号都算出来再乘和加?还是用到哪个括号算哪个括号?再一点是算式 B先做还是算式 C先做?这些都会影响运算结果; 交换律失效 数学中的交换律,会因为表达式的运算顺序影响而失效。例如: int a = 3, b = 5 ,c , d ; c = a * b + ++b ; d = ++b + a * b ; c和d 的值会不同,vc 会得21,而 BCB得24。这给程序员带来了噩梦! 括号失效 同样的原因,还使得括号也失效。例如: int a

文档评论(0)

118zhuanqian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档