Visual C++ 2010- 程序流程
更新时间:2024-07-07 05:56:01 阅读量: 综合文库 文档下载
- visual推荐度:
- 相关推荐
八、程序流程
1、循环
循环鼻祖:goto
计算机科学发展的早期,程序糟糕、粗糙而简短。循环由标签、语句和跳转组成。 在C++中,标签是后面跟冒号(:)的名称。标签放在合法C++语句的左边,跳转是通过在关键字goto后面加上标签的名称来实现的。
//此程序用于演示使用关键字goto实现循环 #include
a、作为一条原则,程序员应当避免使用goto语句。
2、使用while循环
只要条件为真,while循环将使程序重复执行一段代码。
//此程序用于演示使用while循环 #include
using namespace std;
cout<<\< cout<<\< goto loop; using namespace std; int counter=0; int counter=0; while(counter<5) { } cout<<\< 如果不小心在循环后面加上分号,如: int counter; while(counter<5); counter++; 在这个例子中,counter永远不会被执行。 while语句语法: while(condition) statement; condition可以是任何C++表达式,statement可以是任何合法的C++语句或语句块。如果condition为真,将执行statement,然后再次测试condition。这一过程将不断重复下去,直到condition为假为止。此时while循环将终止,接着执行statement后面的第一句语句。 continue和break: 有时候需要在执行while循环体中所有语句之前返回到while循环的开头。continue语句用于跳转到循环的开头。 而有时候需要在满足循环退出条件之前跳出循环。break语句立即跳出while循环,继续执行右大括号后的语句。 //此程序用于演示break的用法 #include int n; counter++; cout<<\< } for(n=100;n>=1;n--) if(n%7==0) { } return 0; std::cout<<\以内能被7整除的最大数为:\< //此程序用于演示continue的用法 #include break语句语法: while(condition1) { if(condition2) break; //statement } continue语句语法: while(condition1) { if(condition2) int n; std::cout<<\之间能被13整除的数有:\; for(n=100;n<=200;n++) { if(n!=0) } std::cout<<\; return 0; continue; std::cout< continue; //statement } while(true)循环: while循环测试的条件可以是任何合法的C++表达式。只要条件为真,while循环将继续执行可以将true作为测试条件来创建永不结束的循环。 //此程序用于演示while true循环 #include 3、实现do...while循环 while循环体可能永远都不会执行。while语句在执行循环体之前检查条件,如果条件为假,将跳过整个while循环体。 //跳过while循环体 #include while(counter>0) { int counter; std::cout<<\; std::cin>>counter; int counter=0; while(true) { } std::cout<<\< counter++; if(counter>10) break; } std::cout<<\; counter--; std::cout<<\< How many Hellos?:2 Hello! Hello! Counter is Output:0 输出: How many Hellos?:0 Counter is Output:0 如果希望至少打印Hello一次,可在while循环之前加上下面的if语句: if(counter<1) Counter=1; 但这种做法被程序员称为“拙作(kludge)”,是一种既难看又不雅的解决方案。 4、使用do...while do...while循环在测试条件前执行循环体,从而确保循环体至少被执行一次。 //do...while循环 #include using namespace std; int counter; cout<<\; cin>>counter; do { cout<<\; counter--; return 0; } }while(counter>0); cout<<\< 输出: How many Hellos?:0 Hello! Counter is:-1 do...while语句语法: do statement while(condition); 首先执行statement,然后计算condition。如果condition为真,就执行循环;否则终止循环。 注意: a、如果需要确保循环至少执行一次; b、要确保初始条件为假时不执行循环体,使用while循环; c、除非可确保代码的功能清晰易懂,否则不要再循环中使用break和continue。总会有更清晰的方法来完成同样的任务; d、不要使用goto语句。 5、for循环 使用while循环进行编程时通常需要3步:设置初始条件、测试条件是否为真、在每次循环中修改条件变量。for循环将这3个步骤(初始化、测试和递增或递减)合并到一条语句中。for语句由关键字for和一对括号组成,括号中是3条用分号分隔的语句: for(initialization;test;action) { } initialization为初始条件(初始化),可以是任何合法的C++语句,但通常用于创建并初始化一个计数变量。test进行测试,可以是任何合法的C++表达式,其功能与while循环中的条件相同。action是要执行的操作,虽然可以是任何合法的C++语句,但其通常是将计数变量递增或递减。 ... //此程序用于演示for循环 #include for语句语法: for(initialization;test;action) Statement; initialization语句用来初始化计数变量或为循环作准备。test可以是任何合法的C++表达式,每次循环都将对其进行测试。如果test为真,就执行for循环体,然后执行action语句(通常是对计数器进行递增或递减)。 高级for语句: a、对多条语句进行初始化和递增 初始化多个变量、测试复合逻辑表达式、执行多条语句的情况很常见。initialization语句和action语句可以是用逗号分隔的多条C++语句。 //此程序用于演示for循环 #include b、在for语句中使用空语句 for语句中的任何一条语句都可以省略。通过使用空语句,可以省略for语句中的第一和第三个子句,创建一个行为与while循环相同的for循环。空语句用分号表示。 for(int i=1,j=0;i<5;i++,j++) std::cout<<\< for(counter=0;counter<5;counter++) std::cout<<\ \; std::cout<<\< //此程序用于演示在for语句中使用空语句 #include 这种用法不常用,这个程序只是用来演示for循环的灵活性。 c、空的for语句 //此程序用于演示空的for语句 #include int counter=0; int max; std::cout<<\; std::cin>>max; for(;;) { } return 0; if(counter break; std::cout<<\ \< int counter=0; for(;counter<5;)//等价于while(counter<5) { } std::cout<<\< counter++; std::cout<<\ \; 该for语句被简化到极致,省略了初始化、测试和操作部分。虽然这个程序看起来有些荒谬,但有时候确实需要使用for(;;)或while(true)。 d、空for循环 由于在for循环头中可以做很多事,有时候不需要循环体做任何事。这种情况下,必须在循环体中使用空语句(;)。分号可以与循环头位于同一行,但这样容易被人忽略。 //此程序用于演示在for循环中使用 #include 在循环体中没有什么可以做,因此使用空语句(;)。但这不是一个良好设计的for循环:操作语句执行的操作太多。较好的做法是: for(int i=0;i<5;i++) e、循环嵌套 任何循环都可以嵌套到另一个循环中。外层循环没执行一次,内层循环将完整执行一遍。 //此程序用于演示嵌套for循环 //打印9*9乘法表 #include using namespace std; int i,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { } cout< cout<<\ for(int i=0;i<5;std::cout<<\< ; return 0; } } cout< return 0; 6、使用switch语句控制程序流程 如果if和if...else语句嵌套过深,这些语句很容易令人迷惑,C++提供了一种替代品。if语句只能处理一种取值,而switch语句能够为多个取值提供不同的分支。switch语句的通用格式如下: switch(expression) { case valueOne:statement; break; case valueTwo:statement; break; ...... case valueN:statement; break; default: } 其中expression可以是任何合法的C++表达式,statement可以是任何合法的C++语句或语句块。注意case值必须是整数或者结果为整数的表达式,在这种表达式中不能使用关系运算符或bool运算符。 如果某个case值与表达式匹配,程序跳转到该case后面的语句处执行,知道遇到break语句或到达switch语句块末尾为止。如果没有匹配的值,程序跳转到默认(default)分支处执行。如果既没有匹配的值,也没有默认分支,程序将跳出switch语句。 注意: a、如果根本不需要default分支,可使用它来检测不可能出现的情况,并打印错误消息。这对调试很有帮助。 b、如果case语句后面没有break语句,程序将执行下一条case语句,虽然有时候需要这样做,但通常是错误的。如果需要让程序继续执行下去,请用注释来指出你并非忘记了使用break。 //此程序用于演示switch语句的用法 #include statement; { } switch语句的语法: switch(expression) { case valueOne:statement; break; case valueTwo:statement; break; ...... case valueN:statement; break; default: statement; using namespace std; unsigned short int number; cout<<\请输入今天是一周中的第几天?\; cin>>number; switch(number) { case 1:cout<<\今天是星期一!\; } cout< break; break; break; break; break; break; break; case 2:cout<<\今天是星期二!\; case 3:cout<<\今天是星期三!\; case 4:cout<<\今天是星期四!\; case 5:cout<<\今天是星期五!\; case 6:cout<<\今天是星期六!\; case 7:cout<<\今天是星期天!\; default:cout<<\输入有误!\; } switch语句让你能够为多个值提供不同的分支。它计算表达式的值,如果与某个case值匹配,就跳到该行执行。然后继续执行,知道到达switch语句的结尾或遇到break语句为止。如果表达式和任何case值都不匹配,且有默认语句,则执行默认语句;否则结束switch语句。 使用switch语句来处理菜单: //此程序用于使用switch语句来处理菜单 #include bool exit=false; for(;;) { int choice=menu();//调用menu函数,向屏幕打印菜单并返回用户的选择 switch(choice) { case (1): DoTasks(1); break; DoTasks(2); break; DoTasks(3); break; continue;//避免了对exit的测试 break; exit=true; break; cout<<\请重新选择!\< case (2): case (3): case (4): case (5): default: } } } break; if(exit==true) break; return 0; int menu() { } void DoTasks(int which) { } 在该程序中死循环被用来提供菜单,要求用户进行选择,然后根据用户的选择执行相应的操作,并返回到菜单。循环将不断执行,直到用户选择退出。死循环是没有退出条件的循环。要退出循环,必须使用break语句。 注意: a、没有在case语句中使用break时,一定要对其原因进行说明。 if(which==1) cout<<\做任务 1\< cout<<\ 菜单 ****\< b、在switch语句中一定要使用default,哪怕只是为了检查看似不可能的情形。 c、如果更清晰的switch语句可行,不要使用复杂的if...else语句。 d、别忘了在每个case的末尾加上break语句,除非你希望继续执行下去。 —q83831295
正在阅读:
物业管理服务手册10-26
安全生产管理知识考试题16p - 图文01-11
梨花作文350字07-12
科研楼使用管理办法- 北京大学第一医院!10-24
我的大学梦想手抄报图02-12
《企业会计准则第14号——收入》解读06-20
书写你想要的样子作文600字06-25
温馨的小屋(机电124 吴亚军)04-15
教师自我反思 - 每日十问(2种版本)09-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 流程
- 程序
- Visual
- 2010
- 2009年广东省佛山市高中阶段学校招生考试数学试题
- 大众FANUC机器人操作标准 - 图文
- 人教版高中地理《选修三 旅游地理》精品教案全套 - 图文
- 设备检修规程
- 第一课 中国人民站起来了 导学案
- 关帝灵签解签大全17—32
- 数字XX城市数据中心设计方案 - 图文
- 世界史复习题一
- 小学二年级下册体育教案全集(34课时)
- 我国个人住房抵押贷款风险管理研究 - 图文
- 煤矿企业综合管理信息系统技术研究报告
- extjs6学习
- 素质拓展活动策划书
- 结构力学教案 第2章 平面体系的几何组成分析
- 社会调查报告幼儿教师社会地位调查
- 展现伟人风采 感悟领袖情怀
- 中国电信的SWOT分析
- 840D系统补偿功能汇总
- 第5讲 图形的分割
- 直线电机的原理及应用(实例图示)