⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 02章 控制结构.txt

📁 C++大学教程txt版中文版 C++大学教程txt版中文版
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                   cout << "Raise tuition "<< endl;
         return 0;  // successful termination

输出结果:

    Enter result (l=pass,2=fail}: 1
    Enter result (l=pass,2=fail): 2
    Enter result (l=pass,2=fail): 1
    Enter result (l=pass,2=fail): 1
    Enter result (l=pass,2=fail): 1
    Enter result (l=pass,2=fail)  1
    Enter result (l=pass,2=fail): 2
    Enter result {l=pass,2=fail): 1
    Enter result (l=pass,2=fail): 1
    Enter result )1=pass,2=fail): 2
    Passed 6
    Failed 4

    Enter result (a=pass,2=Fail): 1
    Enter result (l=pass,2=fail): 1
    Enter result (l=pass,2=fail)  1
    Enter result (1-pass,2=fail): 2
    Enter result {l=pass,2=fail): 1
    Enter result (l=pass,2=fail): 1
    Enter result {1=Pass,2=fail):1
    Enter result(1=pass,2=fail):1
    Enter result(1=pass,2=fail):1
    Enter result(1=pass,2=fail):1
    Passed 9
    Failed 1
    Raise tuition

                          图2.11  检查考试成绩的C++程序及示例执行结果

    编程技巧2.13
    在声明中进行变量初初化可以帮助程序员避免数据表初始化问题。
    软件工程视点2.7
    经验表明,计算机问题最难解决的部分是开发解决方案的算法。一旦确定正确算法后,从算法生成C++程序的过程通常是相当简单的。
    软件工程视点2.8
    许多熟练的程序员不必用伪代码之类的程序开发工具即可编写程序。这些程序员认为其最终目标是解决计算机上的问题,编写伪代码只会延迟最终产品的推出。尽管这种方法在简单和热悉的问题中能行得通,但在大型复杂项目中则可能导致严重的错误和延迟。
2.11赋值运算符
    C++提供了几个赋值运算符可以缩写赋值表达式。例如下列语句:
    c = c + 3;
可以用加法赋值运算符(addition assignment operator)“+=”缩写如下:
    c += 3;
+=运算符将运算符右边表达式的值与运算符左边表达式的值相加,并将结果存放在运算符左边表达式的值中。下列形式的语句:
    variable = variable operator expression;
其中operator为二元运算符+、-、/或%之一(或今后要介绍的其他二元运算符),均可写成如下形式:
    variable operator = exprission;
这样,赋值语句c+=3将3与c相加。图2.12显示了算术赋值运算符、使用这些算术赋值运算符的示例表达式和说明。
    性能提示2.3
    使用缩写赋值运算符可以使程序更员快地编写程序,也可以使编译器更快地编译程序。有些编译器在用缩写赋值远算符时能产生运行速度更快的代码。

    性能提示2.4
    本书介绍的许多性能提示只产生少量改进,读者可能不会大注意。但在多次重复的循环中,少量的改进可能积累成巨大的性能改进。
          赋值运算符        示例表达式            说明                赋值 
假设int c=3,d=5,e=4,f=6,g=12;

    +=                e+=7                c=c+7                10赋值给e
    -=                d-=4                d=d-4                1赋值d
    *=                e*=5                e=e*5                20赋值给e
    /=                f/=3                f=f/3                2赋值给f
    %=                g%=9                g=g%9                3赋值给g 

                            图 2.12 算术赋值运算符

2.12  自增和自减运算符
    C++还提供一元自增运算符(increment operator,++)和一元自减运算符(dcrement operator),见图2.13。如果变量c递增1,则可以用自增运算符++,而不用表达式c=c+1或c+=1。如果将自增和自减运算符放在变量前面,则称为前置自增或前置递减运算符(preincrement或predecrementope~torL如果将自增和自减运算符放在变量后面,则称为后置自增或后置自减运算撤postmcrement或postdcrement operator)。前置自增(前置自减)运算符使变量加1(减1),然后在表达式中用变量的新值。后置自增(后置自减)运算符在表达式中用变量的当前值,然后再将变量加1(减1)。

    运算符        名称        示例表达式        说明 
    ++            前置自增    ++a            将a加1,然后在a出现的表达式中使用新值
    ++            后置自增    a++            在a出现的表达式中使用当前值,然后将a加1
    --            前置自减    --b            将b减1,然后在b出现的表达式中使用新值
    --            后置自减    b--            在b出现的表达式中使用当前值,然后将b减1 

                                图 2.13 自增和自减运算符

 图2.14的程序演示了++运算符的前置自增与后置自增计算之间的差别,后置自增变量c使其在输出语句中使用之后再递增,而前置自增变量c使其在输出语句中使用之前递增。

1 // Fig, 2.14:fig02 14.cpp
2 // Preincrementing and postincrementing
3 #include <iostream.h>
4
5 int main()
6 {
7    int c;
8
9    C = 5;
10   cout << C << endl;       // print 5
11   cout << C++ << endl;      // print 5 then postincrement
12   cout << c << endl << endl; // print
13
14   c = 5;
15   cou << c << endl;       // print 5
16   cout << ++c << endl;      // preincrement then print 6
17   cout << c << endl;
18
19   return  O;    //  successful  terminatiOn
20 }
    
输出结果:
    5
    5
    6

    5

    6
    6
    
                          图2.14  前置自增与后置自增计算之间的差别

  程序显示使用++运算符前后的c值,自减运算符的用法类似。
  
  编程技巧2.14
  一元运算符及其操作数之间不能插入空格。

  图2.11的三个赋值语句:
  passes=passes+1;
  failures=failures+1
  student=student十1;
可以改写成更简练的赋值运算符形式:
  passes+=1;
  failures+=1;
  student+=1;
使用前置自增运算符,如下所示:
    ++passes;
    ++failures;
    ++student;
或使用后置自增运算符,如下所示:
    passes++
    failures++
    student++
    注意,单独一条语句中自增或自减变量时,前置自增与后置自增计算之间的的结果一样,前置自减与后置自减计算之间的结果也相同。只有变量出现在大表达式中时,才能体现前置自增与后置自增计算之间的差别(和前置自减与后置自减计算之间的差别)。
  目前只用简单变量名作为自增和自减的操作数(稍后会介绍,这些运算符也可以用于左值)。
  
  觉编程错误2.11
  要用非简单变量名表达式(如++(x+1))作为自增和自减运算符的操作数是个语法错误。

 图2.15显示了前面所介绍的运算符优先级和结合律,从上到下,优先级依次递减。第二栏介绍每一级运算符的结合律,注意条件运算符(?:)、一元运算符自增(++)、自减(--)、正(+)、负(-)、强制类型转换以及赋值运算符(=、+=、-;、*=、/=和%=)的结合律为从右向左。图1.15中所有其他运算符的结合律为从左向右。第三栏是运算符的组名。



    运算符                               结合律                     类型 
    ( )                                                             括号
    ++  --  + - static_cast<type>()        从左向右                 一元
    *  /  %                                从右向左                 乘
    +  -                                   从左向右                 加
    <<  >>                                 从左向右                 插入/读取
    <    <=    >    >=                     从左向右                 关系
    ==    !=                               从左向右                 相等
    ?:                                     从右向左                 条件
    =    +=    -=    *=    /=    %=        从右向左                 赋值
    ,                                     从左向右                 逗号 

  
                        图 2.15 前面所介绍的运算符优先级和结合律

2.13  计数器控制循环的要点
    计数器控制循环要求:
    l.控制变量(或循环计数器)的名称(name)。
    2.控制变量的初始值(initial value)。
    3.测试控制变量终值(final value)的条件(即是否继续循环)。
    4.每次循环时控制变量修改的增量或减量(increment decrement)。

    考虑图2.16所示的简单程序,打印1到10的数字。声明:
    int counter = 1;
指定控制变量(counter)并声明为整数,在内存中为其保留空间并将初始值设置为1。需要初始化的声明实际上是可执行语句。在C++中,将需要分配内存的声明称为定义(definition)更准确。

1 // Fig. 2.16: fig02_16.cpp
2 // Counter-controlled repetition
3 #include <iostream.h>
4
5 int main()
6 {
7    int counter = 1;          // initialization
6
9    while ( counter <= 10 ) {   // repetition condition
10     cout << counter << endl;
11     ++counter;             // increment
12   }
13
15  }
    
    输出结果:
    2
    4
    5
    0
    8
    9
    10

                                      图2.16计数器控制循环


    counter的声明和初始化也可以用下列语句完成:
    int  counter;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -