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++程序设计》传智播客
  • 百度百科

冰河相依
1 声望3 粉丝

于冰河相依。