C++自学 | 2 结构 & 语句

本内容仅属于个人自学记录,欢迎交流和指正,请勿转载或发表不当言论。

主要学习网址:https://www.runoob.com/


2.1 Cplus/C++ 循环 

 

1. 循环类型:

while循环:

//先判定给定条件是否为真,真时执行循环体
while(condition)
{
    ...
}

//先执行一次循环体,再判断给定条件是否为真
do {
    ...
} while (condition)

 

 

for 循环

可用于多次执行一个语句序列。

for(exp1; exp2; exp3)
{
    ...code
}

//example:执行10次循环语句。
for (i = 0; i > 10; i++)
{
    x++;
}

可用于实现无限循环。

for( ; ; ;)  //当条件表达式不存在时,它被假设为真。
{
    ...code  //无限循环体,可以通过 ctrl+C 终止一个无限循环。
}

 

 

2.  循环控制语句:

循环控制语句更改执行的正常序列,当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。

控制语句描述
break 语句

终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。

遇到break时循环会立即终止,只跳出一层循环语句。

continue 语句

引起循环跳过主体的剩余部分,立即重新开始测试条件,即跳过当前一次循环的剩余代码,强迫开始下一次循环。

对于 for 循环,可能会导致执行条件测试和循环增量部分。

对于 while 和 do...while 循环,会导致程序控制回到条件测试上。

goto 语句

将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

 

 

被标记语句的标识符,可以是除C++关键字意外的纯文本,标记语句可以是任何语句,放置在标识符和冒号后。

goto lable;
...
...
label: statement;

 

 

3.  练习:利用循环体输出菱形方法。

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     cout << "请输入半菱形高度" << endl;
 8     int n = 0;
 9     cin >> n;
10 
11     for (int i = 0; i < 2 * n; i++)
12     {
13         for (int j = 0; j < 2 * n; j++)
14         {
15             if ( abs(i-n) + abs(j-n) == n-1 )    //输出时星号的规律
16             {
17                 cout << "*";
18             }
19             else
20             {
21                 cout << " ";
22             }
23         }
24         cout << endl;
25     }
26 
27     return 0;
28 
29 }

 

输出示例:

请输入半菱形高度
5

     *
    * *
   *   *
  *     *
 *       *
  *     *
   *   *
    * *
     *

 

最后输出的菱形的分布方法(第一列与行均为空白,从 n/2 开始分布,因此满足计算公式):

  0 1 2 3 4 5 6 7 8 9
0                    
1           *        
2         *   *      
3       *       *    
4     *           *  
5   *               *
6     *           *  
7       *       *    
8         *   *      
9           *        

 

 


2.2 Cplus/C++ 判断

 

1.  判断语句:

语句描述
if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if...else 语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。

switch(expression){
    case constant-expression  :
       statement(s);
       break; // 可选的
    case constant-expression  :
       statement(s);
       break; // 可选的
  
    // 您可以有任意数量的 case 语句
    default : // 可选的
       statement(s);
}

 

其中:

expression必须是一个整型或枚举类型,或一个class类型,其中class有一个单一的转换函数将其转换为整型或枚举类型。

constant-expression 必须与expression变量具有相同的数据类型,且必须是一个常量或字面量。

default case 中的 break 语句不是必须的。

嵌套 switch 语句

您可以在一个 switch 语句内使用另一个 switch 语句。

C++中 switch 语句允许至少256各嵌套层次。

switch(ch1) {
   case 'A': 
      cout << "这个 A 是外部 switch 的一部分";
      switch(ch2) {
         case 'A':
            cout << "这个 A 是内部 switch 的一部分";
            break;
         case 'B': // 内部 B case 代码
      }
      break;
   case 'B': // 外部 B case 代码
}

 

 

2.  运算符(?):

条件运算符 ? 可以代替 if...else 语句,一般形式如下:

Exp1 ? Exp2 :Exp3;

 

若 Exp1 为真,则计算 Exp2,结果即为整个 ? 表达式的值,如果 Exp1 为假,则计算 Exp3 的值。

【实例:找出最大值:

#include<iostream>  
#include <iomanip>
using namespace std;

int main()
{
    int a, b, c, d, m, n,z;

    cout << "请输入四个数字";
    cin >> a >> b >> c >> d;
    
    //分组比较
    m = a > b ? a : b;
    n = c > d ? c : d;
    z = m > n ? m : n;

    cout<<"最大值为:"<<z<<endl;
    return 0;
}

 

posted @ 2020-06-11 15:42  伏延  阅读(129)  评论(0编辑  收藏  举报