1.2.1 神奇的输出魔法
“小朋友们,让我们来学习第一个魔法咒语吧!”
🔬 实验:输出不同的内容
#include
using namespace std;
int main() {
// 输出文字
cout << "大家好!" << endl;
// 输出数字
cout << 2024 << endl;
// 输出表情
cout << "^_^" << endl;
// 输出字符
cout << 'A' << endl;
return 0;
}

1.2.2 输出的魔法技巧
“小C老师,为什么有些地方要用'<<‘符号啊?” 小明问道。
“啊,这个'<<‘就像是魔法箭头,告诉计算机’把这个东西说出来’。” 我解释道,”我们来看看更多的魔法技巧!”
🔬 实验:输出的各种花样
#include
using namespace std;
int main() {
// 在同一行输出多个内容
cout << "我今年" << 12 << "岁了" << endl;
// 输出特殊符号
cout << "★" << endl;
cout << "♥" << endl;
// 输出空行
cout << endl;
return 0;
}
1.2.3 cout输出中的引号使用规范
1. 特殊情况分析
(1)多字符常量的情况
// 示例1:使用单引号包含多个字符
cout << 'hello' << endl;
// 输出:1819043176
// 原因:'hello'被编译器解释为多字符常量(multi-character constant)
// 编译器将这些字符的ASCII码值组合成一个整数:
// - h的ASCII码是104
// - e的ASCII码是101
// - l的ASCII码是108
// - l的ASCII码是108
// - o的ASCII码是111
// 最终得到的具体数值取决于编译器的实现方式
// 这种写法虽然能编译通过,但是:
// 1. 结果是implementation-defined(依赖于具体实现)
// 2. 不同编译器可能产生不同结果
// 3. 不建议在实际编程中使用
// 正确写法应该是:
cout << "hello" << endl; // 输出:hello
(2)多重引号的情况
// 示例2:使用多重双引号
cout << """hello""" << endl;
// 输出:hello
// 注意:这种写法虽然能正常输出,但是:
// 1. 代码可读性差
// 2. 不符合编程规范
// 3. 可能在不同编译器中表现不同
// 4. 容易引起混淆
// 正确写法应该是:
cout << "hello" << endl; // 输出:hello
(3)其他常见情况
// 示例3:混用单双引号
cout << '"hello"' << endl;
// 输出:"hello"
// 这种写法虽然能编译通过,但不推荐:
// 1. 降低了代码可读性
// 2. 容易引起混淆
// 示例4:使用转义字符
cout << "\"hello\"" << endl;
// 输出:"hello"
// 这是一种正确的写法,但在不必要时应避免使用
// 示例5:正确的基本用法
cout << "hello" << endl; // 输出:hello
cout << 'h' << endl; // 输出:h
2. 最佳实践建议
(1)字符串输出规范
- 使用双引号(“”)包含字符串
cout << "hello world" << endl; // 正确<br>cout << "你好" << endl; // 正确<br>
(2)单个字符输出规范
- 使用单引号(”)包含单个字符
cout << 'A' << endl; // 正确<br>cout << '1' << endl; // 正确<br>cout << '#' << endl; // 正确<br>
(3) 需要避免的做法
- 不要使用单引号包含多个字符(即使能编译通过)
- 不要使用多重引号(即使能正常输出)
- 不要在不必要时混用单双引号
- 不要在不必要时使用转义字符
3. 实际输出示例对比
#include
using namespace std;
int main() {
cout << "测试1:使用单引号的多字符常量" << endl;
cout << 'hello' << endl; // 输出:1819043176
cout << "\n测试2:使用多重双引号" << endl;
cout << """hello""" << endl; // 输出:hello
cout << "\n测试3:正确的写法" << endl;
cout << "hello" << endl; // 输出:hello
cout << "\n测试4:单个字符" << endl;
cout << 'h' << endl; // 输出:h
return 0;
}
4. 关键注意事项
- 能编译通过不代表是正确的编程实践
- 应该遵循代码可读性和可维护性的原则
- 选择最清晰、最标准的写法
- 考虑代码在不同编译器下的兼容性
- 遵循团队或项目的编码规范
通过以上分析,我们可以看到:
- 某些看似错误的写法可能能够编译运行
- 但为了代码的可读性和可维护性,我们应该采用标准且清晰的写法
- 理解底层原理有助于避免潜在的问题
练习题:
选择题:以下哪个cout语句写法是正确的?()
A. cout << “Hello,GESP!” << endl;
B. cout << “Hello,GESP!’ << endl;
C. cout << “‘Hello,GESP!'” << endl;
D. cout << “””Hello,GESP!””” << endl;答案:A
解析:在C++中,字符串需要用双引号括起来,并且每个输出语句末尾要有分号。A选项的格式完全正确。判断题:在C++中,cout << “Hello” << endl; 和 cout << “Hello\n”; 的输出效果是完全相同的。()
答案:√
解析:endl和\n都能实现换行功能,它们在基本输出效果上是相同的。不过endl还会刷新输出缓冲区,而\n不会。
1.2.4 逗号表达式的秘密
“小朋友们,”我神秘地说,”cout里还有一个有趣的小秘密,那就是逗号表达式!”
// 逗号表达式示例
cout << (2, 3) << endl; // 输出3
cout << (1, 2, 3, 4) << endl; // 输出4
cout << ("apple", "banana", "orange") << endl; // 输出orange
“逗号表达式有个特点:它会依次计算每个表达式,但最终只返回最后一个表达式的值。就像排队一样,最后一个人才能得到奖品!”
练习题:
选择题:
执行语句 cout << (1, 2, 3, 4, 5) << endl; 后的输出结果是什么?( )
A. 1
B. 1,2,3,4,5
C. 5
D. 15答案:C
解析:逗号表达式会依次计算每个表达式的值,但最终只返回最后一个表达式的值。因此这个表达式只会输出最后的值5。以下哪个逗号表达式的结果是正确的?( )
A. cout << (“a”, “b”, “c”) << endl; // 输出:a
B. cout << (“a”, “b”, “c”) << endl; // 输出:abc
C. cout << (“a”, “b”, “c”) << endl; // 输出:c
D. cout << (“a”, “b”, “c”) << endl; // 输出:a,b,c答案:C
解析:在逗号表达式中,字符串常量的处理与数字类似,最终只会返回最后一个值”c”。其他选项都是错误的输出结果。
判断题:
在逗号表达式中,所有子表达式都会被输出。( )
答案:×
解析:逗号表达式虽然会从左到右依次计算所有子表达式,但最终只返回最后一个子表达式的值,其他的值会被丢弃。逗号表达式的计算顺序是从右到左的。( )
答案:×
解析:逗号表达式的计算顺序是从左到右的,虽然最终只返回最右边表达式的值,但计算过程是按照从左到右的顺序进行的。
真题精讲
第1题
在C++中,下列表达式正确的是( )
A. cout << “Hello,GESP!” << endl;
B. cout << “Hello,GESP’!” << endl;
C. cout << “””Hello,GESP!””” << endl;
D. cout << “Hello,GESP’!” << endl;
答案:A
解析:
- 这道题考察C++中cout输出字符串的正确语法
- 选项A是标准的cout输出语句格式:使用双引号包含字符串,使用endl进行换行
- 选项B和D在字符串中包含了单引号,可能导致字符串解析错误
- 选项C使用了多重双引号,这种写法虽然在某些编译器中可能通过,但不是标准写法
- 因此A是最规范、正确的写法
第2题
在Dev C++中对一个写好的C++源文件要生成一个可执行程序需执行下面哪个处理步骤?( )
A. 创建
B. 编码
C. 编译
D. 调试
答案:C
解析:
- 这道题考察程序开发的基本流程
- 创建是新建文件的步骤
- 编码是写代码的步骤
- 编译是将源代码转换为可执行程序的步骤
- 调试是查找和修复程序错误的步骤
- 要生成可执行程序,必须进行编译步骤
- 因此选择C编译
第3题
小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以以Dev C++也是一个小型操作系统。( )
答案:×
解析:
- 这道题考察对开发环境和操作系统概念的理解
- Dev C++是一个集成开发环境(IDE),不是操作系统
- IDE是在操作系统上运行的应用程序,提供代码编写、编译、运行等功能
- 操作系统(如Windows、Linux、MacOS)是管理计算机硬件和软件资源的系统软件
- Dev C++需要运行在操作系统之上,它本身不能替代操作系统的功能
- 因此说Dev C++是操作系统是错误的
第4题
在C++语言中,注释不宜写得过多,否则会使得程序运行速度变慢。( )
答案:×
解析:
- 这道题考察对程序注释的理解
- 注释是写给程序员看的说明文字,编译器在编译时会自动忽略所有注释
- 注释不会被转换成机器码,因此不会影响程序的运行速度
- 适当的注释可以提高代码的可读性和可维护性
- 注释的多少只影响源代码文件的大小,不影响最终生成的可执行程序的性能
- 所以说注释会影响程序运行速度的说法是错误的
第5题
C++语句 cout << (3,2) 执行后,将输出3和2,且3和2之间有特殊问题。( )
答案:×
解析:
- 这道题考察C++中逗号表达式的理解
- (3,2)是一个逗号表达式,不是两个独立的数字
- 逗号表达式的特点是:
- 从左到右依次计算每个表达式
- 整个表达式的值是最后一个表达式的值
- 在这个例子中:
- 先计算3,但结果被丢弃
- 再计算2,这个值作为整个表达式的最终值
- 最终只输出2
- 所以cout << (3,2)只会输出2,而不会输出3和2
- 因此这个说法是错误的
例题1-1:自我介绍
“小朋友们,让我们用程序来做个自我介绍吧!”
问题描述 编写一个程序,输出一段自我介绍:我叫xxx,今年xx岁,是xxxxx学校xx年级xx班的学生,我的兴趣爱好是xxxx!
#include
using namespace std;
int main() {
cout << "我叫小明,今年12岁," << endl;
cout << "是阳光小学六年级一班的学生," << endl;
cout << "我的兴趣爱好是编程!" << endl;
return 0;
}
例题1-2:输出一首唐诗
“现在让我们试试输出一首优美的唐诗!”
问题描述 用程序输出一首唐诗《静夜思》。
#include
using namespace std;
int main() {
cout << "床前明月光," << endl;
cout << "疑是地上霜。" << endl;
cout << "举头望明月," << endl;
cout << "低头思故乡。" << endl;
return 0;
}