- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.7.1 列举算法 所谓列举算法,是指根据提出的问题,列举所有可能的情况,并根据条件检验哪些是需要的,哪些是不需要的。 设计列举算法的关键是根据问题的性质确定判断的条件,从而对列举的所有条件进行判断。 5.7.2 试探算法 而在有些问题中,可能其列举量事先并不知道,只能从初始情况开始,往后逐步进行试探,直到满足给定的条件为止。这就是逐步试探法,简称试探法。 5.7.3 密码问题 在报文通信中,为使报文保密,发报人往往要按照一定的规律将其加密,收报人再按约定的规律解密(即将其译会原文) 最简单的加密方法是,将报文中的每一个英文字母转换为其后的第k个字母。 例如当k=5时,字母a转换为f,B被转换为G。 由此可以看出,这种转换是很方便的,只需改字母的ASCII码值加5(k的值为5)即可。 在转换过程中,如果某大写字母其后的第k个字母已经超出大写字母Z,或某小写字母其后第k个字母已经超出小写字母z,则将循环到字母表的开始位置。 例如,大写字母V转换为A,大写字母Z转换为E,小写字母v转换为a,小写字母z转换为e等。 【例5.19】用break语句打印直角三角形的九九乘法表。 main() { int i,j; for(i=1;i=9;i++) { for(j=1;j=9;j++) { if(ij) break; printf(%d*%d=%-4d,i,j,i*j); } printf(\n); } return 0; } continue语句 continue语句的作用是终止本次循环,continue语句后面的语句不执行而进入下一次循环。 【例2】下列程序的功能是:输出100以内能被7整除的数。仔细阅读程序,体会continue语句的功能。 main() { int i; for(i=1;i=100;i++) { if(i%7!=0) continue; printf(%4d,i); } return 0; } break语句和continue语句区别 终止本次循环,continue语句后面的语句不执行而进入下一次循环。 循环将无条件终止,程序跳出循环结构,执行循环体之后的语句。 break语句: continue语句: 【例5.22】某单位要在A,B,C,D,E,F六个人中选派若干个人去执行一项任务,选人的条件如下: ⑴若C不去,则B也不去; ⑵C和D两个人中去一个; ⑶D和E要么都去,要么都不去; ⑷A、B、F三个人中要去一个 ⑸C和F不能一起去 ⑹E和F两个人中至少去一个。 问应该派选哪几个人去? 用a,b,c,d,e和f这6个整型变量分别表示A,B,C,D,E和F是否被选中的状态。若变量的值为1,则表示该人被选中;若变量值为0,则表示该人没有选中。 根据选人的条件,可以得到如下相应的表达式: ⑴若C不去,则B也不去。这句话表示:C和B都不去或C去而B随便。相应的表达式为:b+c==0||c==1 ⑵C和D两个人中去一个,相应的表达式为:c+d==1 ⑶D和E要么都去,要么都不去,相应的表达式为:d+e==0||d+e==2 ⑷A、B、F三个人中要去一个,相应的表达式为:a+b+f==2 ⑸C和F不能一起去,相应的表达式为:c+f!=2 ⑹E和F两个人中至少去一个,相应的表达式为:e+f1 上述6个表达式之间是“与”的关系,最终可以得到总的表达式如下:(b+c==0||c==1)(c+d==1)(d+e==0||d+e==2) (a+b+f==2) (c+f!=2) (e+f1) 穷举每个人去(变量的值为1)或不去(变量的值为0)的各种情况,用上述逻辑值进行判断,使逻辑表达式值为真的情况就是最后选派的结果。 #includestdio.h void main() { int a,b,c,d,e,f; for(a=0;a=1;a++) for(b=0;b=1;b++) for(c=0;c=1;c++) for(d=0;d=1;d++) for(e=0;e=1;e++) for(f=0;f=1;f++) if((b+c==0||c==1)(c+d==1)(d+e==0||d+e==2)(a+b+f==2)
您可能关注的文档
- 《AutoCAD网络工程设计教程》任务1.1AutoCAD简介及基础设置.pptx
- 《AutoCAD网络工程设计教程》任务1.2直角坐标系统.pptx
- 《AutoCAD网络工程设计教程》任务1.3极坐标系统.pptx
- 《AutoCAD网络工程设计教程》任务2.1直线的绘制.pptx
- 《AutoCAD网络工程设计教程》任务2.2点的绘制.pptx
- 《AutoCAD网络工程设计教程》任务2.3多段线的绘制.pptx
- 《AutoCAD网络工程设计教程》任务2.4射线、构造线的绘制.pptx
- 《AutoCAD网络工程设计教程》任务2.5多线的绘制.pptx
- 《AutoCAD网络工程设计教程》任务2.6矩形的绘制.pptx
- 《AutoCAD网络工程设计教程》任务2.7正多边形的绘制.pptx
原创力文档


文档评论(0)