您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C-++-程序设计教程
1C++程序设计教程(第二版)第二章基本编程语句CHAPTER2BASICPROGRAMMINGSTATEMENTS清华大学出版社钱能2第二章内容1.说明语句(DeclarativeStatements)2.条件语句(ConditionStatements)3.循环语句(LoopStatements)4.循环设计(LoopDesigns)5.输入输出语句(Input/OutputStatements)6.转移语句(MoveStatements)7.再做循环设计(MoreLoopDesigns)31.说明语句(DeclarativeStatements)数据说明:求解问题所使用的数据是什么性质,进行什么运算,表达范围如何,必须预先说明说明方式:既要指明其名字,也要指明其是什么类型,还可以顺便初始化.如:inta;doubled=3.5;说明数据的另一个目的是创建一个所需大小的实体空间给该名字,以便存储所用的数据值若数据名字没有说明,使用其便是非法的4过程(函数)说明:求解中需要通过函数调用来实施求解时,便要对函数的性质进行说明,说明其返回类型,参数类型,参数个数函数说明分函数声明和函数定义两种:函数声明是说明函数的名字,函数的返回类型,以及函数的参数和个数.如:doublearea(doublera);函数定义是在函数声明的基础上,对整个实现过程进行详细定义.如:doublearea(doublera){returnra*ra*3.14;}5调用函数就是使用函数名字,使用名字前必须清楚名字的性质,所以必须先对函数进行声明.运行程序中,会涉及到被调用函数的执行,所以凡是被调用的函数都必须有函数定义,不管该定义在程序的什么位置.如:doublesphere();//声明intmain(){doubleresult=sphere();//调用cout“area:”result“\n”;}voidsphere(){//定义cout“Pleaseinputradius:”;doubler;cinr;returnr*r*3.14;}62.条件语句(ConditionStatements)if语句的两种形态:语句1条件语句1条件语句2是是否否7对应语句:if(ab)coutaendl;if(a==b)coutaendl;elsecoutbendl;8错综复杂时,必须注意两义性:if(x0)if(x50)cout”xisok.\n”;elsecout”xisnotok.\n”;正解:else从属于紧挨的ifif(x0){if(x50)cout”OK\n”;elsecout”NOTOK\n”;}误解:else从属于外面的ifif(x0){if(x50)cout”OK\n”;}elsecout”NOTOK\n”;9条件表达式:对于if(x)a=327981;elseb=327981;可表示为:x?a=327981:b=327981;如果a和b为同类型,则还可以:(x?a:b)=327981;10switch多分支语句:switch(整数表达式){casevalue1:语句1;break;casevalue2:语句2;break;…default:语句n;}等价于:if(整数表达式==value1)语句1;elseif(整数表达式==value2)语句2;…else语句n;}11虽然switch有等价的复合if表示,而且,分支判断值只能是整数,显得应用范围狭窄,但是switch在使用上的直观和灵活形式,使得其仍具有编程价值.如:break可选,甚至case可以重叠:casevalue1:语句1;casevalue2:语句2;casev1:casev2:casev3:语句;123.循环语句(LoopStatements)for循环结构:开始循环初始状态循环体状态修正条件判断未结束结束结束13对应语句为:for(inti=1;i=10;i++)cout”hello.\n”;循环初始状态条件判断状态修正循环体14每次循环体执行,都改变循环状态,直到条件不满足而终止.如,设置求和的初始值,交给循环计算,完成循环后,输出求和结果:intsum=0;for(inti=1;i=100;i++){sum=sum+i;}coutsumendl;循环开始循环结束15因为并不是所有循环都有明显的循环初始状态和状态修正的,所以,while循环是一种for循环的简洁形式.如,同样的求和:intsum=0,i=1;while(i=100)sum+=i++;coutsumendl;循环开始循环结束164.循环设计(LoopDesigns)(1)简单字符图形的双重循环MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM17分析方法:该图形一共10行,每一行增加一个字符,所以,应循环10次,每次输出一行,其循环模式为:for(inti=1;i=10;++i){输出第i行(循环)换行}行iM个数111222333444...10101018for(inti=1;i=10;++i){for(intj=1;j=i;++j)cout”M”;coutendl;}19(2)判断素数:(利用数学定律)m=i×j假定i≤j,则i2≤i×j=m≤j2即i2≤m≤j2即i≤√m≤jboolisPrime(intm){doublesqm=sqrt(m*1.0);for(inti=2;i=sqm;++i)if(m%i==0)returnfalse;returntrue;}205.输入输出语句(Input/OutputStatements)标准输出流:可以控制输出格式coutshowpos12;//+12couthex18”“showbase18;//120x12couthex255”“uppercase255;//ffFFcout123.0”“showpoint123.0;//123123.000cout(23)”“boolalpha(23);//0falsecoutfixed12345.678;//12345.678000coutscientific123456.678;//1.234568e+0521控制宽度和填充字符的操作是带参数的,注意width(n)为一次性操作,即第二次显示时将不再有效。默认为width(0),表示仅显示数值。例如:cout.width(5);cout.fill(‘S’);cout2323;//输出:SSS2323在头文件iomanip的支持下,还可以直接由操作:#includeiomanip…coutsetw(6)setfill(‘$’)27endl;//输出:$$$$2722文件流的输入出操作与标准输入出基本相同,只是需要以一定方式打开和关闭如,将文件a.in打开,逐行读入字符,输出到文件a.out:ifstreamin(“a.in”);ofstreamout(“a.out”);for(strings;getline(in,s);)outsendl;其中文件流读入操作总是伴随着状态返回,判断状态就可以确定文件是否正常读入,如getline(in,s)当读到文件尾时,便返回false,以使循环结束236.转移语句(MoveStatements)break除了用在switch之外,主要的是用在终结本次循环for(inti;;){for(;;){//...if(i==1)break;//...}a=1;//...}break跳到此处24continue一般是用条件判断执行的,通过反条件,可以免去continue的使用,所以,它用来构筑良好的程序风格for(intn=100;n=200;++n){if(n%3==0)continue;coutnendl;}免去continue的情形:for(intn=100;n=200;++n)if(n%3!=0)coutnendl;25goto的程序段除了系统跟踪和架构困难外,阅读也相对复杂:inta;gotoInit;Forward:a=a+1;Print:coutaendl;gotoDown;Init:a=1;gotoPrint;Down:if(a100)gotoForward;等价于:for(inti=1;i=100;++i)couti“\n”;26break语句的可取之处://用break语句的代码段boolflag=false;//用于做退出记号for(inti=1;i100;++i){for(intj=1;j100;++j)if(i*j==651){flag=true;break;}else{//...}if(flag)break;}//goto语句的代码段for(inti=1;i100;++i)for(intj=1;j100;++j){if(i*j==651)gotoEnd;//...}End:277.再做循环设计(MoreLoopDesigns)逻辑判断类的语句控制结构:for(所有可能情况){//可为多重循环if(条件1不满足)continue;if(条件2不满足)continue;//…if(条件n不满足)continue;输出所要的结果}28百鸡问题的例子:for(intc=1;c=13;++c)for(inth=1;h=18;++h)for(ints=1;s=96;++s){if(7*c+5*h+s/3-100)continue;if(c+h+s-100)continue;if(s%3)continue;coutCock:c,Hens:h,Chicks:100-c-hendl;}29级数逼近问题前后项之差与0的邻域(精度要求)的比较作为循环退出条件,是控制精度的必要方法项值计算由循环变量,根据通项公式,直接求第i项的值也可先给出第一项的值,然后反复根据前项求后项30求级数的例子:doublesum=0,item=1;for(intn=1;abs(item)1e-6;++n){item*=(-1.0)*(2*n-3)/(2*n-1);sum+=item;}coutPi=“setiosflags(ios::fixed)sum*4endl;7151314131C++程序设计教程(第二版)第三章数据类型CHAPTER3DATATYPES清华大学出版社钱能32数据类型:一定的数据在计算机的内部表示;该数据所表示的值的集合;在该数据上的一系列操作。内部数据类型:1.整型长整型,短整型,字符型,布尔型2.浮点型单精度,双精度33第三章内容1.整型(intTypes)2.整型子类(sub-intTypes)3.浮点型(Floating-PointType)4.C-串与string(C-string&string)5.数组(Arrays)6.向量(vectors)7.指针与引用(Pointer&References)341.整型(intTypes)整型数的内部表示:二进制补码位数既定的二进制补码运算没有加减的区别;对于溢出,只是简单的舍弃而不是错误整型数的表示范围:取决于二进制位数整型数的操作:+,-,*,/,%,,,=,=,!,^,,=,,=,==,^=,&,|,&=,|=,&&,||,&&=,||=,!=,=,+=,-=,*=,/=,%=,++,--,,,?:35编译器的机器字长总是与整型的位长有关.如:32位编译器的整型数一定为32位长整型字面值分八进制,十进制和十六进制不
本文标题:C-++-程序设计教程
链接地址:https://www.777doc.com/doc-5593214 .html