《c++入门经典》笔记6

《c++入门经典》笔记6

第六章 控制程序流程

6.1 循环

在程序中执行多次的代码块称为循环,其中每次循环都称为迭代

 

6.2 while循环

while循环导致程序重复执行一组语句,直到开始条件为false。

下面的while循环显示数字0~99:

int x = 0;
while(x < 100)
{
   std::cout<< x <<"\n";
   x++;
}

程序清单6.1中,程序Thirteens使用一个while循环显示可被13整除且小于500的所有数字。

程序清单6.1 Thirteens.cpp

#include <iostream>
int main()
{
   int counter = 0;
   while (counter < 500)
  {
       counter++;
       if (counter % 13 == 0)
      {
           std::cout << counter << " ";
      }
  }
   std::cout << "\n";
   return 0;
}

 

break语句导致循环立即终止,而不等待条件为false。

程序清单6.2这个程序显示前20个可被14整除的数

程序清单6.2 Fourteens.cpp

#include <iostream>
int main()
{
   int counter = 0;
   int multiples = 0;
   while (true)
  {
       counter++;
       if (counter % 14 == 0)
      {
           std::cout << counter << " ";
           multiples++;
      }
       if (multiples > 19)
      {
           break;
      }
      }
   std::cout << "\n";
   return 0;
}

 

另一种改变循环行为的方式是使用continue语句。在循环中遇到continue语句时,将跳过余下的语句,开始下一次循环迭代

程序清单6.3这个程序显示前20个可被15整除的数

程序清单6.3 Fifteens.cpp

#include <iostream>
int main()
{
   int counter = 0;
   int multiples = 0;
   while (multiples < 19)
  {
       counter++;
       if (counter % 15 != 0)
           continue;
       std::cout << counter << " ";
       multiples++;
  }
   std::cout << "\n";
   return 0;
}

 

6.3 do-wihle循环

while循环执行循环语句前检查条件表达式,如果条件不可能为true,循环语句就不会执行。

而do-while语句将在循环末尾检查条件

也就是do-while循环的循环体至少会执行一次

程序清单6.4 Badger.cpp

#include <iostream>
int main()
{
   int badger;
   std::cout<<"How many badgers? ";
   std::cin>>badger;
   do
  {
       std::cout<<"Badger ";
       badger--;
  } while (badger > 0);
   std::cout<<"\n";
   return 0;
}

 

6.4 for循环

for循环是一种复杂的循环,将设置计数器变量、检查计数器变量是否满足条件、迭代修改计数器变量这三个步骤合并到了一条语句中。该语句使用关键字for,后面是一对括号。括号内,是三条用分号分隔的语句,它们分别初始化计数器、检查条件和修改计数器

程序清单6.5 MultTable.cpp

#include <iostream>
int main()
{
   int number;
   std::cout << "Enter a number:";
   std::cin >> number;

   std::cout << "\nFirst 10 Multiples of " << number << "\n";
   for (int counter = 1; counter < 11; counter++)
  {
       std::cout << number * counter << " ";
  }
   std::cout << "\n";
   return 0;
}

 

多变量for循环:

for(int x = 0,y = 0; x < 10;x++,y++)
{
   std::cout<< x * y << "\n";
}

这个就等同于:

int x = 0,y = 0;
for(; x < 10;x++,y++)
{
   std::cout<< x * y << "\n";
}

 

嵌套循环:

程序清单6.6 BoxMaker.cpp

#include <iostream>
int main()
{
   int rows, columns;
   char character;

   std::cout << "How many rows? ";
   std::cin >> rows;
   std::cout << "How many columns? ";
   std::cin >> columns;
   std::cout << "what character to display? ";
   std::cin >> character;

   std::cout << "\n";
   for (int i = 0; i < rows; i++)
  {
       for (int j = 0; j < columns; j++)
      {
           std::cout << character;
      }
       std::cout << "\n";
  }
   return 0;
}

 

6.5 switch语句

switch语句检查一个表达式,并根据其值执行多个代码块中的一个

std::cout<<"You have kulled "<< zombies << " zombie";
switch(zombies)
{
   case 0:
       std::cout << "s\n";
       break;
   case 1:
       std::cout << "\n";
       break;
   default:
       std::cout << "s\n";
}

在switch语句的case部分,只能进行相等比较,而不能进行关系运算和布尔运算。如果有case值与表达式匹配,将执行相应的语句,然后继续执行到switch块末尾或遇到的第一个break语句。如果没有匹配的case部分,将执行可选的default部分。

在上例中,每个case部分都以一条break语句结尾,用于退出switch语句。如果case部分末尾没有break语句,将继续执行下一个case部分。在有些情况下,可利用这种办法来只想多个case部分。

程序清单6.7 BadTeacher.cpp

#include <iostream>
int main()
{
   char grade;
   std::cout << "Enter your letter grade (ABCDF):";
   std::cin >> grade;
   switch (grade)
  {
   case 'A':
       std::cout << "Finally!\n";
       break;
   case 'B':
       std::cout << "You can do better!\n";
       break;
   case 'C':
       std::cout << "I'm disappointed in you!\n";
       break;
   case 'D':
       std::cout << "You are not smart!\n";
       break;
   case 'F':
       std::cout << "Get out of my sight!\n";
       break;
   default:
       std::cout << "That's not even a grade!\n";
       break;
  }
   return 0;
}
posted @ 2020-07-13 17:16  小立哥  阅读(90)  评论(0编辑  收藏  举报