根据提供的信息,我们可以总结出以下知识点:
### 一、空语句
**知识点:**
- **定义:** 空语句是一种特殊的语句形式,在C++中由一个单独的分号构成。
- **用途:** 空语句常用于占位或者作为控制结构的一部分。
**示例代码:**
```cpp
while (cin >> s && s != sought) ;
// 空语句
```
- 上述代码中的空语句被用作`while`循环的一部分,当条件满足时执行空操作。
### 二、块(复合语句)
**知识点:**
- **定义:** 块是由一对花括号括起来的一组语句和声明,也称为复合语句。
- **用途:** 块可以用来组织一组语句,使之成为一个整体,例如在循环或条件判断中。
**示例代码:**
```cpp
while (condition) {
// 多条语句
statement1;
statement2;
...
}
```
### 三、while循环中的初始化和更新
**知识点:**
- **定义:** 在`while`循环中,可以在循环条件内进行变量的初始化和更新。
- **示例代码:**
```cpp
while (int sum = 0, val = 1; val <= 10; sum += val, ++val) {
// 循环体
}
```
- 上述代码展示了如何在`while`循环的条件部分同时初始化多个变量,并且在每次循环迭代时更新这些变量。
### 四、错误修正
**知识点:**
- **问题:** 变量未初始化、函数调用错误等。
- **修正:**
- 确保所有使用的变量都已正确初始化。
- 使用正确的函数调用来执行预期的操作。
**示例代码:**
```cpp
// 错误版本
auto itr;
while (itr != s.end()) {
if (find(s, word)) {
// ...
}
}
// 修正后的版本
auto itr = s.begin();
while (itr != s.end()) {
std::string word = "some_word"; // 给word赋值
if (std::find(s.begin(), s.end(), word) != s.end()) {
// ...
}
}
```
### 五、成绩转换程序
**知识点:**
- **功能:** 将输入的成绩转换为字母等级。
- **代码实现:**
**示例代码:**
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
const vector<string> scores = {"F", "D", "C", "B", "A", "A++"};
vector<unsigned> grades;
unsigned grade;
while (cin >> grade)
grades.push_back(grade);
for (vector<unsigned>::const_iterator it = grades.begin(); it != grades.end(); ++it) {
cout << *it << "\t";
string letter_grade;
if (*it < 60)
letter_grade = scores[0];
else {
letter_grade = scores[(*it - 50) / 10];
if (*it != 100) {
if (*it % 10 > 7)
letter_grade += '+';
else if (*it % 10 < 3)
letter_grade += '-';
}
}
cout << letter_grade << endl;
}
}
```
- 此代码实现了一个简单的成绩转换程序,通过用户输入的成绩来确定相应的字母等级。
### 六、三元运算符和条件判断优化
**知识点:**
- **定义:** 三元运算符是一种简化的条件表达式。
- **示例代码:**
```cpp
if (*it % 10 > 7)
letter_grade += '+';
else if (*it % 10 < 3)
letter_grade += '-';
```
- **优化:**
```cpp
(*it % 10 > 7) ? (letter_grade += '+') : (*it % 10 < 3) ? (letter_grade += '-') : (letter_grade);
```
- 优化后的代码使用了三元运算符来简化条件判断。
### 七、悬垂else问题
**知识点:**
- **定义:** 当一个`if`语句后面跟着一个`else`语句时,如果`if`语句本身是另一个`if`语句的一部分,就会出现悬垂else问题。
- **解决方案:** 通过明确地使用花括号来包裹`if`语句的块,避免歧义。
### 八、元音计数器
**知识点:**
- **功能:** 计算输入字符中元音字母的数量。
- **代码实现:**
```cpp
#include <iostream>
using namespace std;
int main() {
unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
char ch;
while (cin >> ch) {
switch (ch) {
case 'a': aCnt++; break;
case 'e': eCnt++; break;
case 'i': iCnt++; break;
case 'o': oCnt++; break;
case 'u': uCnt++; break;
}
}
cout << "Number of vowel a: \t" << aCnt << '\n'
<< "Number of vowel e: \t" << eCnt << '\n'
<< "Number of vowel i: \t" << iCnt << '\n'
<< "Number of vowel o: \t" << oCnt << '\n'
<< "Number of vowel u: \t" << uCnt << endl;
return 0;
}
```
- 上述代码实现了统计输入字符中各种元音字母数量的功能。
- 1
- 2
- 3
- 4
- 5
- 6
前往页