zoukankan      html  css  js  c++  java
  • c++速成,适合有c基础的朋友(1)

    1.C++程序的整体布局
    #include<iostream>      //"<iostream>"中不能有多余的空格
    using nameplace std     //此处c++特有,c没有。另一种写法是将上述两行写为 #include <iostream.h>,对应较老的版本。如果编译器要求这样的写法可以考虑
    int main()              //(接上一行)升级编译器。
    {
      <语句块>;
       return 0;
    }
    c++的注释方式与c相同,对缩进的要求并不像python那样严格。好的缩进习惯可以提高程序的可读性,是应该养成的好习惯。

    2.c++基础知识
      a.变量和赋值   c++对大小写敏感
        此部分与c类次,在此不赘述。在此提醒,变量名尽量起有意义的名称,这样有助于编程,编程时养成写注释的习惯。
      b.输入与输出
      %1.使用cout进行输出:
        eg:cout << number_of_stu << "bedrooms\n"; //可以输出number_of_stu变量的值以及后面的引号中的内容。
        等价于:
            cout << number_of_stu;
            cout << "bedrooms\n";
        cout语句中也可以包含表达式,表达式要用“()”括起来。
        eg: cout << "the total cost is" << (price+tax);
        如果cout语句过长可以变为两行。
        eg:cout << "there is" << number_of_bed
                <<  "beds and" << number_of_table << "tables in the room\n";
       %2.转义序列:
         使用\来告诉编译器:\后面的符号需要转义,或者消除转义字符默认的意义,只是单纯的显示字符。
         常用的转义字符:/n 换行符(endl含义相同)
                       /t 制表符(跳跃空格)
         编程时可以考虑以"/n"来结束,避免下一个程序的输出与这个程序混在一起。
       %3.格式化带小数点的数字:
        在程序中加入下列指令:
        cout.setf(ios::fixed);
        cout.setf(ios::showpoint);
        cout.precision(2);
        就可以输出2位小数点的小数。      
       %4.用cin进行输入:与cout用法类似:
          eg:cout << "Please enter your age:\n";
             cin >> age;
          可以从键盘输入两个变量,用空格隔开:
          eg:cin >> number >> size ;
      c.数据类型和表达式
       %1.short / int / long / float / double / long double / char  与c相似,不再赘述。
          其中需要注意的是,char类型指的是键盘上的任意一个单字符。要用''来表示。'a'与"a"是不一样的,后者为string类,不能用char类型来表示。
          编程时涉及到除法运算最好使用float型避免出错。
          另外与c不相同的是,声明时可以采用两种方式。 int num=1;  or  int num(1);
       %2 bool类型 只有ture或fales两个值,用于分支语句。
       %3 string类简介:
          想要使用string类,首先要包含string库:
          #include <string>
          变量声明与赋值的方式与之前的类似:
          string sex;
          sex = "female";
          这里允许这样的操作:
          string day;
          day="Monday"+"Tuseday";
          得到的day的值为"MondayTuseday"
        %4 在这里补充一下为常量命名的规则: 使用const关键字
           eg:const int WINDOWS_NUMBER = 10; // 在程序中可以使用名字而不是数字。虽然并未要求常量的命名必须大写,但这已经成为大部分程序员的习惯。
      d.简单的控制流程
       %1.一个简单的分支机制:
         if(Boolean_Expression)    //涉及到"&&","||"的使用时注意括号的使用。注意"="与"=="的应用差别。
         {
            Yes_Statement_1;
            Yes_Statement_2;
            ...
         }
         else
         {
            No_Statement_1;
            No_Statement_2;
            ...
         }此部分与c语言基本相同。
        %2.简单的循环机制
         while循环:
          while(Boolean_Expression)   //当Boolean_Expression的值为false时结束循环,注意这里没有分号。
          {
                 statement_1;
                 statement_2;
                 ...
          }
         do_while 循环:   适用于循环体一定要执行一次的场合,不太常见。
          do
          {
                 statement_1;
                 statement_2;
                 ...
          }while(Boolean_Expression); //注意此处的分号
         %3.递增,递减操作符
            n++,n--,++n,--n与c类似。值得注意的是在c++中,它们只能用于单个变量,(x+y)++这种表述是违法的。
         %4.多路分支: 多路分支需要注意的就是"{}"的使用,保证if-else的配对正确。
                      在c++中,{}中的语句被称为一个语句块,块中声明的变量是局部变量。
         %5.多路if-else语句:
            if(Boolean_Expression_1)
               statement_1;
            else if (Boolean_Expression_2)
               statement_2;
            else if (Boolean_Expression_3)
               statement_3;
            ...
            else
               statement_last;
         %6.switch 语句:
            switch(controller_expression)
            {
              case constant_1
                 statement_sequence_1;
                 break;           //不要忘记break的使用。
              case constant_2
                 statement_sequence_2;
                 break;
              ...
              default:            //可有可无,最好加上可用于显示相关信息。
                statement_sequence_last;  
            }
         %7.for语句:
             for(intialization_action;boolean_expression;update_action)
                         body_statement;
             eg: for(i=100;i>0;i--)   //此处不要加分号,加分号会使得for(i=100;i>0;i--)单独成为一个语句。
                     count << "there are" << i << "students left in this room\n";
             注意使用break同样可以跳出循环。break只终止包含它的最内层循环。
             使用到嵌套的循环时,同样需要注意内外层之间的关系。
            
    3.过程抽象和返回一个值的函数:
      a.预定义函数:   是指c++之前已有定义的函数,存放在相应的头文件中。使用时要声明包含这样的头文件。
            eg:#include <cmath>
               #include <cstdlib>
      b.强制类型转换: 可以使用函数static_cast<double>()函数将int型转换为double型,以保证相应计算的正确。
            eg:candy_per_person=static_cast<double>(total_candy_number)/_of_person;
      c.自定义函数:   
       %1 函数的描述分为两个部分,分别是函数声明和函数定义。函数的声明放在靠前的位置,通常放在main函数之前。
          eg: double total_cost (int number_of_basketball, double price_cost_signal); //注意此处的分号
          其中形参与实参的问题与c一致。
       %2 bool型返回值的函数
          函数可以返回一个bool型的值,声明方式如下:
          bool 函数名(参数表)
          eg:bool app(int race);
          函数体可以是这样的:
          bool app(int race)
          {
               return (race>10);
          }      
          注意调用函数时,实参的顺序不能发生错误。
       %3 局部变量,全局常量和全局变量
          将const int声明的常量放在程序的前端,则声明了全局常量,在任意一个函数中都可以使用。
          将const去掉声明的就是全局变量,全局变量的应用容易导致错误,对于不是很有经验的编程者不建议使用。
          局部变量是在函数内部定义的,只在函数内部有相应的意义。需要强调的一点是,传值调用形参是局部变量,函数内部对变量的直接操作不会影响函数外部的变量
          的值。
       %4 重载函数名称
          c++允许为同一个函数名提供两个或者更多的定义,这表示可以在不同的情况下重用这些名称。为同一个函数名提供两个或者更多的定义,就称为重载函数名称。
          c++的重载简单很多,只要按照一般的函数定义方式在定义一个函数就可以了。重载一个函数名时,两个函数声明的形参必须有所区别,这样编译器才能正确的找到
          相应的函数。只用返回类型不一样是不能重载的。不要为两个不相关的函数重载。

    4.所有子任务函数
      a.void 函数
        不返回值的函数称为void函数。
        void函数声明: void Fuction_Name(Parameter_List);
      b.传引用调用形参
        使用传值调用形参,用于替换形参的是实参的值(而不是实参本身)。
        使用一个传引用调用一个形参时,函数调用中的相应的实参必须是一个变量,用于替换形参的将是一个实参变量,是变量本身。
        为了标记一个传引用调用形参,需要在函数声明和函数定义头中,在参数类型后加&。
        eg: void get_input(double& f_variable)
            {
                 using namespace std;
                 count << "please enter a number:\n";
                 cin  >> f_variable ;
            }
        如果希望函数更改一个变量的值,就使用传引用调用,其余的均可以是用传值调用。
      c.使用过程抽象
        过程抽象的原则在于将函数写为一个黑盒子,使用者只需要知道他的使用条件和使用结果,不必对其内部的实现方式有所了解。
        在为函数写注释的时候,分为前条件和后条件是一种好的手段。前条件的内容是使用函数的必要条件,而后条件可以写函数的运行结果。        
      d.测试和调试函数
        可以编写程序一个一个函数的进行测试,这样能较好的定位错误。如果测试时需要另外的函数,而它还未编写或者还未经过测试,可以写一个stub函数占位:
        eg:double price(int number,double cost)      //this is a stub
           {
                    return(9.99);
           }
      e.常规的调试技术
        %1.坚决杜绝依靠直觉修改代码以期待改对的心态!!!
        %2.定位错误对于调bug有很大的意义。可以战略性的插入cout函数来帮助确定bug的位置。
        %3.assert宏
           assert宏是确保在assert语句的位置预期条件为true的一条语句。如果条件不服,程序会报错并退出。
           要使用assert宏首先要 #include <cassert>
           使用形式:assert(boolean_expression);
           注:在#include <cassert>之前添加 #define NDEBUG 既可以禁用所有的assert宏。
  • 相关阅读:
    Javascript小技巧
    VIM
    interview experience
    HTML5
    代码实践
    git clone 速度慢的解决办法
    vscode 找不到相对目录文件的解决办法
    python基础 13 类命名空间于对象、实例的命名空间,组合方法
    python 基础 12 初识类,类方法,类属性
    python 基础 11 带参数装饰器与递归函数
  • 原文地址:https://www.cnblogs.com/ustczd/p/4781235.html
Copyright © 2011-2022 走看看