zoukankan      html  css  js  c++  java
  • C++ 第2章 C++ 简单程序设计

    2.1 C++ 语言概述

    1、程序示例

    //2_1.cpp
    #include <iostream>
    using namespace std;
    void main(void)
    {
         cout<<"Hello!
    ";
         cout<<"Welcome to c++!
    ";
    }
    

    运行结果: Hello!

                      Welcome to c++!

    2、C++字符集

    大小写的英文字母:A~Z,a~z
    数字字符:0~9
    特殊字符: 空格    !    #    %    ^    &    *   
                       _(下划线)    +    =    -    ~    <    
                      >    /        '    "    ;    .    ,    ()    []    {}

    3、词法记号

    关键字    C++预定义的单词
    标识符    程序员声明的单词,它命名程序正文中的一些实体
    文字    在程序中直接使用符号表示的数据
    操作符    用于实现各种运算的符号
    分隔符   ()   {}   ,    :    ;           用于分隔各个词法记号或程序正文
    空白符    空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称

    2.2 基本数据类型和表达式

    2.2.1基本数据类型

    2.2.2 常量 

    • 整型常量:正整数、负整数、零。表示形式有:十进制、八进制和十六进制
    • 实型常量:一般形式和指数形式,如 0.345E+2
    • 字符常量:'a', 'D', '?', '$'
    • 字符串常量:一对双引号括起来的字符序列
    • 布尔常量:false 和 true

    2.2.3 变量

    变量的存储类型:

    • auto 属于一时性存储,其存储空间可以被若干变量多次覆盖使用。
    • register 存放在通用寄存器中。
    • extern 在所有函数和程序段中都可引用。
    • static 在内存中是以固定地址存放的,在整个程序运行期间都有效。

    2.2.4 符号常量

    const 数据类型说明符  常量名=常量值 ; 

    数据类型说明符   const 常量名=常量值  ;
    例如:以声明一个代表圆周率的符号常量

    const float PI= 3.1415926:
    

    注:符号常量在声明时一定要赋初值,而在程序中闯不能改变其值

    2.2.5 运算符与表达式

    • 基本算术运算符   +       -       *       /  (若整数相除,结果取整)   %(取余,操作数为整数)
    • 优先级与结合性 先乘除,后加减,同级自左至右
    • ++, --(自增、自减)    例:i++;    -- j;



    2、逗号运算和逗号表达式
    格式:表达式1,表达式2
    求解顺序及结果:先求解1,再求解2,最终结果为表达式2的值
    3、条件运算符与条件表达式:

    • 一般形式:表达式1?表达式2:表达式3   (表达式1 必须是 bool 类型)  例: x=a>b? a:b;
    • 执行顺序:
      • 先求解表达式1,
      • 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果
      • 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果

    注意:条件运算符优级高于赋值运算符,低于逻辑运算符
    4、sizeof运算符
    语法形式  sizeof (类型名)  或  sizeof  表达式
    结果值: “类型名”所指定的类型或“表达式”的结果类型所占的字节数
    例:

    sizeof(short)
    sizeof(x)
    

      

    7、位运算

    • 按位与&:将两个操作数对应的每一位分别进行逻辑与操作。
      • 用途:
      • 将某一位置0,其它位不变。
      • 取指定位。
    • |按位或 :将两个操作数对应的每一位分别进行逻辑或操作。
      • 用途:将某些位置1,其它位不变。
    • 按位异或^ :将两个操作数对应的每一个位进行异或,具体运算规则是:若对应位相同,则该位的运算结果为0;若对应位不同,则该位的运算结果为1。
      • 用途:使特定位翻转(与0异或保持原值,与1异或取反)
    • 按位取反~:按位取反是一个单目运算符,其作用是对一个二进制数的每一位取反
    • 左移运算<<:左移后,低位补0,高位舍弃
    • 右移运算>>:右移后,低位:舍弃    ;高位:无符号数:补0    有符号数:补“符号位”

    8、运算符优先级与结合性

    9、混合数据类型转换:在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换)

    • 隐式转换:低类型数据转换为高类型数据
      • 这种转换是安全的,因为在转换过程中数据的精度没有损失。
    • 显式转换:强制类型转换
      • 语法形式: 类型说明符(表达式) 或 (类型说明符)表达式

    2.2.6 语句

    2.3 数据的输入与输出

    2.3.1 I/O流
    插入操作。数据的输入与输出是通过I/O流来实现的,cin和cout是预定义的流类对象。
    cin 用来处理标准输入,即键盘输入。
    cout 用来处理标准输出,即屏幕输出。

    2.3.2 预定义的插入符和提取符
    cout    流插入运算符 <<
    cin   流提取运算符 >> 

    #include <iostream>
     
    using namespace std;
    int main( )
    {
       char name[50];
     
       cout << "请输入您的名称: ";
       cin >> name;
       cout << "您的名称是: " << name << endl;
    }

    endl 用于在行末添加一个换行符

    流插入运算符 <<  和 流提取运算符 >> 在一个语句中可以多次使用,如上面实例中所示。

    2.4 算法的基本控制

    算法的基本控制结构有3种:顺序结构、选择结构和循环结构。
    2.4.1 if 语句
    三种形式

    if   (表达式)   语句
    例:if  (x>y)  cout<<x;

    if   (表达式)   语句1  else  语句2
    例:if  (x>y)  cout<<x;
                 else  cout<<y;

    if   (表达式1)  语句1
        else  if  (表达式2)  语句2
        else  if  (表达式3)  语句3
               …
        else  语句 n

    2.4.2 多重选择结构

    #include<iostream>
    using namespace std;
    void main()
    {
        int x,y;
        cout<<"Enter x and y:";
        cin>>x>>y;
        if (x!=y)
            if (x>y)
                cout<<"x>y"<<endl;
            else
                cout<<"x<y"<<endl;
        else
            cout<<"x=y"<<endl;

    if语句嵌套 一般形式:

    if  (   )
         if  (   )    语句 1
         else   语句 2
    else
         if  (   )    语句 3
         else   语句 4
    注意:语句 1、2、3、4 可以是复合语句,每层的 if 与 else 配对,或用 { } 来确定层次关系。

     
    
    //输入一个0~6的整数,转换成星期输出。
    
    #include <iostream>
    using namespace std;
    void main(void)
    {    int day;
        cin >> day;
        switch (day)
        {    
             case 0:    cout << "Sunday" << endl;    break;
             case 1:    cout << "Monday" << endl;   break;
            case 2:    cout << "Tuesday" << endl;   break;
            case 3:  cout << "Wednesday" << endl;   break;
             case 4:    cout << "Thursday" << endl;   break;
             case 5:    cout << "Friday" << endl;   break;
             case 6:    cout << "Saturday" << endl;   break;
             default:          cout << "Day out of range Sunday .. Saturday" << endl;
                        break;
         }
    }

    一般形式:
    switch  (表达式)
       {  case    常量表达式 1:语句1
          case    常量表达式 2:语句2
                      ┆
          case    常量表达式 n:语句n
          default :             语句n+1
       }
    执行顺序:case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。
    注意问题:

    • case分支可包含多个语句,且不用{ }。
    • 表达式、判断值都是int型或char型。
    • 若干分支执行内容相同可共用一组语句。

    2.4.3 循环结构与选择

    形式:    while  (表达式)  语句

    //求自然数1~10之和
    #include<iostream>
    using namespace std;
    void main()
    {
      int i(1), sum(0);
      while(i<=10)
      {
          sum+=i;  //相当于sum=sum+i;
          i++;
      }
      cout<<"sum="<<sum<<endl;
    }

    do   语句
    while (表达式)

    //输入一个整数,将各位数字反转后输出。
    #include <iostream>
    using namespace std;
    void main(void)
    {
        int n, right_digit, newnum = 0; 
        cout << "Enter the number: ";
        cin >> n;
        
        cout << "The number in reverse order is  ";
        do
        {
            right_digit = n % 10;
            cout << right_digit;
            n /= 10;  //相当于n=n/10
        } 
        while (n != 0);
      cout<<endl;        
    }

    语法形式:
    for  (表达式1;表达式2;表达式3)  语句

    #include <iostream>
    using namespace std;
    void main(void)
    { 
        int n, k;
    
        cout << "Enter a positive integer: ";
        cin >> n;
        cout << "Number  " << n << "   Factors  ";
    
        for (k=1; k <= n; k++)
            if (n % k == 0)
                cout << k << "  ";
      cout << endl;
    }

    例题:编写程序输出以下图案
                            *
                          ***
                        *****
                      *******
                      *****
                      ***
                      *

    #include<iostream>
    using namespace std;
    void main()
    {  int i,j,n=4;
       for(i=1;i<=n;i++)  //输出前4行图案
       { for(j=1;j<=30;j++)
           cout<<' ';  //在图案左侧空30列
         for(j=1; j<=8-2*i ;j++)
           cout<<' ';
         for(j=1; j<=2*i-1 ;j++)
           cout<<'*';
         cout<<endl;
       }
    for(i=1;i<=n-1;i++)  //输出后3行图案
       { for(j=1;j<=30;j++)
           cout<<' ';  //在图案左侧空30列
         for(j=1; j<=7-2*i ;j++)
           cout<<'*';
         cout<<endl;
       }
    }

    循环结构与选择结构的嵌套

    #include<iostream>
    using namespace std;
    void main()
    {   
        int n;
        for(n=100; n<=200; n++)
        {    if (n%3!=0)
             cout<<n;
        }
    }

    例题:读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。

    #include<iostream>
    using namespace std;
    void main()
    { int  i=0, j=0, n;
      cout<<"请输入若干整数(输入0则结束):";
      cin>>n;
      while(  n!=0  )
      {  if(n>0) i++;
         if(n<0) j++;
         cin>>n    ;
      }
      cout<<"正整数个数:"<<i<<"   负整数个数:"<<j<<endl;
    }

    2.4.5 其他控制语句
    break语句
    使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。
    continue 语句
    结束本次循环,接着判断是否执行下一次循环


    2.5 自定义数据类型
    2.5.1 typedef
    为一个已有的数据类型另外命名
    语法形式 typedef  已有类型名  新类型名表;
    例如
    typedef double area,volume;
    typedef int natural;
    natural i1,i2;
    area a;
    volume v;

    2.5.2 枚举类型enum
    枚举类型应用说明:

    • 对枚举元素按常量处理,不能对它们赋值。例如,不能写:sun=0;
    • 枚举元素具有缺省值,它们依次为: 0,1,2,......。
    • 也可以在声明时另行指定枚举元素的值,如:
    • enum weekday {sun=7,mon=1,tue,wed,thu,fri,sat};
    • 枚举值可以进行关系运算。
    • 整数值不能直接赋给枚举变量,如需 要将整数赋值给枚举变量,应进行强 制类型转换。


    例子:设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。

    #include <iostream>
    using namespace std;
    enum game_result {WIN, LOSE, TIE, CANCEL};
    int main()
    { game_result result;
       enum game_result omit = CANCEL;
       int count;
       for (count = WIN ; count <= CANCEL ; count++) 
       { result = (game_result)count;
          if (result == omit)
          {    cout << "The game was cancelled
    ";      }
          else 
          { cout << "The game was played ";
             if (result == WIN)         cout << "and we won!";
             if (result == LOSE)       cout << "and we lost.";
             cout << "
    ";
          }
       }
       return 0;
    }


    2.5.3 结构体 - 结构的声明
    结构:是由不同数据类型的数据组成的集合体
      struct  结构名
      {
          数据类型   成员名 1;
          数据类型   成员名 2;
           ……
          数据类型   成员名 n; 
      };
    举例:

    struct student   //学生信息结构体
    {
        int num;  //学号
        char name[20];  //姓名
        char gender;  //性别
        int age;  //年龄
        float score;  //成绩
        char addr[30];  //住址
    }
    

    结构体变量形式: 
       结构名  结构变量名;

    注意:

    • 结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致。
    • 结构变量说明在结构类型声明之后,二者也可同时进行。
    • 结构变量占内存大小可用 sizeof 运算求出: sizeof(运算量)

    初始化:    说明结构变量的同时可以直接设置初值。
    使用:   结构体成员的引用形式:      结构变量名.成员名

    结构体变量的初始化和使用
    #include <iostream>
    #include <iomanip>
    using namespace std;
    struct student   //学生信息结构体
    {  int num;  //学号
        char name[20];  //姓名
        char gender;  //性别
        int age;  //年龄
    }stu={97001,"Lin Lin",'F',19};
    void main()
    {  cout<<setw(7)<<stu.num<<setw(20)<<stu.name       <<setw(3)<<stu.sex<<setw(3)<<stu.age;
    }

    2.54 联合体

    union 联合名
      {
          数据类型   成员名 1;
          数据类型   成员名 2;
          ……
          数据类型   成员名 n; 
      };
    例子:

     union uarea
    {  char   c_data;
       short  s_data;
       long   l_data;
    }
    

    2.54 无名联合体

    无名联合没有标记名,只是声明一个成员项的集合,这些成员项具有相同的内存地址,可以由成员项的名字直接访问。
    例:
    union
    {    int    i;
         float   f;
    }
    在程序中可以这样使用:
    i=10;
    f=2.2;




     

  • 相关阅读:
    人事面试13
    人事面试测试篇1
    人事面试16
    人事面试15
    人事面试测试篇3
    人事面试测试篇2
    人事面试14
    Oracle Compile 编译 无效对象
    Oracle 移动数据文件的操作方法
    Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
  • 原文地址:https://www.cnblogs.com/alec7015/p/12380073.html
Copyright © 2011-2022 走看看