• C++ 第一阶段编程练习


    目录

    1.1   编程练习

    1.1.1   编程题目

    #第一题

    #第二题

    #第三题

    #第四题

    #第五题

    #第六题

    #第七题

    1.2   编程讲解 

    1.2.1   #题目一

    1.2.2   #题目二

    1.2.3   #题目三

    1.2.4   #题目四 

    1.2.5   #题目五

    1.2.6   #题目六

    1.2.7   #题目七

    总结


    【通过前两篇文章对C++的基础有了一定的了解,但是编程语言的学习绝不能仅仅通过看,必须勤练习才可以】

    1.1   编程练习

            先给出本篇所有的编程题目,大家可以先自己想一想写一写,如果实在无法写出便参考本篇的讲解即可。

    1.1.1   编程题目

    #第一题

    编写一个 C++ 程序,它显示您的姓名和地址。

    ********************************************************************************************************

    #第二题

    编写一个 C++ 程序,它要求用户输入一个以 long 为单位的距离,然后将它转换为码(一 long 等于 220 码)。

    ********************************************************************************************************

    #第三题

    编写一个C++ 程序,它使用 3 个用户定义的函数(包括 main()),并生成下面的输出:

    1. Three blind mice
    2. Three blind mice
    3. See how they run
    4. See how they run

    其中一个函数要调用两次,该函数生成前两行;另一个函数也被调用两次。并生成其余的输出。

    ********************************************************************************************************

    #第四题

    编写一个程序,让用户输入其年龄,然后显示该年龄包含多少个月,如下所示:

    1. Enter your age: 29
    2. Your age in months is 348.

    ********************************************************************************************************

    #第五题

    编写一个程序,其中的 main() 调用一个用户定义的函数(以摄氏温度值为参数,并返回相应的华氏温度值)。该程序按下面的格式要求用户输入摄氏温度值,并显示结果:

    1. Please enter a Celsius value: 20
    2. 20 degrees Celsius is 68 degrees Fahrenheit.

    下面是转换公式:

    华氏度 = 1.8 x 摄氏温度 + 32.0

    ********************************************************************************************************

    #第六题

    编写一个程序,其 mian() 调用一个用户定义的函数(以光年值为参数,并返回对应天文单位的值)。该程序按下面的格式要求用户输入光年值,并显示结果:

    1. Enter the number of light years: 4.2
    2. 4.2 light years = 265608 astronomical units.

    天文单位是从地球到太阳的平均距离(约 150000000 公里或 93000000 英里),光年是一光年走的距离(约 10 万亿公里或者 6 万亿英里)(除太阳外,最近的恒星大约离地球 4.2 光年)。请使用 double 类型,转换公式:

    1 光年 = 63240 天文单位

    ********************************************************************************************************

    #第七题

    编写一个程序,要求用户输入小时数和分钟数。在 main() 函数中,将这两个值传递给一个 void 函数。后面以下面这样的格式显示这两个值:

    1. Enter the number of hours: 9
    2. Enter the number of minutes: 28
    3. Time: 9:28

    【PS:题目来源于《C++ Primer Plus》】

    1.2   编程讲解 

            下面将对每一题进行讲解,供大家学习参考。

    1.2.1   #题目一

    #第一题

    编写一个 C++ 程序,它显示您的姓名和地址。

    ********************************************************************************************************

            这道题目很简单,我们只需要输出语句就行了,就是考察 cout 语句 的用法。

    参考代码:

    1. #include
    2. int main()
    3. {
    4. using namespace std;
    5. cout << "简十三,河南" << endl;
    6. return 0;
    7. }

     程序运行结果:

    1. 简十三,河南
    2. --------------------------------

            这就是这道题的一种解法,当然也可以把其拆成两个语句,例如:

    1. #include
    2. int main()
    3. {
    4. using namespace std;
    5. cout << "简十三,";
    6. cout << "河南" << endl;
    7. return 0;
    8. }

    最终的运行结果都是完全一样的。

    1.2.2   #题目二

    #第二题

    编写一个 C++ 程序,它要求用户输入一个以 long 为单位的距离,然后将它转换为码(一 long 等于 220 码)。

    ********************************************************************************************************

            这道题其实就是考察变量以及修改变量的知识,这些在前两篇文章中都有讲解到,不明白的读者可以去回顾一下。

    参考代码:

    1. #include
    2. int main()
    3. {
    4. using namespace std;
    5. int Long; //声明定义变量
    6. cout << "输入一个数字:";
    7. cin >> Long; //输入数据
    8. cout << "转换为 " << Long * 220 << " 码" << endl;
    9. return 0;
    10. }

    程序运行结果:

    1. 输入一个数字:1
    2. 转换为 220 码
    3. --------------------------------

    1.2.3   #题目三

    #第三题

    编写一个C++ 程序,它使用 3 个用户定义的函数(包括 main()),并生成下面的输出:

    1. Three blind mice
    2. Three blind mice
    3. See how they run
    4. See how they run

    其中一个函数要调用两次,该函数生成前两行;另一个函数也被调用两次。并生成其余的输出。

            之前没有接触过任何语言的读者可能第一眼看见这道题觉得很难。其实只要把题目读懂了,这道题就很清晰了。这道题考察的就是——函数调用。“其中一个函数要调用两次”,这句话也误导了很多人,让人觉得这不仅仅是简单的函数调用,其实它就是简单的调用,只不过要求我们调用两次而已。这一点放在下述代码中进行理解。

            还有需要注意的一点本题特别要求了需要使用 3 个用户定义的函数(包括 main()),说白了,就是上面的两句话(本是四句,但是两两重复所以相当于只用两句)分别对应一个函数即可。好,下面我们结合具体的例子进行理解。

    参考代码:

    1. #include
    2. using namespace std;
    3. void Part_one(); //声明函数原型
    4. void Part_two(); //声明函数原型
    5. int main()
    6. {
    7. Part_one(); //调用函数 (一次)
    8. Part_one(); //调用函数 (两次)
    9. Part_two(); //调用函数 (一次)
    10. Part_two(); //调用函数 (两次)
    11. }
    12. void Part_one() //创建函数 1
    13. {
    14. cout << "Three blind mice" << endl;
    15. }
    16. void Part_two() //创建函数 2
    17. {
    18. cout << "See how they run" << endl;
    19. }

    程序运行结果:

    1. Three blind mice
    2. Three blind mice
    3. See how they run
    4. See how they run
    5. --------------------------------
    1. void Part_one() //创建函数 1
    2. {
    3. cout << "Three blind mice" << endl;
    4. }
    5. void Part_two() //创建函数 2
    6. {
    7. cout << "See how they run" << endl;
    8. }

            本题的关键就在这,只要创建这两个函数即可,因为返回的是语句,所以我们选择无返回值的函数进行创建。

            至于调用两次就更好理解了,它要求调用两次那我们就调用两次呗:

    1. Part_one(); //调用函数 (一次)
    2. Part_one(); //调用函数 (两次)
    3. Part_two(); //调用函数 (一次)
    4. Part_two(); //调用函数 (两次)

    就这样即可,怎么样是不是很简单?

    1.2.4   #题目四 

     #第四题

    编写一个程序,让用户输入其年龄,然后显示该年龄包含多少个月,如下所示:

    1. Enter your age: 29
    2. Your age in months is 348.

    先来分析题目的要求:

            该年龄包含多少个月其实就是——多少年(年龄)包含多少个月。怎么样是不是问的很简单?这道题的考察点还是变量以及修改变量的知识点。

    参考代码:

    1. #include
    2. int main()
    3. {
    4. using namespace std;
    5. int year; //声明定义变量
    6. cout << "Enter your age: ";
    7. cin >> year; //输入数据
    8. cout << "Your age in months is " << year * 12 << "." << endl;
    9. return 0;
    10. }

     程序运行结果:

    1. Enter your age: 29
    2. Your age in months is 348.
    3. --------------------------------

    1.2.5   #题目五

    #第五题

    编写一个程序,其中的 main() 调用一个用户定义的函数(以摄氏温度值为参数,并返回相应的华氏温度值)。该程序按下面的格式要求用户输入摄氏温度值,并显示结果:

    1. Please enter a Celsius value: 20
    2. 20 degrees Celsius is 68 degrees Fahrenheit.

    下面是转换公式:

    华氏度 = 1.8 x 摄氏温度 + 32.0

            可能有的读者不知道什么是华氏度,无所谓题目已经给出了二者之间的转化式子,我们照搬即可。

            本题要求使用函数调用,因为求出的是一个数值,所以我们可以选择创建一个有返回值的函数。剩下的就是简单的变量以及修改变量了。(是不是发现考察了很多次了?)

    参考代码:

    1. #include
    2. double degree_Fahrenheit(double); //声明函数原型
    3. using namespace std; // using 编译指令
    4. int main()
    5. {
    6. double celsius; //声明定义变量
    7. cout << "Please enter a Celsius value: ";
    8. cin >> celsius; //输入数据
    9. cout << celsius;
    10. cout << " degrees Celsius is " << degree_Fahrenheit(celsius) << " degrees Fahrenheit." << endl;
    11. return 0;
    12. }
    13. double degree_Fahrenheit(double celsius) //创建函数
    14. {
    15. return celsius * 1.8 + 32; //返回值
    16. }

    程序运行结果:

    1. Please enter a Celsius value: 20
    2. 20 degrees Celsius is 68 degrees Fahrenheit.
    3. --------------------------------

    有一点值得注意的地方:

    1. double degree_Fahrenheit(double celsius) //创建函数
    2. {
    3. return celsius * 1.8 + 32; //返回值
    4. }

            还可以有另外一种表示方式:

    1. double degree_Fahrenheit(double celsius) //创建函数
    2. {
    3. double A = celsius * 1.8 + 32;
    4. return A; //返回值
    5. }

            但是大多数人选择前者因为少打几个字母(对于程序员来说这是非常讨厌的事情)。

            注意:为了方便这里我定义了一个新的变量 A,但是正常情况下请尽量不要这样,定义的变量名称尽量带有实义,这样比较严谨。

    1.2.6   #题目六

     

    #第六题

    编写一个程序,其 mian() 调用一个用户定义的函数(以光年值为参数,并返回对应天文单位的值)。该程序按下面的格式要求用户输入光年值,并显示结果:

    1. Enter the number of light years: 4.2
    2. 4.2 light years = 265608 astronomical units.

    天文单位是从地球到太阳的平均距离(约 150000000 公里或 93000000 英里),光年是一光年走的距离(约 10 万亿公里或者 6 万亿英里)(除太阳外,最近的恒星大约离地球 4.2 光年)。请使用 double 类型,转换公式:

    1 光年 = 63240 天文单位

            这道题不要被它 “庞大” 的字数所震慑,简单点嘛。只看最后的转换公式即可(当然要是想增长知识的话就请不要忽略)。

            读了题目后细心的读者已经看出来了,这不还是考察的变量以及修改变量的知识点嘛。那有了上面几题的经验,这道题岂不是手到擒来?

            仍然要重复一点,因为返回的是一个数值,所以我们可以选择创建带有返回值的函数。

    参考代码:

    1. #include
    2. double Light_years(double); //声明函数原型
    3. using namespace std; // using 编译指令
    4. int main()
    5. {
    6. double astronomical; //定义变量
    7. cout << "Please the number of light years: ";
    8. cin >> astronomical; //输入数据
    9. cout << astronomical;
    10. cout << " light years = " << Light_years(astronomical) << " astronomical units." << endl;
    11. return 0;
    12. }
    13. double Light_years(double astronomical) //创建函数
    14. {
    15. return astronomical * 63240; //返回值
    16. }

    程序运行结果:

    1. Please the number of light years: 4.2
    2. 4.2 light years = 265608 astronomical units.
    3. --------------------------------

            这道题跟第五题十分类似因此这里就不过多的讲解了,不懂的可以多看看第五题的讲解。

    1.2.7   #题目七

     #第七题

    编写一个程序,要求用户输入小时数和分钟数。在 main() 函数中,将这两个值传递给一个 void 函数。后面以下面这样的格式显示这两个值:

    1. Enter the number of hours: 9
    2. Enter the number of minutes: 28
    3. Time: 9:28

            这道题有一句话可能让人有点犯难——“在 main() 函数中,将这两个值传递给一个 void 函数。”,其实这句话的意思就是,在 mian() 函数中将两个数值传递给用户创建的函数中进行处理。那这道题我的思路就是 mian() 函数仅仅负责传递数据,至于输出就交给我们创建的函数中进行。所以我们可以创建无返回值的函数。下面结合例子来进行讲解。

    参考代码:

    1. #include
    2. void out_put(int, int); //声明函数原型
    3. using namespace std; // using 编译指令
    4. int main()
    5. {
    6. int hour, minute; //声明定义两个变量
    7. cin >> hour; //输入小时数
    8. cin >> minute; //输入分钟数
    9. cout << endl; //重启一行
    10. out_put(hour, minute); //调用函数
    11. return 0;
    12. }
    13. void out_put(int hour, int minute) //创建函数
    14. {
    15. cout << "Enter the number of hours: " << hour << endl;
    16. cout << "Enter the number of minutes: " << minute << endl;
    17. cout << "Time: " << hour << ":" << minute;
    18. }

    程序运行结果:

    1. 9
    2. 28
    3. Enter the number of hours: 9
    4. Enter the number of minutes: 28
    5. Time: 9:28
    6. --------------------------------

            可以看出我把语句的输出放在了我们创建的新的函数中执行。

    总结

            这些列题都是比较好的,可以让我们对前面知识的讲解有一个更深刻的理解。至于例题的参考代码是我自己编写,肯定有很多不足希望大家多多指出。另外,题解仅作参考并不唯一,大家要是有更好的方法欢迎评论区留言,当然如果本篇题解有误或者有讲的不清楚的地方也请评论区留言。

  • 相关阅读:
    stencilJs学习之构建 Drawer 组件
    leetcode 25. K 个一组翻转链表
    自定义动态组件,剩下的三种周期函数
    SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.10 MongoDB 基础操作
    [C#] GDI+ 之鼠标交互:原理、示例、一步步深入、性能优化
    浅谈postman设置token依赖步骤
    2-1线性表-顺序表
    Java面试ZooKeeper面试题汇总及答案
    6_1 系统安全分析与设计
    快速实现MQTT协议网关网口连接西门子PLC
  • 原文地址:https://blog.csdn.net/m0_63988748/article/details/126158336