已阅读5页,还剩109页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c+程序设计,上海大学通信与信息工程学院2019/12/5,第四章过程化语句及程序设计,第一节面向过程的程序设计及其算法,面向过程的程序设计:把程序看做处理数据的一系列过程程序设计者必须指定计算机执行的具体步骤,做什么?怎么做?根据程序要“做什么”,写出一个个语句,安排好它们的执行顺序。怎样设计这些步骤,怎样保证它的正确性和具有较高的效率,这就是算法需要解决的问题。,第一节面向过程的程序设计及其算法,面向过程的程序设计,第一节面向过程的程序设计及其算法,程序和算法,程序和算法:程序=算法+数据结构,指定数据的类型和数据的组织形式数据结构(datastructure)。,对操作的描述。即操作步骤算法(algorithm)。,作为程序设计人员,必须认真考虑和设计数据结构和算法。算法必须具体地指出在执行时每一步应当怎样做。,第一节面向过程的程序设计及其算法,算法,算法就是解决一个问题的完整的步骤描述。也就是给定初始状态或数据,按照算法描述的步骤进行运算,能够得出所要求或所期望的终止状态或输出数据。解决一个问题的方法有高明的的,也有糟糕的;同样,同一个问题的算法也存在优劣之分。,什么是算法?,第一节面向过程的程序设计及其算法,算法,一个算法的优劣可以用空间复杂度与时间复杂度来衡量。,算法优劣的衡量,算法的时间复杂度是指执行算法需要消耗的时间资源,其表征了算法执行的效率问题,既解决问题的速度。算法的空间复杂度是指执行算法需要占用的内存空间,其表征了算法执行需要的资源,也就是解决问题付出的代价。算法的效率越高、代价越小,其性能越优异。,算法的表示:自然语言:用中文或英文等自然语言描述算法。在程序设计中一般不用自然语言表示算法。流程图:用传统的流程图或结构化流程图表示算法,比较形象直观,但修改算法时显得不大方便。伪代码(pseudocode):用介于自然语言和计算机语言之间的文字和符号来描述算法用计算机语言表示算法:用一种计算机语言去描述算法,这就是计算机程序。,ifxispositivethenprintxelseprint-x,算法,第一节面向过程的程序设计及其算法,流程图:,算法,第一节面向过程的程序设计及其算法,C/C+的控制语句,if()else(条件语句)for()(循环语句)while()dowhile()(循环语句)continue(结束本次循环语句)switch(多分支选择语句)break(终止执行switch或循环语句)return(从函数返回语句)goto(转向语句),流程控制语句:,操作运算语句:,表达式语句,第一节面向过程的程序设计及其算法,三种基本结构,严格使用三种基本结构:顺序结构选择结构循环结构1996年,计算机科学家Bohm和Jacopini证明:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构,也是面向过程程序设计建议采用的结构。,第二节顺序结构,第二节顺序结构,顺序结构编程实例1,例:交换两个变量#include/预处理命令intmain()inta=1,b=2;/定义待交换的两个整型变量,并赋值inttmp;/定义一个整型变量作为中间交换用cout交换前:a=a,b=bendl;tmp=a;a=b;b=tmp;cout交换后:a=a,b=babc;/对象调用语句x1=(-b+sqrt(b*b-4*a*c)/(2*a);/表达式语句x2=(-b-sqrt(b*b-4*a*c)/(2*a);coutx1=x1endl;coutx2=x2b;max=a;if(maxb)max=b;coutmax=b;if(ab)coutmax=a;elsecoutmax=90)cout=80)cout=70)cout=60)cout“及格endl;elsecout“不及格endl;,例:根据考分给出学生成绩等级,第三节选择结构,If语句(5),使用If语句应注意的问题,1、在if关键字后面均为表达式,通常为逻辑或关系表达式,但也可以是其它表达式,甚至也可以是一个变量。if(a=5).;if(b);/均合法。只要表达式的值为非0,即为“真”。if(a=b)couta;elsecoutb)a+;b+;elsea=0;b=10;,第三节选择结构,If语句(7),C/C+语言中赋值运算符(=)和等于运算符(=)只相差一个等号。这种错误在编程中十分常见。而且,这两种写法都是合法的写法,编译器无法自动检测。编程时必须特别小心!,inta=1;if(a=2)coutYesn;elsecoutNon“输出:No,inta=1;if(a=2)coutYesn;elsecout=0)if(x50)coutxisokn;elsecout=0)if(x50)coutxisokn;elsecout=0)if(x50)coutxisokn;elsecout=0)if(x50)coutxisokn;elsecoutAB;if(A!=B)if(AB)coutBn;elsecoutABn;elsecoutB;if(A=B)coutB)coutBn;elsecoutb)max=a;elsemax=b;可以用条件表达式写成:max=(ab)?a:b;执行该语句的语义是:ab为真,则把a赋予max,否则把b赋予max。,条件运算符的优先级,高于赋值运算符,但低于关系运算符和算术运算符。,第三节选择结构,条件运算符与条件表达式(p47)3,条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同:intx;intm;m=x?a:b;表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。xy?1:1.5如果xy,则条件表达式的值为1.5,若xy,值应为1,由于C+把1.5按双精度数处理,双精度的类型比整型高,因此,将1转换成双精度数,以此作为表达式的值。,若x=0,则条件表达式的值为字符b的ASCII码。,条件表达式中的类型转换,第三节选择结构,条件运算符与条件表达式(p47)4,例:输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#includeintmain()charch;cinch;ch=(ch=A,第三节选择结构,条件运算符与条件表达式(p47)5,条件表达式通常用于赋值语句中:max=(ab)?a:b;语义是:ab为真,则把a赋予max,否则把b赋予max条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符max=(ab)?a:b;可以去掉括号写成max=ab?a:b;条件运算符?和:是一对运算符(3目),不能分开单独使用。条件运算符的结合方向是自右至左例:ab?a:cd?c:d应理解为ab?a:(cd?c:d),总结,第三节选择结构,多分支选择语句switch(1),if语句是二分支选择语句,一个条件会出现两种可能性。而在实际生活中,一个条件会出现多种可能性,虽然可以用嵌套的if语句来处理,但整个程序结构可读性就比较差了。switch语句是多分支选择语句,当条件值为一系列的整数值时,用switch语句就显得更加直观和简捷。switch也称为开关语句。,第三节选择结构,多分支选择语句switch(2),一般形式,switch(表达式)case常量表达式1:语句组1case常量表达式2:语句组2.case常量表达式n:语句组ndefault:语句组n+1执行switch语句时,先计算表达式,再与每一种情况常量表达式进行比较。如果某一情况常量表达式等于表达式的值,控制就转向该情况常量表达式后面的相应语句。如果没有相匹配的就转到default。如果没有相匹配,也没有default就不执行任何语句。,第三节选择结构,多分支选择语句switch(3),例:按照考试成绩的等级打印出百分制分数段switch(grade)caseA:cout85100n;caseB:cout7084n;caseC:cout6069n;caseD:cout60n;default:couterrorn;1、switch后面括号内的“表达式”,允许为任何类型表达式,但表达式的值必须是整型、字符型或枚举型。case后面的常量表达式必须与其匹配,第三节选择结构,多分支选择语句switch(4),例:按照考试成绩的等级打印出百分制分数段switch(grade)caseA:cout85100n;caseB:cout7084n;caseC:cout6069n;caseD:cout60n;default:couterrorn;2、每一个case表达式的值必须互不相同,否则就会出现互相矛盾的现象,第三节选择结构,多分支选择语句switch(5),例:按照考试成绩的等级打印出百分制分数段switch(grade)caseA:cout85100n;caseB:cout7084n;caseC:cout6069n;caseD:cout60n;default:couterrorn;3、各个case和default的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“caseD:”,然后是“caseA:”。,第三节选择结构,多分支选择语句switch(6),例:按照考试成绩的等级打印出百分制分数段switch(grade)caseA:cout85100n;caseB:cout7084n;caseC:cout6069n;caseD:cout60n;default:couterrorn;4、在执行switch语句时,根据switch表达式的值找到与之匹配的case子句,就从此case子句开始执行下去,不再进行判断。,第三节选择结构,多分支选择语句switch(7),例:按照考试成绩的等级打印出百分制分数段switch(grade)caseA:cout85100n;break;caseB:cout7084n;break;caseC:cout6069n;break;caseD:cout60n;break;default:couterrorn;break;5、在执行一个case子句后,必须使流程跳出switch结构,即终止switch语句的执行。可以用一个break语句来达到此目的。,第三节选择结构,多分支选择语句switch(8),例:按照考试成绩的等级打印出百分制分数段switch(grade)caseA:caseB:caseC:caseD:cout60n;break;default:couterrorn;break;6、多个case可以共用一组执行语句。当grade的值为A、B或C时都执行同一组语句。,第三节选择结构,多分支选择语句switch(9),7、switch不一定非要包含复合语句块。switch(i)case1:cout“okn”;等价于:if(i=1)cout“ok/n”;,但一般不这样写!,第三节选择结构,多分支选择语句switch(9),8、switch语句可以嵌套。inti,j;switch(i)case1:/case2:switch(j)/嵌套switchcase1:/case2:/case3:/,第三节选择结构,多分支选择语句switch(10),9、switch语句可以用if语句替换,chargrade;/if(grade=A)cout85100n;elseif(grade=B)cout7084n;elseif(grade=C)cout6069n;elseif(grade=D)cout60n;elsecoutyear;/输入年份if(year%4!=0)/年份不能被4整除leap=false;/非闰年elseif(year%100!=0)/年份能被4整除但不能被100整除leap=true;/闰年elseif(year%400=0)/年份能被400整除leap=true;/闰年else/年份能被4和100整除但不能被400整除leap=false;/非闰年,闰年的条件:能被4整除但不能被100整除,或能被400整除,第三节选择结构,选择结构举例(2),/输出结果if(leap)coutyearis;/若leap为真,就输出年份和“是”elsecoutyearisnot;/若leap为假,就输出年份和“不是”coutaleapyear.endl;/输出“闰年”return0;,运行情况如下:20052005isnotaleapyear.20002000isaleapyear.,第四节循环结构,第四节循环结构,循环结构,当程序要反复执行同一操作时,就必须使用循环结构。很多问题都必须使用循环结构。如,树的遍历,数组输出,链表的操作等等。循环结构的功能是:通过设置执行循环体的条件和改变循环变量,从而重复执行一系列操作。C/C+语言中提供了for语句、while语句、do-while语句来实现循环结构。for语句是C/C+编程中最主要的循环语句。for语句用法简单,用以实现在满足某一条件下一系列操作的重复执行,其实现的循环结构逻辑清晰。,第四节循环结构,for循环(p58)(1),for语句的一般形式:for(表达式1;表达式2;表达式3)循环体表达式1:循环初始化表达式2:条件测试判断表达式3:状态修正一个循环包括:(1)循环初始状态(2)条件判断(3)状态修正(4)循环体,第四节循环结构,for循环(p58)(2),for(inti=1;i=10;+i)coutHello.;for语句头的括号中由两个分号隔开了三个部分,分别表示:(1)循环变量初始化(inti=1);(2)条件判断(i=10)表示循环的结束判断,当条件为假时,则说明循环应该结束;(3)循环变量的增量(+i表示循环的状态修正)。for语句花括弧中的部分为循环体,它可以由若干条语句组成,当循环体只含一条语句时,其外面的花括弧(表示语句块)可以省略。,反复做10次输出”Hello”,第四节循环结构,for循环(p58)(3),for(inti=1;i=10;+i)coutHello.;最初i的值为1,判断i=10为真,所以开始执行循环体。即输出一个“Hello.”。然后,返回去进行状态修正,i的值变成2,再进行条件判断,i=10为真,所以又一次执行循环体,输出第二个“Hello.”。再去状态修正,再去条件判断直到最后,当i为11,条件(i=10)为假时,循环终止,即本for循环语句执行完成。整个循环共执行了10次。,反复做10次输出”Hello”,第四节循环结构,for循环(p58)(4),求1+2+3+100的值,如果不考虑用计算公式(首项+尾项)项数2,而是逐项相加,应为下列语句:intsum=0;sum=sum+1;sum=sum+2;sum=sum+100;coutsumendl;该序列中,中间的100条语句都做相似的操作:sum=sum+i只不过i的值从1逐一变化到100,对此可以将这100条语句拿出来作为循环来设计。,第四节循环结构,for循环(p58)(4),求1+2+3+100的值,intsum=0;for(inti=1;i=100;i+)/循环变量在for头部定义,/这是一个好的做法。p60sum+=i;coutsumendl;如果把第一句放在循环体内,就会起不到累计的作用,因为每次都创建sum,并执行sum=0,并会导致最后输出因sum只从属于for而出现sum没定义的错误。如果把最后一句放入循环体,就会导致共输出100个不同的值,也不是想要的结果形式。,原来的代码在这里:intsum=0;for(inti=1;i=100;i+)sum+=i;coutsumendl;,intsum=0;inti=1;for(;i=100;i+)/分号不能省sum+=i;coutsumendl;循环变量的初始化放在for循环的外部定义。这样可以使循环变量在循环结束之后,仍然存在。在某些情况下便于查看循环是否正常退出。,for语句变化-省略初始化,for循环(p58)(5),第四节循环结构,intsum=0;for(inti=1;i+)/分号不能省sum+=i;if(i=100)break;coutsumendl;这表明可以在循环体中测试循环结束条件,并用break退出循环,而省略for循环结构描述中的条件测试部分。省略条件测试部分,相当于让循环体执行永不停止。循环的退出在每一轮都可以测试退出条件,但也可以在循环体中,通过测试条件,决定执行break的时机,达到退出循环的目的。,原来的代码在这里:intsum=0;for(inti=1;i=100;i+)sum+=i;coutsumendl;,for语句变化-省略条件测试,for循环(p59)(6),第四节循环结构,intsum=0;for(inti=1;i=100;)/分号不能省sum+=i+;/同时修改循环变量coutsumendl;该循环体中改变循环变量的值和累加赋值合二为一,省略for循环结构描述中的修正循环变量部分。,原来的代码在这里:intsum=0;for(inti=1;i=100;i+)sum+=i;coutsumendl;,for语句变化-省略状态修正,for循环(7),第四节循环结构,intsum=0;inti=1;for(;i=100;)sum+=i+;coutsumendl;要注意的是for语句在格式上,其两个分号不能少!,for语句变化-省略初始化和状态修正,原来的代码在这里:intsum=0;for(inti=1;i=100;i+)sum+=i;coutsum100)break;coutsumendl;要注意的是for语句在格式上,其两个分号不能少!,for循环(9),第四节循环结构,for语句变化-省略初始化、状态测试和状态修正,原来的代码在这里:intsum=0;for(inti=1;i=100;i+)sum+=i;coutsum=1;i-)sum+=i;coutsumendl;for循环的循环变量可以从这一头变化到那一头,也可以从那一头变化到这一头。,原来的代码在这里:intsum=0;for(inti=1;i=100;i+)sum+=i;coutsumendl;,for语句变化-从100到1倒过来累计,for循环(10),第四节循环结构,多重循环-输出水仙花数,for循环(11),第四节循环结构,所谓水仙花数是指一个三位数,其各位数字立方之和等于该数本身,如153。解:为了输出所有的水仙数,可以使用3层for循环,最外层循环变量为三位数的百位数,中层循环变量为三位数的十位数,内层循环变量为个位数,循环的结果是遍历了100999,在循环体中判断该三位数是否是水仙数。,多重循环-输出水仙花数,for循环(12),第四节循环结构,#includeintmain()inta,b,c;intnarcissus;coutNarcissusnumbers:n;for(a=1;a10;+a)/*百位数*/for(b=0;b10;+b)/*十位数*/for(c=0;c10;+c)/*个位数*/narcissus=a*100+b*10+c;/*计算该三位数的值*/*判断这个三位数是否为水仙花数*/if(a*a*a+b*b*b+c*c*c=narcissus)coutnarcissus;coutendl;/*换行,调整输出样式*/return0;,while循环(1),第四节循环结构,while语句是C/C+语言中循环结构的另一种实现方式。它和for语句的结构有很大不同之处,在不同的场景中各有优劣;两者还可以相互转换。,一般形式:while(表达式)循环体作用:当指定的条件为真(表达式为非0)时,执行while语句中的内嵌语句。特点:先判断表达式,后执行语句。while循环称为当型循环。,while循环(2),第四节循环结构,intsum=0;inti=1;while(i=100)sum=sum+i;i=i+1;coutsumendl;,While,while循环(3),第四节循环结构,for循环:intsum=0;inti=1;for(;i=100;)sum+=i+;coutsumendl;,已经演变成了while循环:intsum=0;inti=1;while(i=100)sum+=i+;coutsumendl;,Do-while循环(1),第四节循环结构,一般形式:do循环体while(表达式);先执行一次语句,再判断表达式的值,当指定的条件为真时,继续执行循环体中的语句。Do-while循环称为do循环。,do-while语句是while语句的一个变体。for语句与while语句都是对进入循环进行条件判断,先做条件判断,再执行循环体;而do-while则是对跳出循环进行条件判断,先执行循环体,后再做条件判断。,Do-while循环(2),第四节循环结构,#includeintmain()inti=1,sum=0;dosum=sum+i;i+;while(i=100);coutsum=sumi;while(i=10)sum=sum+i;i+;couti;dosum=sum+i;i+;while(i=10);coutsum=sumlength;/输入图形边长for(i=0;ilength;+i)/外层循环:控制行数for(j=0;jlength;+j)/内层循环:控制列数if(i%2=0)/根据行数的奇偶性决定输出内容cout=;elsecout+;coutlength;/输入图形边长for(i=0;ilength;+i)/外层循环:控制行数if(i%2=0)/使用选择结构包含循环结构的方式for(j=0;jlength;+j)/偶数行各列输出cout=;elsefor(j=0;jlength;+j)/奇数行各列输出cout+;cout“n”;/换行,分析:把选择结构从内层循环体提升一层,放到外层循环体。打印之前判断行号的奇偶性。条件判断只需要执行length次,但可读性上要比上一个方案差,但也不会很糟糕。,转向语句break,第四节循环结构,用在while,do-while,for和switch语句中。在switch语句中,用break来使流程跳出switch语句,继续执行switch后的语句。在循环语句中,用break从最近的封闭循环体内跳出。for(;)for(;)break;a=1;/break跳至此句,转向语句continue,第四节循环结构,continue语句在循环中,作用为结束本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。for(intn=100;n=200;n+)if(n%3=0)continue;/结束本次循环,转向下次循环coutnendl;,Break与continue区别(1),第四节循环结构,continue只结束本次循环,break结束整个循环过程。,一个循环结构套一个选择结构,Break与continue区别(2),第四节循环结构,打印100200之间所有不能被3整除的数。,for(intn=100;n=200;n+)if(n%3=0)continue;coutnendl;,for(intn=100;n=200;n+)if(n%3=0)break;coutnendl;,打印100200之间比第1个能被3整除的数小的数。,第五节循环设计,三种循环结构的使用说明,第五节循环设计,循环是程序设计入门中最重要的内容之一。用得最多的是for语句,因为它能描述循环体的初始和结束状态,以及中间步长。while是for的一种特例,在循环不含明确的循环变量时,用while会更简捷。而do-while循环的使用机会大大少于前两者,因为大多数循环可以用前两者描述,没有必要用do-while。,字符图形例1:输出字母图形,第五节循环设计,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,用for循环编程画出图形。图形一共10行,每行增加一个字符M,,应循环10次,每次输出一行,其循环模式为:for(inti=1;i=10;+i)输出第i行换行其中“输出第i行”是在for循环中的一个小循环。每次执行时其长度都是不一样的,但长度的变化正好与i同步,所以可以依赖i来实现。,字符图形例1:输出字母图形,第五节循环设计,注意到第i行的M字符数与i的关系:行iM数111222333444101010所以,可以得到“输出第i行”的循环为for(intj=1;j=i;+j)cout“M”;,MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,字符图形例1:输出字母图形,第五节循环设计,将内、外循环套起来,就有了完整的程序:#includeintmain()for(inti=1;i=10;+i)for(intj=1;j=i;+j)coutM;coutendl;/换行对付这种字符图形,一般用两重循环,外循环遍历所有行,内循环遍历行中每个字符。,举一反三,第五节循环设计,字符图形的排列图形除了有正直角三角形之外,还有其它各种图形如:倒直角三角形及其它朝向的直角三角形、等腰三角形、梯形、菱形、平行四边形等等。都可以通过程序来实现,*,*,*,*,第五节循环设计,字符图形例2:输出金字塔字母图形,AABCABCDEABCDEFGABCDEFGHI,外循环的形式for(inti=1;i=5;+i)输出若干空格输出若干字符换行如果要输出A起头依序的n(n27)个字母。可以for(inti=1;i=n;+i)coutchar(A+i-1);/括号内的整型转换成char型或者for(charch=A;chA+n);+ch)coutch;,第五节循环设计,字符图形例2:输出金字塔字母图形,AABCABCDEABCDEFGABCDEFGHI,每一行中的空格数、字符数与i的关系行空格数字符i行的空格数为5-i个,字符数为2i-1。因此输出空格数和字符数的内循环分别为:for(intj=1;j=5-i;+j)cout“”;for(charch=A;chA+2*i-1;+ch)coutch;,第五节循环设计,字符图形例2:输出金字塔字母图形,AABCABCDEABCDEFGABCDEFGHI,将内、外循环套起来:#includeintmain()for(inti=1;i=5;+i)for(intj=1;j=5-i;+j)/每行的空格数cout;for(charch=A;chA+2*i-1;+ch)/每行的字符coutch;coutm;inti;for(i=2;im;i+)/找m的因数if(m%i=0)break;if(m=i)/判断m是否被小于m的数整除coutmisprime.n;elsecoutmm;doublesqrtm=sqrt(m);/用到math.hinti;for(i=2;i=sqrtm;i+)if(m%i=0)break;if(sqrtmi)coutmisprime.n;elsecoutmisntprime.n;,假定某个整数m不是素数,则一定可以表示成两个因子的积:m=ij其中:1ijm则i2ijj2即i2mj2即所以必定有一个因子不大于m的平方根。故判断m是否为素数,只要试除到m的平方根就可以了,不必一直到m-1。,第五节循环设计,举一反三,有关素数的问题很多:判断一个数是否为素数。求a,b区间中的所有素数。在若干个区间中求素数的个数。,第五节循环设计,找出100200之间的素数,#include#include#includeintmain()intm,k,i,n=0;boolprime;/定义布尔变量primefor(m=101;m=200;m=m+2)/判别m是否为素数,m由101200prime=true;/循环开始时设prime为真,即先认为m为素数k=int(sqrt(m);/用k代表根号m的整数部分for(i=2;i=k;i+)/作用是将m被2根号m除,检查是否能整除if(m%i=0)/如果能整除,表示m不是素数prime=false;/使prime变为假break;/终止执行本循环if(prime)/如果m为素数coutsetw(5)m;/输出素数m,字段宽度为5n=n+1;/n用来累计输出素数的个数if(n%10=0)coutendl;/输出10个数后换行coutendl;/最后执行一次换行return0;,例2:找出100200之间的全部素数,第五节循环设计,逻辑判断百钱买百鸡,对于逻辑判断的问题,一般都要考虑全部的可能性,然后从这些可能性中按条件逐一排查,直到最后获得某个结论。,第五节循环设计,逻辑判断百钱买百鸡,例:公鸡7元一只,母鸡5元一只,小鸡1元3只。花100元钱,买100只鸡,如果公鸡、母鸡和小鸡都必须有,则公鸡、母鸡和小鸡应各买几只?分析:考虑全部可能性,先考虑公鸡、母鸡和小鸡的取值范围(也可以从金额着手)。由于各种鸡都必须要有,所以公鸡的最高耗用金额为100-5-1=94元,取7的倍数,得91元,所以:公鸡数的范围为113同理,母鸡数的范围为118小鸡数的范围为396,注意小鸡数虽可以花100-7-5=88元来买264只,但由于总鸡数的限制,小鸡数应98。,第五节循环设计,逻辑判断百钱买百鸡,for(列举所有可能的情况)/可能为多重循环if(条件1不满足)continueif(条件2不满足)continue/if(条件n不满足)continue输出结果之一或者累计符合所有条件的方案,公鸡数+母鸡数+小鸡数=100(cock+hen+chick=100)买公鸡款+买母鸡款+小鸡款=100(7*cock+5*hen+chick/3=100)小鸡数为3的倍数(chick%3=0),本问题条件,第五节循环设计,逻辑判断百钱买百鸡,公鸡数+母鸡
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院安全管理课件
- 小学体育课件安全与健康
- 2025年省公务员面试真题解析与面试备考心得分享
- 2012年广东揭阳农村信用社笔试真题一(类比推理)
- 2025年吉林省安全员《C证》考试模拟题及答案
- 《四川省生态系统碳汇资源资产评估报告》
- 上海市安全员-B证考试题库及答案内部题库
- 《国际公法》02形成性考核任务练习题库
- 博兴县图书馆招聘考试真题
- 各类安全课件
- 模具确认单模板
- KM70型煤炭漏斗车结构简介幻灯片
- 重庆2023公务员考试真题及答案
- 【超星尔雅学习通】探寻中国茶:一片树叶的传奇之旅网课章节答案
- GB/T 27418-2017测量不确定度评定和表示
- GB/T 19833-2005选煤厂煤伴生矿物泥化程度测定
- 英语猜单词游戏课件
- 许崇德版宪法课后简述题和论述题答案
- 大学语文-辛弃疾《摸鱼儿》《水龙吟》课件
- 内镜室护理工作流程
- 通信光缆施工方案
评论
0/150
提交评论