




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
逻辑思维与逻辑问题闰年我们知道有些年份是闰年,有366天,其规则为如果年份能被400整除,那么它是闰年;否则,如果年份能被4整除并不能被100整除,那么它是闰年,否则为平年,请写一个程序,输入年份,计算此年份是否为闰年。目前我们所学能做的整除计算如果a整除b,等价于b对于a取余为0。如果a不能整除b,等价于b对于a取余不为0。显然光有这些不能完成任务的计算。我们还需要什么?根据余数的结果对程序进行不同处理关系运算和关系表达式条件分支语句关系运算与关系表达式用于将数值大小关系使用计算机语言进行描述。关系运算符,一共6个==等于!=不等于>大于<小于>=大于等于<=小于等于关系表达式一般形式<表达式1>关系运算符<表达式2>如果表达式1的值与表达式2的值满足关系运算符的关系,则此关系表达式的值为1,否则为0。比如a>b,如果a的值为1,b的值为2,则此表达式的值为0;如果a的值为2,b的值为1,则此表达式的值为1。C语言中使用0表示假,非0表示真分支结构通过计算关系,我们对不同的情况需要进行不同的处理,我们需要学习分支结构。if语句C语言中使用if语句来实现分支结构。(1)第1种情况 if(表达式) 语句1;如果表达式为真,则只执行语句1;否则什么都不做。if语句(2)第2种情况 if(表达式) { 语句块1; }如果表达式为真,则执行语句块1(可能是多条语句)的内容;否则什么都不做。if语句(3)第3种情况 if(表达式) 语句1; else 语句2;如果表达式为真,则执行语句1;否则执行语句2。if语句(4)第4种情况 if(表达式) { 语句块1; } else { 语句块2; }如果表达式为真,则执行语句块1;否则执行语句块2;if语句的嵌套由于if语句的子句中也可以是if语句,所以会出现if语句的嵌套情况if(表达式1) if(表达式2) 语句1; else 语句2;是哪一种?else总和它之前的未匹配的最近的一个if匹配if(表达式1){ if(表达式2) 语句1;} else 语句2;强烈建议建议对所有子句都是用花括号括起来,这样一来层次很清晰,二来不会因为if-else匹配问题导致程序逻辑错误。分支结构实例计算分段函数处理流程判断x的值,根据不同的值,做不同的处理解决任务4-1我们学习了if语句后,就有能力解决任务4-1了【任务4-2】计算器请设计一个计算器,支持加,减,乘,除四种操作,四种操作分别用操作符(‘+’,‘-’,‘*’,‘/’)表示,每次用户先输入一个操作符,然后输入两个数,计算器输出计算结果。比如输入“+1.12.2”,输出1.1+2.2=3.3。我们所学的知识够不够?读入字符和数值scanf判断操作符类型if计算数值算术运算OK,我们学的已经可以解决这个问题了!!!例程例程不够优美if-else的嵌套太多了,不清晰,很累赘C语言提供一个多路开关语句switchswitchswitch(表达式){case值1:操作1;break;case值2:操作1;break;...case值n:操作n;break;default:其他情况下的操作;break;}注意点(1)表达式的值和case子句的值必须是整型,字符型(注意是字符,不是字符串)或者枚举型。注意点(2)break语句在switch中表示跳出switch的结构,也就是说程序运行break语句后,直接会跳到switch语句结构的“}”后面一条语句。如果进行对应的操作后不写break语句,那么程序会继续顺序执行。注意点(3)default项可以缺省,如果缺省而表达式计算的值又没有case子句的值与之匹配,则程序什么都不做。使用switch完成任务4-2if-else与switch的比较switch能做的,if-else一定能做if-else能做的,switch不一定能做,或者不好使用switch实现只有当分类值很容易通过计算得到时,使用switch才简洁和优美,否则不如用if-else小技巧如果分区范围是有规律的,则通过计算可以得到范围值小技巧示例计算下列分段函数y=10*x0<=x<10;y=20*x10<=x<20;y=30*x20<=x<30;intk;doublex,y;k=(int)x/10;【任务4.3】猜比赛结果一天,湘潭大学ACM/ICPC队的四支候选队展开比赛。比赛完,4名队长问教练Eric最后比赛谁赢了。Eric让他们猜:A说:“不是我们队,也不是C队。”B说:“是我们或者D队。”C说:“是A队,不是B队。”D说:“B猜错了。” Eric说只有一个人猜对了,请问最后是谁赢得了比赛?逻辑运算与逻辑表达式说话人说的话写成关系表达式A“不是我们队”winner!='A'“不是C队”winner!='C'B“是我们”winner=='B'“是D队”winner=='D'C“是A”winner=='A'“不是B”winner!='B'每个子句之间的关系和D所说的话,我们没有办法用已学的知识进行处理。在这里我们要引入一个新的计算——逻辑运算。逻辑运算逻辑与&&a&&ba与b往往是关系表达式,a与b同时为真,则表达式为真,否则为假A0011B0101A&&B0001逻辑运算逻辑或||a||ba与b只要有1个为真,则表达式为真,否则为假A0011B0101A||B0111逻辑运算逻辑非!!aa为假,则表达式为真,否则为假A01!A10优先级上!最高,&&比||高不记得就全部打上括号使用逻辑表达式表示4个人说的话说话人说的话写成逻辑表达式A“不是我们队,也不是C队。”winner!='A'&&winner!='C'B“是我们或者D队”winner=='B'||winner=='D'C“是A,不是B队”winner=='A'&&winner!='B'D“B猜错了。”!(winner=='B'||winner=='D')枚举法的思路分析任务4-3,我们可以依次假设A,B,C,D为winner,然后测试A,B,C,D所说的4句话,看是否满足“只有一个人猜对了”的条件,即只有一句话的逻辑表达式结果为真的。如果满足,则我们的假设成立,否则我们的假设错误。枚举法,又叫穷举法,即把所有可能的情况都进行一次计算,最后得到整个问题的计算结果。状态赋值表达式1winner='A'2winner='B'3winner='C'4winner='D'“只有一个人猜对”等价于只有一句话的逻辑表示式结果为真,那么我们可以将这4句话的逻辑结果累加,如果结果为1,则表明只有一句话的逻辑结果为真。winner=‘A’说话人说的话代入逻辑表达式值Awinner!='A'&&winner!='C''A'!='A'&&'A'!='C'0Bwinner=='B'||winner=='D''A'=='B'||'A'=='D'0Cwinner=='A'&&winner!='B''A'=='A'&&'A'!='B'1D!(winner=='B'||winner=='D')!('A'=='B'||'A'=='D')1winner=‘B’说话人说的话代入逻辑表达式值Awinner!='A'&&winner!='C''B'!='A'&&'B'!='C'1Bwinner=='B'||winner=='D''B'=='B'||'B'=='D'1Cwinner=='A'&&winner!='B''B'=='A'&&'B'!='B'0D!(winner=='B'||winner=='D')!('B'=='B'||'B'=='D')0说话人说的话代入逻辑表达式值Awinner!='A'&&winner!='C''C'!='A'&&'C'!='C'0Bwinner=='B'||winner=='D''C'=='B'||'C'=='D'0Cwinner=='A'&&winner!='B''C'=='A'&&'C'!='B'0D!(winner=='B'||winner=='D')!('C'=='B'||'C'=='D')1winner=‘C’笨笨的写法如果题目有100人怎么办???这么写太麻烦了,也没有必要。每次的测试计算是一样,只是winner的值不一样我们需要依次遍历winner的可能状态,即一个一个测试循环结构循环结构是计算机程序中最常用的结构,它能充分地利用计算机上擅长做重复运算的特点。C语言中可以使用for语句,while语句和do-while语句实现循环结构,其中for是用得最多,也是最灵活的一种for语句for(表达式1;表达式2;表达式3){ 循环体(语句组);}for语句中表达式1,2,3都可以缺省但括号中的“;”不能缺少。表达式2缺省时,那么循环判断结束条件为永真。使用for循环解题的实例(1)输入n个整数,求这个n个整数的累加和。一共输入n+1个整数,第一个整数为n。求n(n>0)个自然数中最大的一个。一共输入n+1个自然数,第一个整数为n。解决任务4-3
【任务4-4】丑数当一个自然数只含有质因子2,3,5,7的时候,我们称这个数为丑数。现在给你一个自然数,请判断这个数是否是丑数。解题思路(1)枚举测试2到7的因子,如果为4和6就跳过测试;(2)不断地用因子去试除自然数x,直到因子不能整除自然数x;(3)如果x为1,则直接跳出测试,这个数为丑数;(4)如果所有因子测试完,x不为1,则这个数包含非2,3,5,7的因子,不为丑数。如果为4和6就跳过测试;continuecontinue语句的意思是循环体后面的工作都不做了,直接跳回循环最前面去如果x为0,则直接跳出测试breakbreak语句的作用在于跳出本层循环,直
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品色带搭配手册
- 全面调理:综合养生法
- 如何规范小区垃圾分类管理
- 企业总经理2023年度工作报告范本
- 禁毒教学活动方案
- 电力公司元旦活动方案
- 用电演习活动方案
- 祝福新春活动方案
- 美术班知识分享活动方案
- 睡衣福袋活动方案
- 物理实验安全培训
- 小区物业管家管理制度
- 第三届全国技能大赛竞赛-无人机驾驶(植保)选拔赛备考试题库(附答案)
- 《烹饪营养与安全》考试复习题库(含答案)
- 加快建设教育强国-2025年上半年形势与政策
- 一例急性胰腺炎患者的个案护理课件
- 2024四川省水电投资经营集团有限公司员工公开招聘1人笔试参考题库附带答案详解
- 新教材人教版高中英语选择性必修第四册全册各单元重点语法
- 体育赛事组织及管理的业务流程
- 2024春形势与政策-铸牢中华民族共同体意识课件
- 婴幼儿回应性照护的基本策略课件
评论
0/150
提交评论