收藏 分销(赏)

C++语言第一课.doc

上传人:w****g 文档编号:2402006 上传时间:2024-05-29 格式:DOC 页数:22 大小:208.04KB 下载积分:10 金币
下载 相关 举报
C++语言第一课.doc_第1页
第1页 / 共22页
C++语言第一课.doc_第2页
第2页 / 共22页


点击查看更多>>
资源描述
(word完整版)C++语言第一课 1 初识C++语言 1.1 关于C++ C++是一种计算机通用的高级程序设计语言。 开始形成的是C语言,那些想建立更快更有效的代码的程序员非常欣赏C语言。但有一位名叫 Bjarne Stroustrup的人却不满足于仅仅是生产快速代码,他想创建面向对象的C语言编程。他开始对C语言的内核进行必要的修改,使其能满足面向对象模型的要求。C++从此产生. C++自诞生以来,经过开发和扩充已成一种完全成熟的编程语言。现在C++已由ANSI、BSI、DIN、其他几个国家标准机构和ISO定为标准。ISO标准于1997年11月4日经投票正式通过。 C++ 标准演变了许多年。C++模板是近几年来对此语言的一种扩展,模板是根据类型参数来产生函数和类的机制,有时也称模板为“参数化的类型”。使用模板,可以设计一个对许多类型的数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。标准模板库(Standard Tempalte Library,STL )就是基于这个C++语言扩展的. C++ 标准可分为两部分, C++语言本身和C++标准库。C++标准库提供了标准的输入/输出、字符串、容器(如矢量、列表和映射等)、非数值运算(如排序、搜索和合并等)和对数值计算的支持。应该说, C/C++包含了相对少的关键字,而且很多最有用的函数都来源于库。 C++标准库实现容器和算法的部分就是STL。 STL 是数据结构和算法的一个框架,数据结构包括矢量、列表和映射等,算法包括这些数据结构的查找、拷贝和排序等。1994年7月,ANSI/ISO C++标准委员会投票决定接受STL为C++标准库的一部分.STL的产生是为了满足通用性的设计目标,而不是为了提高性能. 1.1.1 C++的发展: C++程序设计语言是由来自AT&T 贝尔实现室的Bjarne Stroustrup设计和实现的,它兼具Simula语言在组织与设计方面的特性以及适用于系统程序设计的C语言特性。 C++最初的版本被称作“带类的C(C with classes)”,在1980年被第一次投入使用;当时它只支持系统程序设计和数据抽象技术. 支持面向对象程序设计的语言特性在1983年被加入C++;之后,面向对象设计方法和面向对象程序设计技术就逐渐进入了C++领域。 在1985年,C++ 第一次投入商业市场。 在1987至1989年间,支持范型程序设计的语言特性也被加进了C++ 随着若干独立开发的C++实现产品的出现和广泛应用,正式的C++标准化工作在1990年启动。标准化工作由ANSI(American National Standard Institute)以及后来加入的ISO(International Standards Organization)负责。1998年正式发布了C++语言的国际标准。 1.1.2 C++的开发环境: Visual Studio 6.0 这个虽然是Microsoft公司的老版本的开发环境,但是鉴于其后继版本Visual Studio.NET的庞大身躯,以及初学者并不那么高的功能要求,所以推荐这个开发环境给C++的初学者,供其学习C++的最基本的部分,比如C的那部分子集,当然你别指望他能够支持最新的C99标准。在日常的开发中,仍然有很多公司使用这个经典稳定的环境,比如笔者就看曾亲见有些公司将其编译器替换为GCC做手机开发之用. Visual Studio。NET 作为Microsoft公司官方正式发布的最新版本开发环境,其中有太多激动人心的功能.结合其最新的C++编译器.对于机器配置比较好的开发人员来说,使用这个开发环境将能满足其大部分的要求. Borland C++ Builder X C++BuilderX则是完全从C++的角度思考得出的一个功能丰富的IDE。其最大的特点是跨平台,跨编译器,多种Framework的集成,并且有一个WxWindows为基础的GUI设计器。尤其是采用了纯C++来重写了整个Framework,摒弃了以前令人无奈的版本.对于C++的开发来说,从编译器,到库,到功能集成都是非常理想的。可以预见,Borland C++ Builder X 2。0很值得C++爱好者期待。唯一令人难堪之处是作为一个C++的开发工具,其IDE是用Java写的,在配置不够理想的机器上请慎重考虑再安装. Dev C++ GCC是一个很好的编译器。在Windows上的C++编译器一直和标准有着一段距离的时候,GCC就是一个让Windows下开发者流口水的编译器。Dev-C++就是能够让GCC跑在Windows下的工具,作为集成开发环境,还提供了同专业IDE相媲美的语法高亮,代码提示,调试等功能。 由于使用Delphi开发,占用内存少,速度很快,比较适合轻量级的学习和使用. 1.2 Dev-cpp的环境 启动Dev—c++后的环境如下: 在这个环境中,编辑好源代码后,单击可以编译源代码,如果编译有错误,则列出错误,并停止编译,这个操作的快捷键为Ctrl+F9。 如果编译成功,则可以单击,运行编译好的程序. 当然,也可以单击,编译当前的程序并运行.这个操作的快捷键为F9。 一些有用的快捷键: Ctrl+y:删除当前行 Ctrl+n:新建源文件窗口 Insert:插入与改写状态切换 1.3 C++程序结构 1.3.1 Hello Word! 输入以下程序并编译、运行。 #include 〈iostream> using namespace std; int main() { cout〈<”Hello Word!”〈<endl; } 从这个mini程序可以看到C++程序的一般格式。注释如下: #include 〈iostream〉 //包含要使用的库函数。这里是输入输出功能。因为一个 //信息系统总要输入输出信息,所以基本上每个程序都会//包含它。 using namespace std; //把std名字空间打开,程序可以正确识别std中的名字了,//如cout,endl等(开盖子语句)。 int main() //主函数,执行入口,在最新标准中,它必须返回int //类型数据 { //函数的内容必须放在{}括号中 cout<〈”Hello Word!"<〈endl; //输出信息 } //函数结束 还可以看到,程序的语句必须用分号结束 在Dev-cpp中,执行后屏幕一闪,就回到编辑界面,怎样让程序等一会,让我们能看清执行结果。有两种方法: int main() { cout〈<"Hello Word!"〈<endl; getchar(); } 这种方法调用函数getchar(),它等待从命令行得到一个字符,回车结束。所以回车后回到编辑界面。 或: int main() { cout<〈”Hello Word!”<〈endl; system(“pause”); } 这种方法调用Windows中的cmd命令“pause”,按任意键回到编辑界面。 练习: (1)在Dev-cpp中编写代码,让它说一些你想说的话。注意,在它可以说中国话,只要把它放到英文的引号中就行. (2)编程序显示一首唐诗 (3)编程,用字符*组成一个3列5行的平行四边形 1.3.2 能说会算 放在引号中的内容会原样输出.如果不放在引号中呢?比如编程计算123×321. #include <iostream〉 using namespace std; int main() { cout〈<321*123〈〈endl; getchar(); } 可以看到,对于没有放到引号中的类型,C++会把这些内容作为表达式,计算并输出这个表达式的值。 练习: (1)计算半径为12的球的体积 (2)一元二次方程的系数分别为1 ,5,3,求这个方程的根。 C++中的常用算术运算符: 运算 C++中的运算符 + + - - × * ÷ / 求余数 % 1.3.3 变量 如果在Hello Word程序中,去掉引号,会发生什么.试一试。 对了,它把Hello看成了一个变量,并报告说Hello这个变量没有定义。C++是一种强类型语言,要求所有的变量都要先定义后使用. 定义变量的方法为: 类型名 变量名 如: int a; //定义一个变量,变量名为a,它的类型为整型 double c,d; //定义两个变量,变量名为c和d,它们的类型都为double int b=12; //定义一个变量,变量名为b,类型为整型,同时给变量b赋值,让变量b的值为 //12。 要改变一个变量的值,可以使用赋值号“=”,它的作用是:计算出等号右边的表达式的值,然后把这个结果赋值给等号右边的变量。如执行以下语句: b=-1; 可以让变量b的值为-1 C++常用基本数据类型 类型 说明 长度(字节) 表示范围 备注 char 字符型 1 —128~127 unsigned char 无符号字符 1 0~255 int 整型 4 约±21亿 unsigned int 无符号整型 4 0到约42亿 double 双精度型 8 约±10308 15位有效位 bool 布尔型 1 true和false 练习: (1)计算半径为12的球的体积,把球的半径保存在变量r中,把球的体积放到变量v中。 (2)一元二次方程的系数分别为1 ,5,3,求这个方程的根。把系数分别保存在变量a,b,c中。判别式结果保存在d中,根分别保存在x1和x2中。 (3)在第一题中,如果忘记给变量r赋值,会得到什么结果。为什么? (4)在第一题中,如果把变量v的类型设置成了int,会得到什么结果,为什么? (5)编写程序,输入三角形的三边,求三角形的面积。公式为: area=sqrt(s(s—a)(s-b)(s-c)) 其中s为半周长s=(a+b+c)/2 (6)运行如下的程序,会得到什么结果,想一想,为什么? int main() { int a=10000; int b=a*a*a; cout〈〈b〈〈endl; } 1.3.4 赋值语句 赋值,顾名思义,就是把一个值赋予某个量。可以这理解:变量相当于装东西的容器,赋值的过程就是把东西放进容器的过程。赋值语句格式如下:     变量=表达式;      写赋值语句有以下几点要注意:     1、赋值号“=”      赋值号是一个运算符.表示“把等号右边的表达式的值赋值给等号右边的变量”.它和数学中的符号一样,但含义却完全不一样. 比如,它显然没有交换律: a=b 不能写成 b=a a=b+c 如果写成 b+c=a还是一个语法错误.     2、赋值号两边的数据类型必须相同或相容 C++中的量不管是变量还是常量都有一个属性称为“数据类型"。数据类型相同的或相容的才可以相互赋值。 怎么来理解这句话呢?我们知识变量就是内存中指定的一些存储单元,可以把它想象成具有一定大小的盒子,它们能存储某些类型的数据。如果给的数据刚好能放到盒子里,当然没有问题.但如果你给的数据占用的空间超过了盒子的大小,就会出问题了。  对于数据类型相容的,可以这样理解。如果我们给的数据占用的空间小于盒子的空间,一般也可以勉强用,这就属于“相容”的情形,一般不会出错。但如果反过来,则盒子会装不下,会发生“溢出”,这就不行了,会出错。     因些,我们在写赋值语句时,要注意两边的类型是否匹配。   赋值语句的一般写法为: a=3 x=x+2 x=y/z 当一个变量既出现在表达式的左边又出现在右边时,可以缩写。如上面的表达式可写为: x+=2 x/=z 对于x=x+1或x=x—1的表达式来说,C/C++提供了更加简洁的写法, x++ x-- 练习: 1、 把一个整数的各位数字倒序输出。 1.3.5 做“通用”程序 在前面的学习中,我们只能算程序时就确定的数据。但常常有些数据在编程时是不知道具体值的。比如收银台程序就不能假定用户只能买1件201元的衣服。 在程序运行时,临时输入数据,可以用cin。比如计算球的体积的程序: int main() { int r,v; cin>>r; v=3.14*4/3*r*r*r; cout〈〈 v〈<endl; system(”pause"); } 练习: 1。输入两个数,放到变量a,b中,然后交换变量a,b的值,并输出 2。做一个自己的程序,当程序运行时输入数据,完成某个计算任务。 1.4 文件操作 1.4.1 建立文件流 举例: 编程计算两个数的和、差、积、商。 输入: 从文本文件jisuan.in读入数据.文件格式为:只有两个数,中间用空格分隔 如: 5 2 输出: 输出到文件jisuan。out中,格式为: 每行一个数,分别为和、差、积、商的结果. 如: 7 3 10 2.5 参考代码: #include <iostream〉 #include 〈fstream> using namespace std; int main() { int a,b; ifstream inf("jisuan。in”); //设置输入文件流inf并初始化 ofstream outf("jisuan.out"); ////设置输出文件流outf并初始化 inf〉〉a>>b; outf<<a+b〈<endl; outf<<a—b<〈endl; outf<〈a*b〈〈endl; outf<<a*1.0/b〈〈endl; } 1.4.2 用文件流替换标准输入输出流 同上面的问题,参考代码: #include 〈iostream> #include 〈fstream> using namespace std; int main() { int a,b; freopen("jisuan。in”,”rt",stdin); //把文件流重定向到标准输入流cin freopen(”jisuan。out”,”wt”,stdout); //把文件流重定向到标准输出流cout cin〉〉a>>b; cout〈〈a+b〈<endl; cout<〈a-b<<endl; cout〈〈a*b<<endl; cout〈〈a*1。0/b〈〈endl; } 练习: 已知物体的运动的初速度和加速度,可以求出物体经过一定时间运行的距离,其公式为: s=v0t*1/2*vt2 编程求物体的运行距离. 输入文件:juli.in 格式为:共有三行数据,每一行由空格分隔的三个数字组成,分别表示初速度,加速度和时间。 输出文件:juli。out 共三行,每行一个数,表示物体运行的距离. 1.5 流程控制 1.5.1 IF语句 条件语句用于响应一个条件的两个方面。 例如:今天如果下雨,我们就在家;否则(不下雨)我们就出去玩.。 用C++的IF语句可写成: if(天下雨) 在家; else 出去玩; IF语句的一般格式为: if (条件) { 分支一; } else { 分支二; } “分支一”和“分支二”表示当条件成立时和不成立分别要执行语句。执行过程为:如果条件成立(也称条件为真),那么程序执行分支一中的语句,否则(条件为假)程序执行分支二的语句。 图示: 注意: 1、条件语句的分支如果不只一个语句,需要用花括号括起来,组成一个复合语句。 2、在If语句中,else部分可以省略。此时的执行逻辑如下: 3、在IF语句中还可以嵌套IF语句,一般来说,把IF语句嵌套在else分支中。此时的写法形如: if(条件1) {    分支一   } else if(条件2) { 分支二 } else if(条件3) {    分支三 } else {    分支四 } 例1、输入两个数a,b,输出较大的数。 int void main() { int a,b; cin〉〉a〉>b; if (a〉b) cout<<a; else cout〈<b; } 条件由关系表达式组成,C++的关系运算符有: == (比较左右值是否相等) >  (比较左值是否大于右值) 〉= (比较左值是否大于或等于右值,也称为不小于) <  (比较左值是否小于右值) 〈=(比较左值是否小于或等于右值,也称为不大于) != (比较左右值是否不相等) 特别要注意,关系运算符的“等于",是由两个=组成。如果写成了一个,就成了赋值语句。要命的是,许多编译器并不报错,所以一定要小心。 关系运算的结果为逻辑值。 对于复杂的条件,需要用到逻辑运算符.逻辑运算的结果为逻辑值。 C++的逻辑运算符有三个: 符号 意思 例子 && 并且 (and) 条件1 && 条件2 || 或者 (or) 条件1  ||  条件2 ! 非 (not)  ! 条件  下面列出了 &&(与) 操作的所有可能条件及结果: 真 && 真 = 真 真 && 假 = 假 假 && 假 = 假  下面列出了 || (或)操作的所有可能条件及结果 真 || 真 = 真 真 || 假 = 真 假 || 假 = 假   以下则为 ! 操作: !真  = 假 !假  = 真  练习: 1、判断一个数是偶数或奇数。 2、判断一个字母是大写字母,小写字母,还是数字 3、程序运行时,输入三个数,把它们按从小到大的顺序输出。 输入文件threenum。in: 三个数,由空格分隔 输出文件threenum.out: 三个由空格分隔的从小到大的数 1.5.2 switch语句: 多级if。..else..。显然是为了那些可能需要进行多级判断才能做出选择的情况。C++为了简化多级判断,提供了switch语句。 switch 语句的格式: switch ( 整型或字符型变量 ) {      case 变量可能值1 :          分支一;          break;    case 变量可能值2 :          分支二;          break;    case 变量可能值3 :          分支三;          break;    。..    default :        最后分支; } 在 switch 的语法里,我们要学到4个关键字:switch、case 、break、default。 在switch ( 变量 )这一行里,变量只能是整型或字符型.程序先读出这个变量的值,然后在各个”case"里查找哪个值和这个变量相等,如果相等,就算条件成立,程序执行相应的分支,直到碰上break或者switch语句结束。 实例: 模拟网络调查,要求输出不同的选项,供网友选择(通过简单地输入数字),程序根据网友的选择,输出相应不同的结果。 #include 〈iostream〉 int main(int argc, char* argv[]) {   int fromWay;   cout <〈 "请通过输入序号,选择您如何来到本网站。” 〈< endl;   cout << ”1) —--— 通过搜索引擎” <〈 endl;   cout << "2) ---— 通过朋友介绍” << endl;   cout <〈 "3) ———- 通过报刊杂志” 〈< endl;   cout << ”4) —-—— 通过其它方法” <〈 endl;   cin 〉> fromWay;   switch (fromWay)   {     case 1 :        cout 〈< "您是通过搜索引擎来到本网站的.” << endl;        break;     case 2 :        cout 〈< ”您是通过朋友介绍来到本网站的。" 〈〈 endl;        break;     case 3 :        cout 〈〈 ”您是通过报刊杂志来到本网站的.” <〈 endl;        break;     case 4 :        cout << ”您是通过其它方法来到本网站的.” <〈 endl;        break;     default :        cout << "错误的选择!请输入1~4的数字做出选择。” <〈 endl;   }   getchar();    return 0; } 首先,int fromWay定义了一个整型变量,准备用来存储用户输入的选择。 程序将根据fromWay值,在下面的各个case中找到匹配的值。本例中switch带有四个case,值分别是1、2、3、4.如果输入的是2,所以程序进入下面这个case: case 2 :     cout 〈〈 "您是通过朋友介绍来到本网站的。” <〈 endl;     break; 程序打出”您是通过朋友介绍来到本网站的。” 这行内容。最后遇上 break;于是跳出整个switch语句。 同样的道理,如果用户输入的是其它的数,如1或3,则会进入相应的case 1 或 case 3分支。 但如果用户输入的数在所有的case 里都找不到时,会怎么样?比如,用户输入5.这种情况下,default分支将起作用,所有case里的值都不匹配时,switch进入default分支.如果连default也没有,那么程序在switch语句里什么也不做,直接完成switch语句. 看一看switch,case,break,default的中文意思,对理解前面的一切也会有帮助,它们分别是:开关,情况,中断,默认(值)。那么用一句话套起来的说法就是:根据开关值的不同,执行不同的情况,直到遇上中断;如果所有的情况都不符合开关值,那么就执行默认的分支。 关于switch中非常重要的几个注意点如下: 第一、switch( 整型或字符型变量 )中,变量的类型只能是整型和字符类型。它们包含 int,char。实型(浮点型)数就不行,例如: float a = 0。123; switch(a) //错误!a不是整型或字符类型变量。 {   .。.. } 第二、case之后可以是直接的常量数值,如例中的1、2、3、4,也可以是一个使用常量计算式,如2+2等,但不能是变量或带有变量的表达式,如 a * 2等.当然也不能是实型数,如4。1,或2.0 / 2 等。 switch(formWay) {    case 2—1 :  //正确      。..    case a—2 :  //错误      ...    case 2.0 :  //错误      ..。 } 另外,在case与常量值之后,需要一个冒号,注意不要疏忽。 实例: 从键盘上读入年和月,输出该月有多少天. 练习: 1、 铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0。15元计费;如超50公斤,超过部分每公斤加收0。10元。编一程序完成自动计费工作。 2、 输入a,b,c三个不同的数,将它们按由小到大的顺序输出. 3、 当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。编一程序完成分数的自动转换工作。转换规则如下:60分以下的为不合格;60到69分为合格;70到89分为良好;90分以上的为优秀。(提示:可以利用DIV运算来使程序更简明) 1.5.3 while循环语句 while循环语句的语法为: while(条件) { 需要循环执行的语句; } 即:如果条件成立,就一直执行。图示: 注意: ●如果开始就不成立,则循环中的语句一次也不会被执行 ●因为条件成立,就一直执行循环中的语句。所以在循环中一定要有语句能改变相关环境,让条件逐步不成立,以退出循环。 1.5.4 for循环语句 for循环在C/C++程序中用得最多,因为它的功能最强,使用最灵活。 for 循环的语法: for(初始化;循环条件;改变条件) { 循环体语句; } for的结构中,不仅提供了的“循环条件”的位置,同时也提供了初始化,和改变条件的位置。这三者虽然在同一行上,但并不是依次连接地执行。for循环的执行过程为: (1)初始化语句首先被执行(并且只被执行一次); (2)然后程序检查条件是否成立,如果成立就执行循环体中的语句,否则直接结束循环. (3)执行完一遍循环以后,程序执行“改变条件"语句. for循环也是可以嵌套的。 for循环执行过程示意: 初始化语句 循环条件 循环体语句 改变条件 No Yes 退出循环   1.5.5 do 。。. while 循环语句: do { 需要循环执行的语句; } while(条件); 和while循环最明显的区别在于do..。while循环中,判断是否继续循环的条件,放在最后。也就是说,就算是条件一开始就不成立,循环也要被执行一次. do.。。while中的条件和while循环中的条件一样是:“允许继续循环的条件",而不是“结束循环的条件”. do。。.while循环的流程图: 实例: 编程实现求从1到100的累加和: 用While实现: 用Do实现: 用For实现: 练习: 1、求n个数的和。 输入文件:qiuhe.in 格式为: 第一行为一个整数,表示要求n个整数的和。 第二行为n个由空格分开的整数. 输出文件:qiuhe。in 格式为: 一个数,表示n 个数的和。 2、从键盘输入一系列正整数,当输入0时,表示输入结束,输出这些数的和。 3、输出九九乘法口诀表 4、从键盘输入一个数,判断这个数是否是素数。 5、百钱百鸡问题: 公鸡每只5元,母鸡每只3元,小鸡三只1元,用100元钱买100只鸡,求公鸡,母鸡,小鸡的只数 6、编程输出以下等腰三角形: * ***   ***** ******* ********* 7、Nocomachns定理: 任何一个N3,一定可以表示成n个连续的奇数和。输入n(n<=100),输出n3对应的表达式。 8、验证哥德巴赫猜想:任何充分大的偶数都可由两个素数之和表示。将4到2000中的所有公偶数分别用两个素数之和表示出来。例如,S=8,则输出: 4=2+2 6=3+3 8=3+5 9、填写数字 设有下列算式: 求出口中的数字,假设被除数为y,除数为x,求出x,y的值。 1.5.6 break和continue语句 1、break的作用与用法: 循环就象绕圈子,比如,体育课,跑1200米,跑道一圈400米,所以我们要做的事就是一边跑一边在心里计数(当然要记数,否则老师万一少计一圈,我们可就玩完了),当计数到3圈时,“循环”结束。如果,我在跑步时不幸由于体力不支而晕倒……怎么办?有两种办法: ①一种是在判断是否继续循环的条件中加入新增条件的判断: 假设原来的循环表达为: while(已跑完的圈数 〈 3) { 跑一圈……; } 那么,加上附加条件后,循环表达为: while(已跑完的圈数 <3 && 我还跑得好好的) {   跑一圈…… } ②第二种方法是在循环中使用条件分支,在指定的条件成立时,中途跳出循环,用于实现跳出的关键字为:break。 while(已跑的圈数 〈 3 ) {   跑一圈……;   if(我身体感觉不妙)      break; } 在循环中,每跑完一圈,都检查一下自已是否感觉不妙,如果是则程序执行break,直接跳出while,而不管此时圈数是否到达3圈。 可能你会问:为什么要break呢?直接用原来的方法,在while处判断条件不是很好吗?break的长处在于,它可以在循环体内的任意位置进行判断。 2、多层循环中的break: break只能跳出当前层的循环,所以,如果有多层循环,则在内层的break跳出循环后,外层的循环还将继续。 前面说跑步的例子,一圈400米,我们每跑100检查一下是否有肚子疼什么的,如果疼得利害就break后不跑了。这和现实不符,我们应该每跑一步就检查一次是否肚子疼最合理。 一圈得分成几步呢?显然不能再像上面分成四次检查那样写代码了,我们加一层循环,也就是把跑一圈的工作用一个循环来实现: while(一圈未结束) {   跑一步; } 然后,我们在每跑完一步时加入一个判断: while(一圈未完) { 跑一步;   if(我身体感觉不妙)      break; } 把这跑一圈的代码加入外层循环: while(已跑完图数 < 3) {     while(一圈未完)     { 跑一步;        if(我身体感觉不妙)            break;      } } 外层的while用于负责一圈一圈循环跑完三圈,内层的while用于负责一步一步地循环跑完一圈,同时负责每跑一步就检查是否身体不妙,若身体不舒服,就跳出循环不跑了。看起来代码很完美,其实BUG已经产生:问题就在那个break,当“我身体感觉不妙”后,程序遇上break后跳出内层while,落入外层的while;外层的循环可没有被break,所以程序将继续外层的循环。假如你跑第一圈跑了一半时肚子疼,按照这段程序逻辑,那好这第一圈剩下的一半你可以不用跑了,但后面的两圈你还得继续。 解决的第一种方法是: while(已跑完图数 < 3) {     while(一圈未完)     { 跑一步;        if(我身体感觉不妙)            break;      }      if(我身体感觉不妙)          break; } 我们在外层也进行了一次判断,这样当然就可保证从内层跳出来后,外层的循环也被跳出,但在内层已经做过一次“感觉”的情况下,外层还要重新“感觉”一次,这种代码让人不爽,所以我们可以加一个变量,用于记住现在的身体状态: bool needBreak = false; //是否需要跳出循环 while(已跑完图数 < 3 && needBreak==false) {     while(一圈未完)     { 跑一步;        if(我身体感觉不妙)        {           needBreak = true; //做一标志,需要break;            break;      } 3、continue: continue汉意为继续,它的作用及用法和break类似,重要区别在于,当前循环遇到break是直接结束循环,而若遇上continue,则是停步当前这一遍循环,然后直接尝试下一遍循环。我把“尝试”加粗以引起注意,为什么要注意原因后面再说,请先看下面关于break和continue的对比: continue并不结束整个循环,而仅仅是中断的这一遍循环,然后跳到循环条件处,继续下一遍的循环,当然,如果跳到循环条件处,发现条件已不成立,那么循环也将结束,所以我们称为:尝试下一遍循环. 例二:求整数1~100的累加值,但要求跳过所有个位为3的数. 分析:在循环中加一个判断,如果是该数个位是3,就跳过该数不加。 int sum = 0; for(int i = 1; i〈=100;i++) {    if( i % 10 == 3)       continue;    sum += i; } cout 〈< sum <〈 endl; 透过完成上述工作,使我认识到一个称职的管理人员应当具有良好的语言表达潜力、流畅的文字写作潜力、较强的组织领导潜力、灵活的处理问题潜力、有效的对外联系潜力、大型活动的策划及筹备潜力。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服