通过示例学习
要想学会用一门新语言编程,最好的方法之一就是 许多示例程序中的代码。最佳做法是复制和粘贴 将以下每个程序转换为文本文件并对其进行编译。然后尝试运行实验。 通过扩展这些示例程序,您将熟悉 而且在用 C++ 编写程序时,您将更有信心 。
示例 1:让编译器正常运行!
如果您尚未安装以下传统版程序,请复制并粘贴 创建一个文本文件并对其进行编译。提供了关于编译的说明 此处。
您可能在教程中了解了此程序的详细信息, 因此,我们在这里不做逐行说明。需要完成一些设置 但需要注意一下可读性。这是指评论 和格式,使程序易于阅读、理解和维护。
- 我们编写的每个程序都以标头注释开头,并提供名称 作者的姓名、联系信息、简短说明和用法 (如果相关)。每个函数都以对运算和使用情况的注释开始。
- 只要代码与代码相同,我们都会使用完整的句子添加说明性注释。 而非文档本身。例如,如果处理过程较为复杂且不明显, 有趣或重要。
- 始终使用描述性名称:变量以小写字词分隔 例如 my_variable。函数名称使用大写字母来标记单词, 如 MyExcitingFunction() 中所示。常量以“k”开头并使用 用大写字母标记单词,如 kDaysInWeek。
- 缩进量为 2 的倍数。第一层为两个空格;如果进一步 因此需要缩进,我们使用 4 个空格、6 个空格等。
// hello.cpp: Maggie Johnson // Description: a program that prints the immortal saying "hello world" #include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; }
您可以尝试进行以下实验:
- 最重要的是确保您可以编译并运行此程序。
- 修改上述程序,使其输出“Hello World!”四次 行,每行 17 个空格。使用 for 循环 来实现这一点点击此处 了解如何使用 cout 设置输出格式。点击此处 查看解决方案。
- 使用您刚刚完成的程序,了解如何输出“Hello 世界!”在 17 个空格字段中左对齐(默认为 右对齐)。点击此处查看解决方案。
示例 2:获取一些输入
使用 cin 可以轻松通过 C++ 从键盘获取输入。示例如下:
// get_input.cpp: Maggie Johnson // Description: Illustrate the use of cin to get input. #include <iostream> using namespace std; int main() { int input_var = 0; // Enter the do while loop and stay there until either // a non-numeric is entered, or -1 is entered. Note that // cin will accept any integer, 4, 40, 400, etc. do { cout << "Enter a number (-1 = quit): "; // The following line accepts input from the keyboard into // variable input_var. // cin returns false if an input operation fails, that is, if // something other than an int (the type of input_var) is entered. if (!(cin >> input_var)) { cout << "You entered a non-numeric. Exiting..." << endl; break; // exit the do while loop } if (input_var != -1) { cout << "You entered " << input_var << endl; } } while (input_var != -1); cout << "All done." << endl; return 0; }
实验:
- 当出现输入错误时,流会“中断”cin 返回
false,程序就会停止。请务必防止此类错误
就像我们在上述程序中所做的那样。但是,如果我们想要从错误中恢复,
而不是让程序停止运行?从恢复模式
出错:
<ph type="x-smartling-placeholder">
- </ph>
- 使用 cin.clear() 清除错误。
- 从信息流中删除错误字符。一种方法是使用 cin.ignore()。
使用以下两个步骤编写一个可从错误输入中恢复的程序。使用 来搜索这些方法的工作原理。点击此处即可了解我们的解决方案。
示例 3:此程序输出什么?
#include <iostream> using namespace std; int main() { cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl; for (int c = 1; c < 10; c++) { cout << c << "| "; for (int i = 1; i < 10; i++) { cout << i * c << '\t'; } cout << endl; } return 0; }
示例 4:分解使一切变得更容易...
现在该我们开始编写计算机游戏了!第一个步骤稍微简单一些 但它只是个开始我们的任务是编写一个程序, 。我们的程序会生成一个介于 0 到 100 之间的随机数字。播放器必须 猜密码。该程序会提供诸如“太高”之类的提示或者“这是 “过低”直到玩家最终猜出密码。
我们将分三步来开发这款游戏。
- 了解如何在给定的值范围内生成随机数。
- 创建一个主函数,用于处理玩家的一次猜测, 提示。
- 添加所需的内容,允许玩家多次猜测,直到玩家猜出 数字。
这个开发过程称为分解,这意味着分解一个任务, 轻松创建每个子任务
从第 1 步开始,通过 Google 搜索了解如何生成随机数 使用 C++ 编写代码。请尝试搜索“rand C++”。点击此处 解决方案
对于第 2 步,我们需要从播放器接收整数输入(使用 cin 进行错误检查),并对照密钥进行检查。尝试写作 然后再查看我们的 解决方案。
最后,我们需要添加一个循环,用于持续收集玩家猜测值 直到他们最终猜出密码。在完成 计划,您可以查看我们的解决方案。
分解是程序员要学习的最重要的技能之一。 能够将任务分解成易于管理的部分,然后完成一项任务 而不论项目规模大小,都至关重要。以下是一些 让您有机会练习分解。
- 许多日常任务都提供了培养分解技能的机会。
您可能会惊讶地发现,您的大脑就是这样运作的!
比方说,如果我必须打扫一个非常凌乱的厨房 我会将任务分解成一个计划 确保以后不必重新执行该操作我不想洗 如果台面上有各种各样的东西需要清理,那么我会 可能以后不得不再次进行地面操作也许我会把所有原料都加入 先离开把所有盘子都放到水槽里摆脱摆脱摆脱困境的困扰;清洗 餐盘;最后,清理地板您还可以通过其他方式 但通过先仔细考虑,它能帮助我制定一个计划, 不需要重新制作。
以日常任务为例,培养分解技能。 谁知道呢 - 它甚至可能会让你在家里更高效!
- 两个整数的最大公约数是
会将两个均值均分。例如,gcd(12, 18) = 6, gcd(−4, 14) = 2。
计算 gcd 的最有效方法是使用欧几里得算法。撰写
一个程序,其中包含一个用于计算两个整数的 gcd 的函数。尝试执行
函数 - 这将有助于您理解算法是如何
工作。
明确定义您的子任务,例如,查找欧几里得 算法;为该算法创建一个非递归函数;等等。请点击此处 解决方案
示例 5:数学谜题
计算的其中一项强大功能是能够对 问题的解决方案。尝试和反复实验对某些问题来说效果很好。 事实上,计算机在这类问题上尤其擅长处理。请考虑以下要点:
马的售价为 10 美元,猪的售价为 3 美元,兔子只需 0.50 美元。一个农民买了 100 本 100 元钱,他买了几只动物?
这个问题有一个非常简单的解决方法。看看您能否找到 然后再查看我们的。
你还可以试试以下指令:
在书架上可以从左到右排列 6 本不同的图书有多少种?
这一次,我们只为您提供解决方案,让您编写程序: 720。
示例 6:供您参考的字符串
以下程序会输出什么内容?
#include <iostream> using namespace std; int main() { string str1 = "To be or not to be, that is the question"; string str2 = "only "; string str3 = str1.substr(6, 12); str1.insert(32, str2); str1.replace(str1.find("to be", 0), 5, "to jump"); str1.erase(9, 4); cout << str1 << endl; for (int i = 0; i < str3.length(); i++) cout << str3[i]; cout << endl; }
点击 此处获取帮助。
示例 7:分解后的后续步骤 - 上班的第一天
您刚刚获得了一家 ExerShoe 公司的销售人员。 高端运动鞋,每双约 225 美元。老板已经给你 三个薪酬选项 您必须首先选择这三种薪酬 天:
- 直薪为每周 600 美元;
- 时薪 7.00 美元外加 10% 的销售佣金;
- 没有薪资,但每销售一双鞋子,收取 20% 的佣金,加 20 美元
作为一名专业的 C++ 程序员,您可以编写程序来帮助自己 做出最佳的薪酬方案。
对大型程序进行分解的一种常用方法是 一个看似大纲的主函数,用来解决问题。然后, 我们要编写相应的函数来完成每项任务。
以下是在主程序中的第一步:
GetInput(WeeklySales); CalcMethod1(WeeklySales); CalcMethod2(WeeklySales); CalcMethod3(WeeklySales);
请先了解您能否实现上述每个功能,然后再参阅我们的 解决方案。
示例 8:哪里提供哪些商品?
以下程序的输出是什么?
// scope.cpp, Maggie Johnson // Description: A program to illustrate different scopes #include <iostream> using namespace std; int a = 18; int b = 6; int function1(int a, int b) { return a - b; } int function2() { int c; c = a + b; return c; } int main() { int b = 12; int c = 0; a = function1(b, a); c = function2(); cout << "a: " << a << " b: " << b << " c: " << c << endl; }
找到答案后,请点击此处查看我们注释版代码。
示例 9:处理文件
C++ 中的文件处理是使用 fstream 执行的。为了保存到文件中 声明一个 ofstream,并使用“out”模式。勾选此项 示例。
// file.cpp, Maggie Johnson // Description: An illustration of file processing #include <fstream> #include <iostream> using namespace std; int main() { char first_name[30], last_name[30]; int age; char file_name[20]; // Collect the data. cout << "Enter First Name: "; cin >> first_name; cout << "Enter Last Name: "; cin >> last_name; cout << "Enter Age: "; cin >> age; cout << endl << "Enter the name of the file: "; cin >> file_name; // Create an ofstream called People, open the stream for output. ofstream People(file_name, ios::out); // Write the output to the stream. People << first_name << endl << last_name << endl << age << endl; return 0; }
- 看看您能否弄清楚如何打开刚刚创建的文件,并显示 数据。点击此处即可了解我们的解决方案。
- 现在看看您能否修改此程序, 使用循环来生成数据记录。我们还想读回所有数据, 同时保留点击此处即可了解我们的解决方案。
现在,您已准备好尝试一些练习 项目!
Google 软件工程师体验
练习和项目
以下练习将 可进一步练习使用基本 C++。我们不为这些练习提供解决方案 因为我们希望您能和这个领域的其他学生合作, 课程。
- 板球的共同鸣叫声与当前温度成正比。
将板球在一分钟内的鸣叫声加 40,然后除以
该值乘以 4 即可得出温度。编写一个接受输入的程序
一分钟内的鸣叫声次数并输出当前温度。对于
示例,
Number of chirps: 120 The temperature is: 40.0 degrees.
- 编写一个可计算编程课程最终成绩的程序
评分方案如下:
Final grades will be based on the following: 40% Assignments 15% Midterm Examination 35% Final Examination 10% Class Participation Grade
您的程序应要求用户提供四个作业分数,即期中或 最终和单元成绩。然后,计算并输出最终得分。 计算时,需要将四项作业的分数相加 然后再乘以 0.4 (40%)。然后将期中分数乘以 最终的 0.35 分,参与评分 0.1 分。之后您 将这些乘法运算的所有结果相加。
在此程序中尽可能使用函数。你可以创建一个函数 通过以参数形式传入要显示的字符串来获取输入 解释清楚了。以下是运行示例:
Enter the score for the first assignment. 75 Enter the score for the second assignment. 85 Enter the score for the third assignment. 82 Enter the score for the fourth assignment. 94 Enter the score for the midterm. 81 Enter the score for the final. 89 Enter the score for the section grade. 100 The final grade is: 86.9
- 随着电子秒表越来越实惠,价格也越来越准确,我们将不再
以不可能精确的时间测量为基石进行冲击。编写程序
该方法将给定时间段(以秒为单位)作为输入,并输出
代表小时、分钟和秒例如:
Number of seconds: 3662 Hours: 1 Minutes: 1 Seconds: 2
- 假设我们想为以下内容输出一条横幅:
“自由呼吸,让三根冻结”
我们希望字母非常大,因为这是一个横幅:
等等FFFFF F FFF F F EEEEE E EEE E EEEEE
作为优秀的问题分解者,您可能会注意到, 把所有函数都放在主函数中, 将它们放在函数中。我们可以创建“printE”函数 和“printZ”函数等等。
编写一个包含函数的程序,用来创建字词或短语的横幅 包含大量重复的字母您可以采用以下方法:
FREEZY BREEZE MAKES FLEAS SNEEZE TWEETLE BEETLE PADDLE BATTLE SIX SICK CHICKS KICK SUE SEWS SUE'S SOCKS BEN BENDS BIM'S BROOM
- 这是一个“神奇数字”问题:要求用户输入 3 位数字
第一个数字大于最后一个数字。您的程序将反转
从原序号中减去反转数。最后,
反转所得数字,并将其添加到其反转形式。将
最终结果。用户输入的原始数字必须为整数
类型(而不是三个字符)。考虑如何编写一个接受
作为输入,并返回该数字的反转值。示例:
input number: 901 reverse it: 109 subtract: 901 - 109 = 792 reverse it: 297 add: 297 + 792 = 1089
- 相关法律规定,食品制造商必须为食品添加下架日期
但其法律存在漏洞:我们不要求
失效日期应采用任何特定形式。因此,它可以写成
斯瓦希里语,仍然合法。
Ralph Nader 的第三位表姐 Nadine 自封为食品质量间谍。 她了解到许多食品制造商已经开始编码 商品下架日期,以免客户知道
但通过这种编码,食品杂货商可以 查明过期日期 如果出于某种原因想要这样做
一种常用的编码方法:
- 将 1 月到 12 月的月份编码为“A”到“L”
- 将日期的每个数字编码为“Q”到“Z”
- 将年份编码为“A”到“Z”即 1 到 26,然后 添加到 1995 年。
小娜发现一块面包的日期非常可疑:ARZM。 编写一个程序来确定日期。
- 这与一种著名的纸牌技巧用数字进行了相似。要求用户输入 一个三位数的数字。将数字视为 ABC(其中 A、B、C 是三个 数字)。现在,求出由 计算的数的余数 ABC、BCA 和 CAB 除以 11。我们将这些余数称为 X、Y, 的将它们相加为 X+Y、Y+Z、Z+X。如果总和为奇数,则增加或 则将其减 11(取正数的运算结果 超过 20 个;请注意,如果总和为 9,只需报告此问题并停止该过程即可)。最后, 将每个总和除以二。得到的数字为 A、B、C。撰写 一个实现此算法的程序。
对于以下内容,请在编写程序之前进行分解。 尽可能使用函数来创建结构合理的程序。
应用:使用动画直观呈现音乐
软件工程师能够开发出各种极具趣味性和创新性的应用。 在本课程的每个单元中,我们都会介绍一种不同的应用, 帮助您了解广告在不同领域中
这里有一项有趣的活动 这是一款用于直观呈现音乐的应用