乐趣区

14-cpp编程基础

1.4 cpp 编程基础


返回目录 1 面向对象技术
上一节 1.3 面向对象设计
下一节 1.5 结构体和类


HelloWorld

废话不多说,敲代码的第一步,当然是 HelloWorld。

源代码

/* helloWorld.cpp,用 C ++ 写 HelloWorld */
#include <iostream>

int main()
{

    std::cout << "Hello" << std::ends << "World!" << std::endl; // 输出语句

    return 0;
}

源文件命名为HelloWorld.cpp

编译

你可以使用 IDE 自动编译,或者使用命令行手动编译(我是在 Windows 环境)。

  • 我先使用 vscode 编写程序,在 vscode 中使用 g ++ 编译源文件;
  • 然后我使用命令行编译。

    • 首先需要安装MinGW,并且配置环境变量;
    • 在 win10 的 cmd 中,使用 cd /d 源文件目录 命令定位到源文件目录;
    • 使用 g++ HelloWorld.cpp -o HelloWorld 命令对 HelloWorld.cpp 源文件进行编译,并将编译完成的可执行文件重命名为 HelloWorld.exe;

      • g++ 源文件名.cpp可以用来编译,编译完成的可执行文件名为 a.exe;
      • 上一条命令后面接 -o HelloWorld 用来将编译的 a.exe 重命名为 HelloWorld.exe。

运行

  • 在命令行中输入 HelloWorld 直接运行 HelloWorld.exe。

编译运行结果:

Hello World!

解释

如你所见,只需包含 iostream 头文件,就可以使用:

  • std::cout函数进行输出。
  • std::ends表示字符串的结束,并且添加 空格
  • std::endl终止一行,刷新缓冲区,并且添加 换行

要输出的内容跟在 << 后面即可,不必像 C 语言的 printf()一般,要补充格式控制符。

同时,使用 cout,同样可以使用 转义字符,如n

在 C ++ 中,std其实就是 standard——标准的意思。

这里涉及到一个 命名空间 的问题。

namespace即“命名空间”,也称“名称空间”、”名字空间”。这是一种代码组织的形式,通过名称空间来分类,区别不同的代码功能,同时也是所有类的完全名称的一部分。

std::cout的意思就是 std 这个命名空间中的 cout 函数。


简单的输入输出

输入输出是我们接触编程这一门技术的入门小菜,接下来我们用一个简单的加法函数来展示 C ++ 的简单输入输出。

源代码

/* io.cpp,C++ 输入输出实例:输入两个整数输出其和 */
#include <iostream>

int addNum(int num_1, int num_2)
{return num_1 + num_2; // 返回传入两个变量之和的值}

int main()
{
    int num_1, num_2;

    std::cout << "请输入两个整数用来求和:\n"; // 输出提示语句
    std::cin >> num_1 >> num_2; // 输入两个整型变量
    std::cout << num_1 << "+" << num_2 << "=" << addNum(num_1, num_2); // 调用求和函数,得到两个整数的和并输出

    return 0;

}

编译运行

  • 输出 请输入两个整数用来求和:
  • 输入 1 1
  • 输出 1 + 1 = 2

很简单。std::cin表示输入,上面也讲了,std::cout表示输出。

同样的,cin 不需要格式控制符,直接对标变量的数据类型进行赋值。

函数 和调用函数和 C 语言几乎一致。


循环和递归

  • for 循环

    源代码

    /* for.cpp,for 循环实例,用循环算顺序累加和 */
    #include <iostream>
    
    int main()
    {
    
        int sum = 0, min_num, max_num; // 存储累加的结果、最小值和最大值
    
        std::cout << "请输入最小值:" << std::endl;
        std::cin >> min_num;
        std::cout << "请输入最大值:" << std::endl;
        std::cin >> max_num;
    
        for (int i = min_num; i <= max_num; ++i)
        {sum += i; // 循环累加}
        
        std::cout << "从" << min_num << "加到" << max_num << "的和为:" << sum << std::endl; // 输出累加和
    
        return 0;
    
    }

    C++ 的 for 循环与 C 相比没什么区别,不同的是在 for() 里面的第一项可以定义新变量。如果采用 g ++ 编译 C 程序,也是可以的。

    #### 编译运行

    >> 请输入最小值:<< 1
    >> 请输入最大值:<< 100
    >> 从 1 加到 100 的和为:5050
  • while 循环

    源代码

    /* while.cpp,while 循环实例,多个数字的和 */
    #include <iostream>
    
    int main()
    {
    
        int num = 0, sum = 0;
    
        std::cout << "你可以对任意个数的整数求和,请输入任意个数的整数,最后输入 EOF 结束(Windows 环境键盘快捷键为 Ctrl+Z):" << std::endl;
    
        while (std::cin >> num) // 遇到 EOF 退出 while 循环
        {sum += num; // 相加}
        
        std::cout << "你输入的数字总和为:" << sum << std::endl; // 输出和
    
        return 0;
    
    }

    c++ 的 while() 中可以直接用 std::cin 作为条件,只有输入 EOF 时,退出循环。

    编译运行

    >> 你可以对任意个数的整数求和,请输入任意个数的整数,最后输入 EOF 结束(Windows 环境键盘快捷键为 Ctrl+Z):<< 1
    << 23
    << 456
    << 7890
    << ^Z
    >> 你输入的数字总和为:8370
  • do … while 循环

    源代码

    /* dowhile.cpp do ... while 实例 */
    #include <iostream>
    
    int main()
    {
    
        int sum = 0;
    
        do
        {
    
            sum++;
            std::cout << "程序已经执行了" << sum << "次!按回车继续执行下一次!按其它键后回车退出!";
            
        } while (getchar()=='\n');
        
        return 0;
    
    }

    do … while 和 while 差不多,只是 do … while要先执行一次 以后,再看 while 的条件。

    编译运行

      程序已经执行了 1 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 2 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 3 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 4 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 5 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 6 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 7 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 8 次!按回车继续执行下一次!按其它键后回车退出!程序已经执行了 9 次!按回车继续执行下一次!按其它键后回车退出!233
  • 递归

    源代码

    /* recursion.cpp 递归实例 */
    #include <iostream>
    
    int ChristianKramp(int num) // 这个函数是求阶乘的
    {if (num > 0)
        {if (num == 1)
            {return 1;}
            else
            {return num * ChristianKramp(num - 1);
            }
        }
        else 
        {return -1;}
    }
    
    int main()
    {std::cout << ChristianKramp(5); // 输出 5 的阶乘
    
        return 0;
    }

    这是一个简单的递归实例,效果是求阶乘

    编译运行

    >> 120

返回目录 1 面向对象技术
上一节 1.3 面向对象设计
下一节 1.5 结构体和类


参考资料:

  • 《C++ 程序设计》传智播客
  • 百度百科
退出移动版