逐梦C++补遗篇之三:若干重要C++特性

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值