CPP 6. 分支语句和逻辑运算符 2020-10-17 浏览量 533 暂无评论 # 第6章 分支语句和逻辑运算符 ## 6.1 if语句 ```cpp #include int main() { char ch; std::cout << "Type, and I shall repeat.\n"; std::cin.get(ch); while (ch != '.') { if (ch == '\n') std::cout << ch; else if (' ' == ch) // ch == ' '错误防范,防止将==写成= std::cout << ch; else std::cout << char(ch + 1); std::cin.get(ch); } std::cout << "\nPlease excuse the slight confusion.\n"; std::cin.get(); std::cin.get(); return 0; } ``` ## 6.2 逻辑表达式 逻辑OR(||, or)、逻辑AND(&&, and)、逻辑NOT(!, not)。 🐸注意: 1. 不要误将`age > 17 && age < 35`写成`17 < age < 35`,这样程序不会报错,但测试结果将一直为true; 2. 逻辑运算符`||, &&`的优先级比关系运算符低,但`!`的优先级高于所有的关系运算符和算术运算符,`&&`高于`||`; 3. C++确保程序从左向右进行计算逻辑表达式,并在知道答案后立刻停止; ## 6.3 字符函数库cctype 简化一些有关字符的工作。 这些函数的返回类型为int,但在测试表达式时,会激活bool转换。 `isalpha(ch)`:是否为字母; `ispunct(ch)`:是否为标点符号; `isdigits(ch)`:是否为数字(0~9); `isspace(ch)`:是否为空白(换行、空格、制表符); `isalnum(ch)`:是否为字母数字; `iscntr(ch)`:是否为控制字符; `isgraph(ch)`:是否为除空格之外的打印字符; `islower(ch)`:是否为小写字母; `isprint(ch)`:是否为打印字符(包括空格); `isupper(ch)`:是否为大写字母; `isxdigit(ch)`:是否为十六进制数字; `tolower(ch)`:大写变小写; `toupper(ch)`:小写变大写; ## 6.4 ?:运算符 常被用来代替if else语句,是C++中唯一一个需要3个操作数的运算符。 `expression1 ? expression2 : expression3` 如果expression1为true,则整个表达式的值为expression2的值,否则为expression3的值,条件表达式可以嵌套在另一个条件表达式中。 ```cpp const cgar x[2][20] = {"Jason ", "at your service\n"}; const char * y = "Quillstone "; for (int i = 0; i < 3; i++) cout << ((i < 2) ? !i ? x[i] : y : x[1]); // Jason Quillstone at your service ``` ## 6.5 switch语句 🌈注意哦: 1. case只是行标签,程序跳到switch中特定代码行后,将以此执行之后的所有语句,除非有明确的其他指示(如break); 2. 更容易从大型列表中进行选择,如果既可以使用if else if语句,又可以使用switch语句,则当选项不少于3个时,应使用switch语句,效率更高; 3. 如果default标签被省略,而又没有匹配的标签,则程序将跳到switch后面的语句处执行。 ```cpp switch (integer-expression) { case label1 : statement(s) case label2 : statement(s) ... default : statement(s) } ``` ## 6.6 break和continue语句 一个跳出本层,一个跳出本次。 ## 6.7 简单文件输入/输出 ```cpp #include #include using namespace std; /********** 输出 **********/ ofstream outFile; ofstream fout; // outFile可使用cout可使用的任何方法 outFile.open("fish.txt"); char filename[50]; cin >> filename; fout.open(filename); double wt = 125.8; outFile << wt; char line[20] = "I love coding."; fout << line << endl; /********** 输入 **********/ ifstream inFile; ifstream fin; inFile.open("bowling.txt"); // 检查文件是否被成功打开 #include if (!inFile.is_open()) { exit(EXIT_FAILURE); } // 检查是否为EOF inFile.good(); inFile.eof(); char filename[50]; cin >> filename; fin.open(filename); double wt; inFile >> wt; // 从文件中读取一个数字 char line[81]; fin.getline(line, 81); // 从文本中读取一行 ... inFile.close(); ``` 赞赏 微信支付 支付宝支付