逐梦C++补遗篇之三:若干重要C++特性
2016-02-03 15:00
471 查看
1.常数
C++中的const变能在任何常数出现的地方使用;例子:
const int Size=100; Float a[Size];
2.数据类型bool
在C++中,新增了一种数据类型bool,可以取值true或false,用来表示真或假,通常应用于条件值,函数返回值等;默认情况下,bool表达式进行输出时,默认操纵符为(noboolalpha),即输出0或1;若要输出true或false,则需要增加操纵符boolalpha;
例子:
bool flag; flag=(3<5); cout<<flag<<'\n'; cout<<boolalpha<<flag<<'\n';
3.枚举类型
①定义:
枚举(enum)是C++中一种派生数据类型,它是用户定义的若干枚举常量的集合;所谓枚举,就是将变量的值一一列举出来,变量的值只能在该列举的范围内;例子:
enum weekday{ sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 };
②枚举类型的声明:
enum [枚举类型名]{枚举常量表列};enum [enumeration name] { enumerator1[=value1], enumerator2[=value2], ... };
说明:
1.对枚举元素按常量处理,故称枚举常量,也称枚举子
2.枚举元素是有值得,C++在编译时默认按顺序赋值为 0,1,2,3……..,也可以在声明时为其赋初值
3.一个整数不能直接赋值给枚举变量;比如:
weekday wk=4;//这是错误的
4.枚举值可以用作判断比较
③综合例子:
//================================================== //程序描述:浅谈C++枚举 //Date:2016年1月18日 by Ye_wolf //题目描述: // 口袋中有红、黄、蓝、白、黑5种颜色的球若干个。 // 每次从口袋中任意取出3个球,问得到3种不同颜色的球的可能取法 // ,输出每种排列的情况。 //备注: //================================================== enum Color{ red=1, yellow=2, blue=3, white=4, black=5 }; //========================【题目分析部分】============================= //由题意,该题为组合问题:简而言之就是C53,但是不用公式来做,即为: // for(int i=red;i<=black;i++)//从五个球中选取一个球,第一个球 // for(int j=red;j<=black;j++)//从五个球中选取一个球,第二个球 // if(i!=j)//两种球的颜色不同 // for(int k=red;k<=black;k++)//从五个球中选取一个球,第三个球 // if(i!=k&&j!=K)//三个球颜色尽皆不同 // 因为每次都是从5个球从选出1个球,选三个球可能出现颜色相同顺序不同的组合; // 这是我们将5个球分别用无重复单一数字表示,那他们每种组合的乘积唯一 // 比如红黄蓝=1*2*3和黄蓝红=2*3*1乘积相等,我们只需要取他们中一个即可,因为我们求得是组合问题 // 我们再将每次乘积作比较,取出不同的即可 //========================【头文件部分】============================= #include <iostream> #include <string> //#include <iomanip> using namespace std; //=========================【主函数】============================ int main() { int count=0; string ballColor1,ballColor2,ballColor3; int array[60]={0}; for(int i=red;i<=black;i++)//从五个球中选取一个球,第一个球 for(int j=red;j<=black;j++)//从五个球中选取一个球,第二个球 if(i!=j)//两种球的颜色不同 for(int k=red;k<=black;k++)//从五个球中选取一个球,第三个球 if(i!=k&&j!=k)//三个球颜色尽皆不同 { for(int ax=0;ax<=count;ax++) { if(array[ax]==(i*j*k)) { array[count]=(i*j*k); goto loop1; } } count++; switch(i){ case 1:ballColor1="red";break; case 2:ballColor1="yellow";break; case 3:ballColor1="blue";break; case 4:ballColor1="white";break; case 5:ballColor1="black";break; default:break; } switch(j){ case 1:ballColor2="red";break; case 2:ballColor2="yellow";break; case 3:ballColor2="blue";break; case 4:ballColor2="white";break; case 5:ballColor2="black";break; default:break; } switch(k){ case 1:ballColor3="red";break; case 2:ballColor3="yellow";break; case 3:ballColor3="blue";break; case 4:ballColor3="white";break; case 5:ballColor3="black";break; default:break; } cout<<count<<","<<ballColor1<<","<<ballColor2<<","<<ballColor3<<endl; loop1:break; } return 0; }
④:其实枚举主要作用是用来确定变量范围,提高执行效率;
4.定义变量
在C语言中,变量必须在程序块开始的位置定义,而在C++中变量可以做到“随用随定”,即在哪里需要用到变量,就可以在哪里定义;例子:
void reverse_and_print(int a[],int size) { int i; //fill the array for(i=0;i<size;i++) a[i]=2*i; //reverse the data in the array int temp; for(i=0;i<size/2;i++){ temp=a[i]; a[i]=a[size-1-i]; a[size-1-i]=temp; } //print the array for(i=0;i<size;i++) cout<<a[i]<<'\n'; }
5.结构体
//================================================== //程序描述:浅谈C++结构体 //Date:2016年1月18日 by Ye_wolf //备注: //================================================== #include <iostream> #include <string> using namespace std; /*在c++中struct和类的区别在于struct不能有方法,所有成员是public的*/ struct Movie/*可以指定类型名也可以不指定*/ { //成员都是public的 int ID; string Name; } movie; //可以在声明struct的时候声明一个struct实例 int main(){ //movie变量在Movie结构声明处定义了 movie.ID = 100; movie.Name = "Face Off"; cout<<"movie.ID = "<<movie.ID<<endl; cout<<"movie.Name = "<<movie.Name<<endl; //声明一个变量m,无须为赋初值就可以使用它了 Movie m; m.ID = 101; m.Name = "多面双雄"; cout<<"m.ID="<<m.ID<<endl; cout<<"m.Name="<<m.Name<<endl; //声明结构的指针 Movie * mp; mp = &m; //在指针中调用成员时要用->符号,mp->ID等价于(*mp).ID cout<<"mp->ID = "<<mp->ID<<endl; cout<<"mp->Name = "<<mp->Name<<endl; }
相关文章推荐
- c++ 容器(list学习总结)
- C++ 使用栈判断回文字符串
- C++学习之多态篇(运行时类型识别--RTTI(typeid和dynamic_cast))
- 两道出现频率超高的C++笔试题
- NSScanner: nil string argument libc++abi.dylib: terminate_handler unexpectedly threw an exception问题
- C语言之基本算法35—数组上三角之积 主对角之积 副对角之积
- Effective C++ 05:了解C++默默编写并调用哪些函数
- [C++]Hanoi
- C++中智能指针的设计和使用
- 【转】C++11 标准新特性:Defaulted 和 Deleted 函数
- C++如何拒绝编译器自动生成的函数
- c++ for_each 用法
- 第二次作业----自学c++的选择与计划
- C++学习之多态篇(纯虚函数和虚函数的区别)
- C语言字符串操作总结大全(超详细)
- C++学习之多态篇(纯虚函数和接口类)
- C++实现大数据乘法
- C++中vector的用法实例解析
- C++ string 字符串详解
- C++ 总结