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