C语言第五章南昌大学综述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章  逻辑思维与计算机解题 任务4.1 南大附中有4位同学中的一位做了好事,不留名,表扬信来了之后,校长问这4位是谁做的好事。 A说:不是我。 B说:是C 。 C说:是D 。 D说:他胡说。 已知3个人说的是真话,一个人说的是假话,现在要根据这些信息,找出做好事的人. 5.1 关系运算和关系表达式 5.1.1关系运算符: ,=,,= 高 ==,!= 低 优先级:高于赋值运算符,低于算术运算符 结合方向:自左向右 5.1.2关系表达式的一般格式: 变量1 关系运算符 变量2 举例4-1: #include stdio.h main() { printf(32的逻辑值是%d\n,32); printf(3=2的逻辑值是%d\n,3=2); printf(3==2的逻辑值是%d\n,3==2); printf(32的逻辑值是%d\n,32); printf(3=2的逻辑值是%d\n,3=2); printf(3!=2的逻辑值是%d\n,3!=2); } 运行结果: 表达式的值 关系表达式的值两种: “真”(非0) 即为1 “假”(0) 即为0 5.1.3 将“是”“否”写成关系表达式 定义字符型变量 为了完成任务4.1,将4个人所说的4句话写成关系表达式。为此,要定义一种字符型变量。这里用thisman表示要寻找的做了好事的人。 char thisman=‘’; 让“==”在这里的含义为“是”, 让“!=”在这里的含义为“不是”. 利用关系表达式,将4人所说的话表示成下表: 字符型变量在内存中的数据 在C中字符在存储单元中是以ASCII码形式存放的.因此 thisman=‘A’   或  thisman=65 这两个赋值语句都是等效的. 如: printf(65==A-----关系表达式的值为%d\n,65==A); 4.2 枚举法的思路 结合任务4.1分析,A,B,C,D4个人,只有一位是做好事者。令做好事者为1,未做好事者为0,可以有如下4种情况: 这四种状态可简化写成: 显然第一种情况是假定A是做好事者,第二种情况是假定B是做好事者,。。。。 所谓枚举:是按照这4种假定逐一地去测试4个人的话有几句是真话,如果不满足3句为真,就否定掉这一假定,换下一个状态再试。 具体做法如下: (1)假定让thisman=‘A’代入4句话中: (2)假定让thisman=‘B’代入4句话中: (3)假定让thisman=‘C’代入4句话中: 综上所述,一个人一个人去试,就是枚举。 从编写程序来看,实现枚举最好用循环结构。 5.3 循环结构 5.3.1 使用循环结构的部分程序: for(k=1;k=4;k=k+1) { thisman=64+k; sum=(thisman!=A)+(thisman==C)+(thisman==D)+(thisman!=D); } 5.3.2 for语句的格式和执行过程 for语句的格式为: for(表达式1;表达式2;表达式3) { 循环体(语句组) } for语句的执行过程,见下图 for循环的执行过程如下: (1)求解表达式1,置循环控制变量的初值。 (2)测试表达式2,测试是否为到循环控制变量的终值。 如果表达式2的值为真,则执行(3) 如果表达式2的值为假,则推出循环转(5) (3)执行循环体语句组之后转(4) (4)求解表达式3,让循环控制变量增值或减值,再转(2) (5)执行下一条语句。 5.3.3 使用for循环解题实例 1.求自然数1~100之和 #include stdio.h void main() { int i=0,sum=0; for (i=1;i=100 ;i=i+1 ) { sum=sum+i; } printf(自然数1~100之和为%d\n,sum); } 思考: (1)将原来的 for(i=1;i=100;i=i+1) 修改为: for(i=1;i=100;i=i+2) 问:这是哪些自然数在求和,答案是多少? (2)将原来的 for(i=1;i=100;i=i+1) 修改为: for(i=1;i=100000;i=i+1) 执行程序能够得到正确结果吗?如果不能,自己想办法解决. 5.3.3 使用for循环解题实例 (2)求10的阶乘 思路: 将10!展开为10*9*8*7*6*5*4*3*2*1. 让整型变量i去表示10,9,…,1. 让长整型变量sum来表示乘积,初始时让其为1 将求10的阶乘考虑成累乘问题,让i=10去乘sum再将乘积存至sum中,即sum=sum*i,之后,让i=i-1,再永上式累乘,不断地反复

文档评论(0)

我是追梦人 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档