返回 课程

模板 信奥AC之路(第一级)

0% 完成
0/0 步骤
  1. 第一课 开发环境与基础输出
    4 主题|小节
  2. 第二课 算数运算符
    6 主题|小节
  3. 第三课 输入与运算
    3 主题|小节
  4. 第四课 数值操作
    4 主题|小节
  5. 第五课 表达式与运算符
    3 主题|小节
  6. 第六课 三目运算与双分支(缺导语+本课目标)
    2 主题|小节
  7. 第七课 多分支结构(缺导语+本课目标)
    1 主题|小节
  8. 第八课 多if语句
    1 主题|小节
  9. 第九课 三种分支结构的比较
    1 主题|小节
  10. 第十课 巩固学习分支结构
    1 主题|小节
  11. 第十一课 switch与复合语句
    3 主题|小节
  12. 第十二课 while循环
    2 主题|小节
  13. 第十三课 while循环的简单条件输出
    1 主题|小节
  14. 第十四课 while循环的输入序列处理
    1 主题|小节
  15. 第十五课 while循环的复杂条件输出
    2 主题|小节
  16. 第十六课 while循环与数据统计
    1 主题|小节
  17. 第十七课 for循环结构
    3 主题|小节
  18. 第十八课 for循环的输入序列处理)
    1 主题|小节
  19. 第十九课 深入探索for循环
    2 主题|小节
  20. 第二十课 三种循环的对比
    2 主题|小节
  21. 第二十一课 程序调试(一)
    3 主题|小节
  22. 第二十二课 调试工具的使用
    2 主题|小节
  23. 第二十三课 综合复习
    2 主题|小节
  24. 第二十四课 学习评估
    1 主题|小节
课 1, 主题|小节 2
进行中

1.2 让计算机说话

2025年4月20日
课 进展
0% 完成

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 &lt;&lt; &quot;我今年&quot; &lt;&lt; 12 &lt;&lt; &quot;岁了&quot; &lt;&lt; endl;

    // 输出特殊符号
    cout &lt;&lt; &quot;★&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;♥&quot; &lt;&lt; endl;

    // 输出空行
    cout &lt;&lt; endl;

    return 0;
}

1.2.3 cout输出中的引号使用规范

1. 特殊情况分析
(1)多字符常量的情况
// 示例1:使用单引号包含多个字符
cout &lt;&lt; 'hello' &lt;&lt; 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 &lt;&lt; &quot;hello&quot; &lt;&lt; endl;    // 输出:hello
(2)多重引号的情况
// 示例2:使用多重双引号
cout &lt;&lt; &quot;&quot;&quot;hello&quot;&quot;&quot; &lt;&lt; endl;   
// 输出:hello
// 注意:这种写法虽然能正常输出,但是:
// 1. 代码可读性差
// 2. 不符合编程规范
// 3. 可能在不同编译器中表现不同
// 4. 容易引起混淆

// 正确写法应该是:
cout &lt;&lt; &quot;hello&quot; &lt;&lt; endl;    // 输出:hello
(3)其他常见情况
// 示例3:混用单双引号
cout &lt;&lt; '&quot;hello&quot;' &lt;&lt; endl;   
// 输出:&quot;hello&quot;
// 这种写法虽然能编译通过,但不推荐:
// 1. 降低了代码可读性
// 2. 容易引起混淆

// 示例4:使用转义字符
cout &lt;&lt; &quot;\&quot;hello\&quot;&quot; &lt;&lt; endl;  
// 输出:&quot;hello&quot;
// 这是一种正确的写法,但在不必要时应避免使用

// 示例5:正确的基本用法
cout &lt;&lt; &quot;hello&quot; &lt;&lt; endl;     // 输出:hello
cout &lt;&lt; 'h' &lt;&lt; endl;         // 输出:h
2. 最佳实践建议
(1)字符串输出规范
  1. 使用双引号(“”)包含字符串
    cout &lt;&lt; &quot;hello world&quot; &lt;&lt; endl;  // 正确<br>cout &lt;&lt; &quot;你好&quot; &lt;&lt; endl;         // 正确<br>

(2)单个字符输出规范
  1. 使用单引号(”)包含单个字符
    cout &lt;&lt; 'A' &lt;&lt; endl;      // 正确<br>cout &lt;&lt; '1' &lt;&lt; endl;      // 正确<br>cout &lt;&lt; '#' &lt;&lt; endl;      // 正确<br>

(3) 需要避免的做法
  1. 不要使用单引号包含多个字符(即使能编译通过)
  2. 不要使用多重引号(即使能正常输出)
  3. 不要在不必要时混用单双引号
  4. 不要在不必要时使用转义字符
3. 实际输出示例对比
#include 
using namespace std;

int main() {
    cout &lt;&lt; &quot;测试1:使用单引号的多字符常量&quot; &lt;&lt; endl;
    cout &lt;&lt; 'hello' &lt;&lt; endl;  // 输出:1819043176
    
    cout &lt;&lt; &quot;\n测试2:使用多重双引号&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;&quot;&quot;hello&quot;&quot;&quot; &lt;&lt; endl;  // 输出:hello
    
    cout &lt;&lt; &quot;\n测试3:正确的写法&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;hello&quot; &lt;&lt; endl;  // 输出:hello
    
    cout &lt;&lt; &quot;\n测试4:单个字符&quot; &lt;&lt; endl;
    cout &lt;&lt; 'h' &lt;&lt; endl;  // 输出:h
    
    return 0;
}
4. 关键注意事项
  1. 能编译通过不代表是正确的编程实践
  2. 应该遵循代码可读性和可维护性的原则
  3. 选择最清晰、最标准的写法
  4. 考虑代码在不同编译器下的兼容性
  5. 遵循团队或项目的编码规范

通过以上分析,我们可以看到:

  • 某些看似错误的写法可能能够编译运行
  • 但为了代码的可读性和可维护性,我们应该采用标准且清晰的写法
  • 理解底层原理有助于避免潜在的问题

练习题:

  1. 选择题:以下哪个cout语句写法是正确的?()
    A. cout << “Hello,GESP!” << endl;
    B. cout << “Hello,GESP!’ << endl;
    C. cout << “‘Hello,GESP!'” << endl;
    D. cout << “””Hello,GESP!””” << endl;


    答案:A
    解析:在C++中,字符串需要用双引号括起来,并且每个输出语句末尾要有分号。A选项的格式完全正确。


  2. 判断题:在C++中,cout << “Hello” << endl; 和 cout << “Hello\n”; 的输出效果是完全相同的。()


    答案:√
    解析:endl和\n都能实现换行功能,它们在基本输出效果上是相同的。不过endl还会刷新输出缓冲区,而\n不会。


1.2.4 逗号表达式的秘密

“小朋友们,”我神秘地说,”cout里还有一个有趣的小秘密,那就是逗号表达式!”

// 逗号表达式示例
cout &lt;&lt; (2, 3) &lt;&lt; endl;         // 输出3
cout &lt;&lt; (1, 2, 3, 4) &lt;&lt; endl;   // 输出4
cout &lt;&lt; (&quot;apple&quot;, &quot;banana&quot;, &quot;orange&quot;) &lt;&lt; endl;  // 输出orange

“逗号表达式有个特点:它会依次计算每个表达式,但最终只返回最后一个表达式的值。就像排队一样,最后一个人才能得到奖品!”

练习题:

选择题:
  1. 执行语句 cout << (1, 2, 3, 4, 5) << endl; 后的输出结果是什么?( )
    A. 1
    B. 1,2,3,4,5
    C. 5
    D. 15


    答案:C
    解析:逗号表达式会依次计算每个表达式的值,但最终只返回最后一个表达式的值。因此这个表达式只会输出最后的值5。


  2. 以下哪个逗号表达式的结果是正确的?( )
    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. 在逗号表达式中,所有子表达式都会被输出。( )


    答案:×
    解析:逗号表达式虽然会从左到右依次计算所有子表达式,但最终只返回最后一个子表达式的值,其他的值会被丢弃。


  2. 逗号表达式的计算顺序是从右到左的。( )


    答案:×
    解析:逗号表达式的计算顺序是从左到右的,虽然最终只返回最右边表达式的值,但计算过程是按照从左到右的顺序进行的。


真题精讲

第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)是一个逗号表达式,不是两个独立的数字
  • 逗号表达式的特点是:
    1. 从左到右依次计算每个表达式
    2. 整个表达式的值是最后一个表达式的值
  • 在这个例子中:
    1. 先计算3,但结果被丢弃
    2. 再计算2,这个值作为整个表达式的最终值
    3. 最终只输出2
  • 所以cout << (3,2)只会输出2,而不会输出3和2
  • 因此这个说法是错误的

例题1-1:自我介绍

“小朋友们,让我们用程序来做个自我介绍吧!”

问题描述 编写一个程序,输出一段自我介绍:我叫xxx,今年xx岁,是xxxxx学校xx年级xx班的学生,我的兴趣爱好是xxxx!

#include 
using namespace std;

int main() {
    cout &lt;&lt; &quot;我叫小明,今年12岁,&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;是阳光小学六年级一班的学生,&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;我的兴趣爱好是编程!&quot; &lt;&lt; endl;
    return 0;
}

例题1-2:输出一首唐诗

“现在让我们试试输出一首优美的唐诗!”

问题描述 用程序输出一首唐诗《静夜思》。

#include 
using namespace std;

int main() {
    cout &lt;&lt; &quot;床前明月光,&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;疑是地上霜。&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;举头望明月,&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;低头思故乡。&quot; &lt;&lt; endl;
    return 0;
}