第6章 分支语句和逻辑运算符
6.1 if语句
例如,假设读者希望程序计算输入中的空格数和字符总数,则可以在while循环中使用cin.get(char)来读取字符,然后使用if语句识别空格字符并计算其总数。因为cin.get(char)可以获取空格
#include<iostream>
using namespace std;
int main()
{
char ch;
int spaces = 0;
int total = 0;
cin.get(ch);
while (ch != '.')
{
if (ch == ' ')
++spaces;
++total;
cin.get(ch);
}
cout << spaces << "spaces, " << total << "characters total in sentence\n";
system("pause");
return 0;
}
结果如下:
注意,字符总数中包括按回车键生成的换行符。
6.2 逻辑表达式
C++可以采用逻辑OR运算符(||),将两个表达式组合在一起。如果原来表达式中的任何一个或全部都为true(或非零),则得到的表达式的值为true;否则,表达式的值为false。
逻辑AND运算符(&&),也是将两个表达式组合成一个表达式。仅当原来的两个表达式都为true时,得到的表达式的值才为true。
在这个程序清单中,一个while循环将值读入到数组。一个测试(i<ArSize)在数组被填满时循环结束,另一个测试(temp>=0)让用户通过输入一个负值来提前结束循环。该程序使用&&运算符将两个测试组合成一个条件。该程序还使用了两条if语句、一条if else语句和一个for循环,因此它演示了本章和第5章的多个主题。
#include<iostream>
using namespace std;
const int ArSize = 6;
int main()
{
float naaq[ArSize];
cout << "Enter your NAAQ: " << endl;
int i = 0;
float temp;
cout << "First value: ";
cin >> temp;
while (i < ArSize&&temp >= 0)
{
naaq[i] = temp;
++i;
if (i < ArSize)
{
cout << "Next value: ";
cin >> temp;
}
}
if (i == 0)
cout << "No data--bye\n";
else
{
cout << "enter your NAAQ: ";
float you;
cin >> you;
int count = 0;
for (int j = 0; j < i; j++)
if (naaq[j] > you)
++count;
cout << count;
cout << "of your neighbors have greater awareness of\n"
<< "the New age than you do.\n";
}
system("pause");
return 0;
}
结过如下:
!运算符将它后面的表达式的真值取反。也是说,如果expression为true,则!expression是false;如果expression为false,则!expression是true。更准确地说,如果expression为true或非零,则!expression为false。
并不是所有的键盘都提供了用作逻辑运算符的符号,因此C++标准提供了另一种表示方式,如表6.3所示。标识符and、or和not都是C++保留字,这意味着不能将它们用作变量名等。