C++关键字

上传人:微*** 文档编号:171643564 上传时间:2022-11-28 格式:DOCX 页数:68 大小:91.15KB
收藏 版权申诉 举报 下载
C++关键字_第1页
第1页 / 共68页
C++关键字_第2页
第2页 / 共68页
C++关键字_第3页
第3页 / 共68页
资源描述:

《C++关键字》由会员分享,可在线阅读,更多相关《C++关键字(68页珍藏版)》请在装配图网上搜索。

1、C/C+语言全部关键字解释C语言32个关键字解释C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。!数据类型关键字(12个):(1) char :声明字符型变量或函数(2) double :声明双精度变量或函数(3) enum :声明枚举类型(4) float:声明浮点型变量或函数(5) int:声明整型变量或函数(6) long :声明长整型变量或函数(7) short :声明短整型变量或函数(8) signed:声明有符号类型变量或函数(9) struct:声明结构体变量或函数(10) union:声明联合数据类型(11)

2、unsigned:声明无符号类型变量或函数(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)(2)控制语句关键字(12个):A循环语句(1) for:种循环语句(可意会不可言传)(2) do :循环语句的循环体(3) while :循环语句的循环条件(4) break:跳出当前循环(5) continue:结束当前循环,开始下轮循环B条件语句(l)if:条件语句(2)else :条件语句否定分支(与if连用)(3) goto:无条件跳转语句C开关语句(1) switch :用于开关语句(2) case:开关语句分支(3)default:开关语句中的“其他”分支

3、D return :子程序返回语句(可以带参数,也看不带参数)3存储类型关键字(4个)(Dauto :声明自动变量一般不使用(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)(3)register:声明积存器变量(4) static :声明静态变量4其它关键字(4个):(1)const :声明只读变量(2)sizeof:计算数据类型长度(3)typedef :用以给数据类型取别名(当然还有其他作用(4)volatile:说明变量在程序执行中可被隐含地改变char 8 int 16long 32float 32double 64这是占的位数bit1 Byte=8 bit除以8

4、就是字节数byteC语言32个关键字解释(color=TealC语言小知识:/color)auto !声明自动变量一般不使用double :声明双精度变量或函数int:声明整型变量或函数struct:声明结构体变量或函数break:跳出当前循环else :条件语句否定分支(与if连用)long :声明长整型变量或函数switch :用于开关语句case:开关语句分支enum :声明枚举类型register:声明积存器变量typedef:用以给数据类型取别名(当然还有其他作用)char :声明字符型变量或函数extern:声明变量是在其他文件正声明(也可以看做是引用变量)return :子程序返

5、回语句(可以带参数,也看不带参数)union:声明联合数据类型const :声明只读变量float:声明浮点型变量或函数short :声明短整型变量或函数unsigned:声明无符号类型变量或函数continue:结束当前循环,开始下轮循环for:种循环语句(可意会不可言传)signed:生命有符号类型变量或函数void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支goto:无条件跳转语句sizeof:计算数据类型长度volatile:说明变量在程序执行中可被隐含地改变do :循环语句的循环体while :循环语句的循环条件stati

6、c :声明静态变量if:条件语句C+全部关键字说明(l)auto这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。(2)register这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。(3)static常见的两种用途:1统计函数被调用的次数;2减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在些含有较多的变量并且被经常调用的函数中,可以将一些数组声明

7、为 static类型,以减少建立或者初始化这些变量的开销.详细说明:IX变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。2X变量用static告知编译器自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。3当static用来修饰全局变量时,它就改变了全局变量的作用域,使其不能被别的程序extern,限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。使用注意:1若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;2若全局变量仅由单个函数访问,则可以将这个变量改为该函数

8、的静态局部变量,以降低模块间的耦合度;3设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题(只要输入数据相同就应产生相同的输出)(4) const 被const修饰的东西都受到强制保护,可以预防意外的变动,能提髙程序的健壮性。它可以修饰函数的参数、返回值,甚至函数的定义体。作用:1修饰输入参数a.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用传递”,目的是提高效率。例如将void Func (A a)改为 void Func (const A &a)b.对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达

9、不到提高效率的目的,又降低了函数的可理解性。例如void Func(int x)不应该改为void Func (const int &x)2用const修饰函数的返回值a.如果给以“指针传递”方式的函数返回值加const修饰那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。如对于:const char * GetString(void);如下语句将出现编译错误:char *str = GetStringO ;/cannot convert from J const char *to char *;正确的用法是:const char *str = Get

10、StringO ;b.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const修饰没有任何价值。如不要把函数 int Getlnt (void)写成 const int Getlnt (void)3const成员函数的声明中,const关键字只能放在函数声明的尾部,表示该类成员不修改对象.说明:const type m;修饰m为不可改变示例:typedef char * pStr;新的类型 pStr;char string41=abc ;const char *pl = string;pl+;正确,上边修饰的是pl, pl可变 const pStr p2=

11、string; p2+;错误,上边修饰的是p2, p2不可变,*p2可变同理,const修饰指针时用此原则判断就不会混淆了。const int *value:*value 不可变,value 可变int* const value;value 不可变,*value 可变const (int *) value;/(int *)是种 type, value 不可变,*value 可变逻辑上这样理解,编译不能通过,需要tydef int* NewType; const int* const value;*value, value 都、可变(5)volatile表明某个变量的值可能在外部被改变,优化器在

12、用到这个变量时必须每次都小心地重新读取这个变量的值而不是使用保存在寄存器里的备份。它可以适用于基础类型如:int, char, long也适用于C的结构和C+的类。当对结构或者类对象使用volatile修饰的时候,结构或者类的所有成员都会被视为volatile.该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同个变量可能被多个线程修改,而程序通过该变量同步各个线程。简单示例:DWORD stdcall threadFunc(LPVOID signal) int* intSignal=reinterpret_cast(signal);*intSignal=2;while (*intSi

13、gnal!=1)sleep(1000);return 0;)该线程启动时将intSignal置为2然后循环等待直到intSignal为1时退出。显然intSignal的值必须在外部被改变,否则该线程不会退出。但是实际运行的时候该线程却不会退出,即使在外部将它的值改为1,看一下对应的伪汇编代码就明白了: mov ax, signallabel:if(ax!=l)goto label对于C编译器来说,它并不知道这个值会被其他线程修改。自然就把它cache在寄存器里面。C编译器是没有线程概念的,这时候就需要用到volatile。volatile的本意是指:这个值可能会在当前线程外部被改变。也就是说,

14、我们要在threadFunc中的intSignal前面加上volatile关键字,这时候编译器知道该变量的值会在外部改变,因此每次访问该变量时会重新读取,所作的循环变为如下面伪码所示:label: mov ax, signal if(ax!=l)goto label注意:个参数既可以是const同时是volatile,是 volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。(6)extern extern意为外来的” ,它的作用在于告诉编译器:有这个变量,它可能不存在当前的文件中,但它肯定要存在于程中的某个源文件中或者个D11的输出中。C+关键字(不同于 c的

15、关键字)1 . C+包含的类型:bool true false2 .类型声明所用到的关键字classpublicprivateprotectedfriendmutableexplicitthis3 .虚拟与多态以及rtti virtual typeidOstatic_cast()dynamic_cast()reinterpret_cast()4 .泛型编程相关templateOtypename5 .全局函数和成员函数相关inline6 .堆管理newdelete7 .异常处理trycatch ()throw ()编辑本段电脑语言用语关键字是用来标识文件中各个记录的特定数据项目的值。关键字是电脑

16、语言里事先定义的,有特别意义的标识符,有时又叫保留字。系统定义了以下关键字:Const (常数)Dim (定义)As (为)Mod (取模)And(并且)Or(或者)Not(非)If (如果)Then(那么)Else (否则)Stop (停止)End (结束)Select (选择)Case (条件)Is (是)For (计数)To 侄(J) Step (步长)Byref (传址)Byval (传值)Sub (子程序)Function(函数)Exit (退出)Do(做)Loop(循环)Until (除非)While(当)Wend(当结束)Let (让)Call (调用)Rem (注释)Integ

17、er(整数)Long(长整数)Single(单精度小数) Double(双精度,小数)Boolean(布尔)String(字符串,文字)Me(我)Private(私有)Public(公共)注意:vb里名称与关键字不区分字母的大小写;在c语言里,一切都是小写字母C, C+, java语言关键字调查统计:C, C+, JAVA共有的关键字22个int char float double short longif elseswitch case defaultfor while dovoid returncontinue breakconst goto (JAVA中未用,但是保留字)volatile

18、 staticC 和 C+共有的关键字(除三者共有)一一10个unsigned signedstruct enum unionauto register externsizeof typedefC+和JAVA共有的关键字11个(9个)class new public private protected this try throw catch(true false)C+#有的关键字(除JAVA和其共有的)20个asm bool explicit export friend inline mutableoperator templatetypeid virtual warch_t delete

19、namespace typename using const_cast dynamic_cast reinterpret_cast static_cast JAVA特有的关键字(除C+和其共有的)17个abstract boolean byte extends final finally implements import instanceof interfacenative package super synchronized throws transient strictfpnull (仅在java用,类似true和false不是关键字)所以说:C有22+10=32个关键字C+有22+10

20、+11+20=63个关键字JAVA有22+9+17=48个关键字C+关键字详细解释auto break case chat class const continue default delete do double elsegoto if inline intlong mutablenew operator privateprotected public registerreturn shortsignedsizeof static static_caststruct switch this typedef union unsigned virtual viod whileC+语言关键字asm

21、doifreturntryautodoubleinlineshorttypedefbooldynamic_castintsignedtypeidbreakelselongsizeoftypenamecaseenummutablestaticunioncatchexplicitnamespacestatic_castunsignedcharexportnewstructusingclassexternoperatorswitchvirtualconstfalseprivatetemplatevoidconst_castf loatprotectedthisvolatilecontinueforp

22、ublicthrowwchar_tdefaultfriendregistertruewhiledeletegotoreinterpret.cas t关键字是预先保留的标识符,每个关键字都有特殊的含义。我们不能在程序中使用与关键字同名的标识符。以下是C+所保留的关键字全集。(l)asmasm已经被asm替代了,用于汇编语言嵌入在C/C+程序里编程,从而在某些方面优化代码.虽然用asm关键字编译时编译器不会报错,但是asm模块的代码是没有意义的.(2)auto这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。

23、这个关键字不怎么多写,因为所有的变量默认就是auto 的。(3)bad_cast, const_cast, dynamic_cast, reinterpret_cast, st atic_cast(4)bad_typeid也是用于异常处理的,当typeid操作符的操作数typeid为Null指针时抛出。(5)bool不用多说了吧,声明布尔类型的变量或函数.(6)break跳出当前循环.(7)caseswitch语句分支.(8) catch, throw, try都是异常处理的语句。(9)char 声明字符型变量或函数.(10)class声明或定义类或者类的对象.(11)const被const修

24、饰的东西都受到强制保护,可以预防意外的变动,能提髙程序的健壮性它可以修饰函数的参数返回值甚至函数的定义依作用:1 .修饰输入参数a.对于非内部数据类型的输入参数应该将“值传递”的方式改为“const引用传递”,目的是提髙效率。例如将 void Func (A a)改为 void Func (const A &a)。b.对于内部数据类型的输入参数不要将“值传递”的方式改为“const引用传递”。否则既达不到提髙效率的目的,又降低了函数的可理解性。例如void Func (int x)不应该改为 void Func (const int&x)2 .用const修饰函数的返回值a.如果给以“指针传递

25、”方式的函数返回值加const修饰那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。如对于:const char * GetString(void);如下语句将出现编译错误:char *str = GetStringO ;/cannot convert from J const char *to char ;正确的用法是:const char *str = GetStringO ;b.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const修饰没有任何价值。如不要把函数int Getlnt (void)写成 const

26、 int Getlnt(void)3 . const成员函数的声明中,const关键字只能放在函数声明的尾部,表示该类成员不修改对象.说明:const type m;修饰m为不可改变示例:typedef char * pStr;新的类型 pStr;char string4=abc;const char *pl = string;pl+;正确,上边修饰的是pl, pl可变const pStr p2= string;p2+;错误,上边修饰的是p2, p2不可变,*p2可变同理,const修饰指针时用此原则判断就不会混淆了。const int *value;value 不可变,value 可变int

27、* const value;value 不可变,*value 可变const (int *) value;/(int *)是种 type, value 不可变,*value可变逻辑上这样理解,编译不能通过,需要tydef int* NewType;const int* const value;value, value 都、可变(12)continue结束当前循环,开始下轮循环.(13)defaultswitch语句中的默认分支.(14)delete经常用于动态内存分配的语句。(15)do在do-while循环结构中开始循环体。(16)double声明双精度变量或函数.(17)else条件语句否

28、定分支(与if连用).(18)enum声明枚举类型.(19)explicit这个关键字声明说明符,可以只适用于同类构造函数声明。显式构造函数不能在隐式转换的一部分。它只能用于显式构造个对象。(20)exportMSDN 只说 The export keyword is not supported on templates.种导出语句吧.(21)extern(22) false, true bool类型的两个枚举值.(23)float 声明浮点型变量或函数.(24) for 种循环语句。(25)friend 声明友元函数或者类。(26)goto 无条件跳转语句。(27) if 条件语句。常与el

29、se 一起用。(28)inline声明定义内联函数,编译时将所调用的代码嵌入到主函数中。(29)int声明整型变量或函数.(30) long声明长整型变量或函数.(31) mutable这个关键字只适用于非静态和非const数据类成员。如果个声明数据成员是可变的,那么它在const成员函数的赋值是合法。(32)namespace动态导入到文档中的元素行为c+中 using name space std(33)new动态内存分配。返回一个适当类型、非零对象的指针(34)operator(35-37)private, protected, public类私有/保护/公有函数和数据成员的标示.(38

30、)register声明寄存器变量.(39)return子程序返回语句(可以带参数,也看不带参数),返回函数调用点。(40)short声明短整型变量或函数.(41)signed, unsigned声明有符号类型变量或函数;声明无符号类型变量或函数.(42)static声明静态变量.(43)struct声明结构体变量或函数.(44)switch条件选择(45)template模板.(46)this访问类,结构或者联合的非静态成员函数。(47)typedef用以给数据类型取别名.(48)typeid 用于获取个在编译时类型的类型(49)typename仅在模板中使用,告诉编译器是个未知的type。(

31、50)union声明联合数据类型.(51) using(52)virtual声明虚基类或虚函数。(53)void声明函数无返回值或无参数,声明无类型指针.(54)volatile(55)wchar_t宽字.(56)while循环语句的循环条件(57)class类C+语言中const关键字的详细使用解释生中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const是空中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一 Const 作用如下表所示:No.作用

32、说明参考代码1可以定义const常量const int Max =100;2便于进行类型检查const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检査,而对后者只进行字符替换,没有类型安全检査,并且在字符替换时可能会产生意料不到的错误void f (const int i)对传入的参数进行类型检查,不匹配进行提示3可以保护被修饰的东西防止意外的修改,增强程序的健壮性。void f (const int i) i=10;/error!如果在函数体内修改了 i,编译器就会报错4可以很方便地进行参数的调整和修改同宏定义样,可以做到不变则已,变都变5为函数重载提供了一个参考 cl

33、ass Avoid f (int i)个函数void f (int i) const 上一个函数的重载;6可以节省空间,避免不必要的内存分配const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝ttdefine PI 3.14159常量宏const doulbe Pi=3.14159;此时并未将 Pi 放入 ROM 中 double i=Pi;此时为Pi分配内存,以后不再分配!double I=PI;编译期间进行宏替换,分配内存double j=

34、Pi;没有内存分配 double尸PI;再进行宏替换,又一次分配内存!7提高了效率编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很髙二、Const的使用1、定义常量(l)const修饰变量,以下两种定义形式在本质上是样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。TYPE const ValueName = value;const TYPE ValueName = value;(2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作

35、为声明,编译器认为在程序其他地方进行了定义.extend const int ValueName = value;2、指针使用CONST(1)指针本身是常量不可变(char*) const pContent;const (char*) pContent;(2)指针所指向的内容是常量不可变const (char)*pContent;(char) const *pContent;(3)两者都不可变const char* const pContent;(4)还有其中区别方法,沿着号划一条线:如果const位于的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于的右侧

36、,const就是修饰指针本身,即指针本身是常量。3、函数中使用CONST(1) const修饰函数参数a.传递过来的参数在函数内不可以改变(无意义,因为Var 本身就是形参)void function(const int Var);b.参数指针所指内容为常量不可变void function(const char* Var);c.参数指针本身为常量不可变(也无意义,因为char* Var 也是形参)void function(char* const Var);d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:void function (const Class& Var);引用参数在函数

37、内不可以改变void function (const TYPE& Var);引用参数在函数内为常量不可变这样的个const引用传递和最普通的函数按值传递的效果是模样的,他禁止对引用的对象的一切修改,唯一不同的是按值传递会先建立一个类对象的副本,然后传递过去,而它直接传递地址,所以这种传递比按值传递更有效.另外只有引用的const传递可以传递个临时对象,因为临时对象都是const属性,且是不可见的,他短时间存在个局部域中,所以不能使用指针,只有引用的const传递能够捕捉到这个家伙.(2) const修饰函数返回值const修饰函数返回值其实用的并不是很多,它的含义和 const修饰普通变量以及

38、指针的含义基本相同。a. const int funl ()这个其实无意义,因为参数返回本身就是赋值。b. const int * fun2()调用时 const int *pValue =fun2();我们可以把fun2()看作成一个变量,即指针内容不可变。c. int* const fun3()调用时 int * const pValue =fun2();我们可以把fun2()看作成一个变量,即指针本身不可变。一般情况下,函数的返回值为某个对象时,如果将其声明为 const时,多用于操作符的重载。通常,不建议用const修饰函数的返回值类型为某个对象或对某个对象引用的情况。原因如下:如果返

39、回值为某个对象为const (const A test = A实例)或某个对象的引用为const (const A& test = A实例),则返回值具有const 属性,则返回实例只能访问类A中的公有(保护)数据成员和const 成员函数并且不允许对其进行赋值操作这在一般情况下很少用到4、类相关CONST(1)const修饰成员变量const修饰类的成员函数,表示成员常量,不能被修改,同时它只能在初始化列表中赋值。class Aconst int nValue;成员常量不能被修改A(int x): nValue (x);只能在初始化列表中赋值(2) const修饰成员函数const修饰类的成

40、员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。class A(void function。const;常成员函数,它不改变对象的成员变量.也不能调用类中任何非const成员函数。对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。a. const成员函数不被允许修改它所在对象的任何个数据成员。b. const成员函数能够访问对象的const成员,而其他成员函数不可以。(3)const修饰类对象/对象指针/对象引用const修饰类对象表示该对象为常量对象,其中的任何成员都

41、不能被修改。对于对象指针和对象引用也是样。,const修饰的对象,该对象的任何非const成员函数都不能被调用因为任何非const成员函数会有修改成员变量的企图。例如:class AAA(void fund ();void func2() const;const AAA aObj;aObj. fund (); XaObj. func2();正确 const AAA* aObj = new AAA(); aObj- fund (); XaObj- func2():正确三、将Const类型转化为非Const类型的方法采用const_cast进行转换。用法:const_cast (expressio

42、n)该运算符用来修改类型的const或volatile属性。除了 const 或 volatile 修饰之外,type_id 和 expression 的类型是样的。 常量指针被转化成非常量指针,并且仍然指向原来的对象; 常量引用被转换成非常量引用,并且仍然指向原来的对象; 常量对象被转换成非常量对象。C+经典语句(一)1.1. 2求两个数的和程序如下:#includeiostream. h void main() int a, b, sum;/定义了三个整型变量a=43;/把整数常量赋给变量ab=37;sum=a+b;/ a与b相加的和赋给变量sumcout The sum issum;co

43、utendl;/ endl是回车换行的作用程序运行结果如下:This sum is 801.1.3计算圆面积#includevoid main()const float pai=3.14;/用 const 说明了一个float 型常量pai, m 由于pai是常量,所以在/程序中这个值不会被改变float radius;/Z说明了一个float型变量radius,用于存放半径值cout Enter radius:*;cinradius;/ cin为iosream. h中说明的文件,作用为接收键盘输入。如此/Z时从键盘输入个数2.5j就把输入的这个值送入变量radius, float area=

44、pai*radius*radius;/Z 说明了一个 float 型常量 area,用于存放计算后的面积 cout Xn The area of circle is :*;coutareaendl;/Z 输出面积程序运行结果如下:Enter radius:2.5The area of circle is 19.625说明:这个程序相对于progam 1_2有一个明显的优点,就是它的输入数据不必在编程时确定而是在运行时由操作者直接从键盘输入。上面的程序称为简单程序。直观上看,它们都很短,进步分析发现它们有两个特点:1)程序要做的事情是由程序员在编程时就安排好了的是固定不变的。2)程序要做几个动作

45、也是由程序员在编程时安排好的程序实际上是个简单的命令序列。下面的程序有了“判断”的能力。此程序用于温度值(攝氏与华氏温度)的换算,输入温度值并指出该值是攝氏(C)还是华氏(F)温度,然后程序根据不同的输入(攝氏或华氏)进行不同的换算。2.1按条件进行判断#includevoid main()float t, tc, tf;char corf;const float fac=l.8, inc=32;cout“Enter temperature:cint;/7输入温度值cincorf;/Z指出是攝氏(C)或华氏(F) if (corf=, c corf= C)tc=t;tf=t*fac+inc;)

46、elseif (corf=, F corf= f)tf=t;tc=(t-inc)/fac;) else tc=tf=0.0; coutendl*The temperature is:couttcC=tfFn;程序运行结果如下:Enter temperature:40.2CThe temperature is 40.2C=104.36F下面是使用switch(开关)语句的程序。switch提供了多分支选择的方法。5.2简单的计算器程序这个程序完成的功能是:输入两个数,然后输入运算符,在屏幕上显示运算结果。程序运行结果如下:#includeiostream. hvoid main()int x,

47、y;char op;cout first integer:;cinx;coutendlASecond integer:*;ciny;coutendl“operator (+,-,*,/,%):cinop;switch (op)/ switch开关分支语句从这里开始,根据表达式的值分支case :/如果 op=+coutendlx+y=x+y;break;/Z执行完毕,退出switch分支。下面的break语句的作用相同case /如果 op=-coutendlx-y=x-y;break;case *:/如果 op=*coutendlx*y=x*y;break;case /:如果 op=/cou

48、tendlx/y=x/y;break;case %:/如果 op=%coutendlxy=x%y;break;default:coutendl*Wrong!”;程序运行结果如下:first integer:12second integer:7operator (+,*,/,%):*12*7=84上面的这个程序可以由用户任意输入两个整数及运算符,完成指定的运算,但是它的不便之处是当有多次运算要进行时,每算完一次必须重新启动程序。下面的程序使用循环控制语句,使得程序可以进行多次运算。 program 2_5. cpp#includevoid main()int x, y, quit=l;char

49、op, cont;while (quit)/ whiel循环语句,括号里面是个表达式,称为控制表达式。当这个表/Z达式的值为1时继续循环体内的代码。从这个大括号开始,进入循环体。cinx; ciny;cinop;switch(op)case +:coutendlx+y=x+y;break;case -:coutendlx-y=x-y;break;case *:coutendlx*y=x*y;break;case /:if (y=0) coutendlOverflow!;/判断 y 是否为,避免除错误。elsecoutendlx/y=x/y;break;case %:if (y=0) coute

50、ndl*Overflow!*;/Z 判断 y 是否为,避免除错误。else coutendlx”y=x%y;break;default:coutendlWrong!;break;coutendlDo you want to continue?(y or n)cincont;if(cont=n) quit=0;/当操作者输入字符n时,由于quit被赋值。/Z当再次检测while表达式时,由于quit为,所以退出while循环。)这个程序所做出的改进是很明显的,只要在每次完成一次计算后,用户回答是否继续时按下y键(或除n之外的任何字符),就可以连续运行,完成用户指定的四则运算,直到接收到字母n为止

51、。在循环体内必须有改变while表达式值的语句否则一旦进入死循环就无法跳出,这种情形称为“死循环”,编程中应注意避免。2. 3计算e的值和求素数e是自然对数的底,它和n 样是数学中最常用的无理数常量。其近似值的计算公式为:e=l+l/l!+1/2!+1/3!+.+l/(n-l)!+r当n充分大时,这个公式可以计算任意精度e的近似值。为了保证误差 r r) e程序代码如下:#includevoid main()const double eps=0. Ie-10;int n=l;float e=l.0, r=l.0;do /开始do循环。循环条件由后面的while中的表达式值确定。e+=r;n+;

52、r/=n;)while (reps);cout The approximate Value of natural logarithm base is:couteendl;程序运行结果如下:The approximate Value of natural logarithm base is:2.71828说明:上面这个程序中使用了 do循环,它是循环控制中的种。循环控制条件放在后面的while表达式中。下面的程序用来求出1000以内的全部素数。#includeiostream. h void main()const int m=1000;int i, j, isprime;for(i=2; il

53、; j-) if(i%j=0)isprime=0;if (isprime)couti,;if (i%30=0) coutendl;)说明:D当m值比较大时,这个程序计算量是比较大的,事实上这是用来求出小于m的所有素数的最简单也是最笨的算法。种办法是作下面的改进:把 for(j=i-l; jl; j)改为:int il=int(sqrt(i);for(j=il; jl; j)为了确定整数i是不是素数,不需要用2,3,。,i-l来除它,只需用2,3,。,sqrt(i)试除就可以了。这里sqrt(i)是标准函数,功能是计算平方根,而int()则是把浮点值围化为整型值。另种算法是埃拉脱散(Eratos

54、thenes)筛法,将在以后介绍。2.1 统计学生成绩已知n个学生的注册号和成绩,计算他们的平均成绩,并列出成绩最好的前t名学生的注册号和分数。程序代码如下:#includeconst int n=3;const int t=n;int indexn;/Z存放注册号float score n;/存放成绩for(int i=0;in;i+)cinindexiscorei;/Z 从键盘输入数据float sum=0;for(i=0;in;i+)sum+=scoreih /Z计算分数总和cout. precision(2);/Z 设置输出精度coutendl*Average score:*sum/n

55、;cout. width (28);/Z 输出精度coutendl* register number score*;for(i=0;it;i+)选取前t名分数最高的学生,输出其注册号和成绩(float s=scorei;int jl=i;for(int j=i+l;ji)scorejl=scorei;scorei=s;j=indexjl;indexjl=indexi;indexi=j;)cout. width(4);/Z输出序号,注册号和分数 coutendli+l;cout. width (11);/Z 设置宽度coutindexi;cout. width (16);cout. precis

56、ion(2);/Z 设置输出精度 coutscorei;) coutendl;)程序运行结果如下:142701568915867Duerage score:75 register number score115689214270315867cout. precision是个函数调用语句,函数名是 precisiono cout说明此函数是个标准类的个标准对象cout的函数。所“标准”,即它们所涉及的流(stream)类和对象cout都是由系统已经义好了的。其说明可以在头文件iostream, h中找到。函数precision要求一个int型参数该参数指出在后面输出的浮点数的精度取到小数点后的多

57、少位。cout. width。是另个函数的用法。width决定了其后数据输出的宽度。2.2 输出三角函数表输出人。90度之间每隔15度的正弦、余弦、正切函数值。程序代码如下:/ program 3_2. cpp#include#includeconst float pai=3.1416f;const int interval=15;cout. width (10);coutz,Angle x”;cout. width (10);cout“sin(x);cout. width (10);coutcos(x);cout. width (10);couttan (x);float arc;cout. precision(4);for (int doa=0;doa=90;doa+=interval)arc=pai*doa/180;coutendl;cout. width (10);coutdoa;cout. width (10);coutsin(arc);cout. width (10);coutcos (arc);cout. width (10);if(doa=90) cout-; else couttan(arc);)coutendl;程序运行结果如下:Angle xs incostan0010150.25880.96590.2679300.50.8

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!