为了账号安全,请及时绑定邮箱和手机立即绑定

C++零基础教程:从入门到初级项目实战

标签:
C++
概述

本教程涵盖了从环境搭建到基础语法的学习,再到流程控制和面向对象编程的详细讲解。教程还包括了一个简易图书管理系统的实战项目,帮助读者通过实践加深理解。

C++编程环境搭建与配置

安装C++编译器(如MinGW、GCC)

C++编译器是编写、编译和运行C++代码所必需的工具。这里推荐使用MinGW(Minimalist GNU for Windows)或GCC(GNU Compiler Collection)。

安装MinGW

  1. 访问MinGW官网下载MinGW安装程序。
  2. 打开安装向导,选择适当的组件进行安装,建议安装“mingw32-base”和“mingw32-gcc-g++”。
  3. 安装完成后,设置环境变量。右键点击“计算机”或“此电脑”,选择“属性”,点击“高级系统设置”,在“高级”标签页中点击“环境变量”。
  4. 在“系统变量”部分,新建两个变量:MINGW_HOMEPATH
    • MINGW_HOME 的值为MinGW的安装路径。
    • PATH的值为%MINGW_HOME%\bin

安装GCC

若使用Linux或macOS系统,GCC默认已安装。
若使用Windows,可以通过MinGW安装GCC,步骤如下:

  1. 使用MinGW安装程序安装GCC。
  2. 设置环境变量,步骤同上。

配置集成开发环境(IDE)(如Code::Blocks、Visual Studio)

使用Code::Blocks

  1. 访问Code::Blocks官网下载安装程序。
  2. 安装Code::Blocks。
  3. 打开Code::Blocks,选择“设置” -> “编译器” -> “编译器设置”。
  4. 选择“添加” -> “添加全局设置”。
  5. 在“编译器路径”中选择MinGW或GCC的安装路径。
  6. 在“编译” -> “工具链”中选择“MinGW GCC”。
  7. 在“链接器” -> “通用设置”中选择“MinGW GCC”。

使用Visual Studio

  1. 访问Visual Studio官网下载并安装Visual Studio。
  2. 安装完成后,打开Visual Studio。
  3. 安装C++开发工具,从“获取工具和功能” -> “工作负载” -> “使用C++进行游戏开发”。
  4. 在“工具和设置” -> “工具”中选择“C++编译器”和“C++调试器”。

编写第一个C++程序

下面是一个简单的 "Hello, World!" 程序。

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
  1. 打开你的IDE,新建一个C++项目或工程。
  2. 将以上代码粘贴到编辑器中。
  3. 保存文件,文件名例如为hello.cpp
  4. 编译并运行程序,查看输出结果。
C++基础语法入门

数据类型与变量声明

基本数据类型

C++中的基本数据类型包括整型(int)、浮点型(float和double)、字符型(char)和布尔型(bool)。

例如:

int myInt = 10; // 整型
float myFloat = 3.14f; // 浮点型
double myDouble = 3.14; // 双精度浮点型
char myChar = 'A'; // 字符
bool myBool = true; // 布尔型

变量声明

变量声明格式为类型 变量名 = 初始化值;

例如:

int age = 25; // 声明一个整型变量age并初始化为25
float height = 1.75; // 声明一个浮点型变量height并初始化为1.75

常量与符号常量

使用const关键字

const关键字用于声明常量,常量的值在声明后不能更改。

例如:

const int MAX_COUNT = 100; // 声明一个常量MAX_COUNT并初始化为100
const float PI = 3.14159; // 声明一个常量PI并初始化为3.14159

使用#define

#define宏可以定义符号常量,但不建议使用这种方式,因为const关键字提供了更好的类型检查。

例如:

#define PI 3.14159
#define MAX_COUNT 100

数组和字符串操作

数组

数组用于存储固定数量的数据元素,所有元素类型相同。

例如:

int numbers[5] = {1, 2, 3, 4, 5}; // 定义一个整型数组numbers
char characters[6] = {'a', 'b', 'c', 'd', 'e'}; // 定义一个字符数组characters

字符串

字符串通常使用char数组或string类表示。

例如:

#include <iostream>
#include <string>

int main() {
    char str1[10] = "Hello"; // 字符串常量
    std::string str2 = "World"; // 使用string类

    std::cout << str1 << std::endl;
    std::cout << str2 << std::endl;

    return 0;
}

简单输入输出操作

输入操作

使用std::cin进行输入。

例如:

#include <iostream>

int main() {
    int num;
    std::cout << "请输入一个整数: ";
    std::cin >> num;
    std::cout << "您输入的整数是: " << num << std::endl;

    return 0;
}

输出操作

使用std::cout进行输出。

例如:

#include <iostream>

int main() {
    int num = 10;
    std::cout << "这个整数是: " << num << std::endl;

    return 0;
}
C++流程控制语句详解

条件语句(if-else, switch)

if语句

if语句用于根据条件执行代码块。

例如:

#include <iostream>

int main() {
    int age = 20;
    if (age >= 18) {
        std::cout << "成年人" << std::endl;
    } else {
        std::cout << "未成年人" << std::endl;
    }

    return 0;
}

switch语句

switch语句用于在多个选项中选择一个执行代码块。

例如:

#include <iostream>

int main() {
    int num = 2;
    switch (num) {
        case 1:
            std::cout << "数字是1" << std::endl;
            break;
        case 2:
            std::cout << "数字是2" << std::endl;
            break;
        default:
            std::cout << "数字不是1或2" << std::endl;
            break;
    }

    return 0;
}

循环语句(for, while, do-while)

for循环

for循环用于执行一系列语句,直到满足条件为止。

例如:

#include <iostream>

int main() {
    for (int i = 0; i < 5; i++) {
        std::cout << "循环次数: " << i << std::endl;
    }

    return 0;
}

while循环

while循环用于在满足条件时执行代码块。

例如:

#include <iostream>

int main() {
    int i = 0;
    while (i < 5) {
        std::cout << "循环次数: " << i << std::endl;
        i++;
    }

    return 0;
}

do-while循环

do-while循环在循环体执行结束后再检查条件。

例如:

#include <iostream>

int main() {
    int i = 0;
    do {
        std::cout << "循环次数: " << i << std::endl;
        i++;
    } while (i < 5);

    return 0;
}

跳转语句(break, continue)

break语句

break语句用于提前退出循环。

例如:

#include <iostream>

int main() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            break;
        }
        std::cout << "循环次数: " << i << std::endl;
    }

    return 0;
}

continue语句

continue语句用于跳过当前循环的剩余部分,开始下一次循环。

例如:

#include <iostream>

int main() {
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        std::cout << "循环次数: " << i << std::endl;
    }

    return 0;
}
函数与作用域

函数的定义与调用

函数定义

函数定义包括返回类型、函数名、参数列表、函数体。

例如:

#include <iostream>

int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(3, 4);
    std::cout << "结果是: " << result << std::endl;

    return 0;
}

函数调用

调用函数时,传递实际参数。

例如:

int result = add(3, 4); // 调用add函数

局部变量与全局变量

局部变量

局部变量在函数内部定义,仅在该函数内可见。

例如:

#include <iostream>

int main() {
    int localVar = 10; // 局部变量
    std::cout << "局部变量值: " << localVar << std::endl;
    return 0;
}

全局变量

全局变量在整个程序中可见。

例如:

#include <iostream>

int globalVar = 20; // 全局变量

int main() {
    std::cout << "全局变量值: " << globalVar << std::endl;
    return 0;
}

函数重载

函数重载允许使用相同函数名但不同参数列表的多个函数。

例如:

#include <iostream>

int add(int a, int b) {
    return a + b;
}

float add(float a, float b) {
    return a + b;
}

int main() {
    int intResult = add(3, 4);
    float floatResult = add(3.5f, 4.5f);

    std::cout << "整数结果: " << intResult << std::endl;
    std::cout << "浮点数结果: " << floatResult << std::endl;

    return 0;
}
C++面向对象编程基础

类与对象的概念

定义类

类是一个模板,用于定义对象的结构和行为。

例如:

#include <iostream>

class Person {
public:
    std::string name;
    int age;

    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};

int main() {
    Person person1;
    person1.name = "张三";
    person1.age = 20;
    person1.display();

    return 0;
}

创建对象

使用类模板创建对象。

例如:

Person person1;
person1.name = "张三";
person1.age = 20;
person1.display();

成员变量与成员函数

成员变量

成员变量是类中的数据成员,定义了对象的属性。

例如:

class Person {
public:
    std::string name;
    int age;
};

成员函数

成员函数是类中的方法,定义了对象的行为。

例如:

class Person {
public:
    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};

构造函数与析构函数

构造函数

构造函数用于初始化对象。

例如:

#include <iostream>

class Person {
public:
    std::string name;
    int age;

    Person(std::string n, int a) : name(n), age(a) {} // 构造函数

    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};

int main() {
    Person person1("李四", 25);
    person1.display();

    return 0;
}

析构函数

析构函数用于释放对象的资源。

例如:

#include <iostream>

class Person {
public:
    std::string name;
    int age;

    Person(std::string n, int a) : name(n), age(a) {}

    ~Person() {
        std::cout << "释放资源" << std::endl;
    }

    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};

int main() {
    Person person1("王五", 30);
    person1.display();

    return 0;
}

封装与继承

封装

封装将数据和方法绑定在一起,隐藏实现细节。

例如:

#include <iostream>

class Person {
private:
    std::string name;
    int age;

public:
    Person(std::string n, int a) : name(n), age(a) {}

    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};

int main() {
    Person person1("赵六", 35);
    person1.display();

    return 0;
}

继承

继承允许一个类继承另一个类的成员。

例如:

#include <iostream>

class Person {
public:
    std::string name;
    int age;

    Person(std::string n, int a) : name(n), age(a) {}

    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << std::endl;
    }
};

class Student : public Person {
public:
    int studentId;

    Student(std::string n, int a, int id) : Person(n, a), studentId(id) {}

    void display() {
        std::cout << "姓名: " << name << ", 年龄: " << age << ", 学生ID: " << studentId << std::endl;
    }
};

int main() {
    Student student1("钱七", 23, 1001);
    student1.display();

    return 0;
}
实战项目:简易图书管理系统

需求分析与设计

需求分析

图书管理系统需要实现以下功能:

  1. 添加书籍
  2. 删除书籍
  3. 查找书籍
  4. 显示所有书籍

设计思路

设计一个简单的书籍类Book,包含书籍的属性(如ISBN、标题、作者、出版社)和方法(如添加书籍、删除书籍、查找书籍、显示书籍)。

实现代码

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Book {
private:
    string isbn;
    string title;
    string author;
    string publisher;

public:
    Book(string isbn, string title, string author, string publisher) {
        this->isbn = isbn;
        this->title = title;
        this->author = author;
        this->publisher = publisher;
    }

    void display() {
        cout << "ISBN: " << isbn << ", 标题: " << title << ", 作者: " << author << ", 出版社: " << publisher << endl;
    }
};
#include <iostream>
#include <string>
#include <vector>
#include "Book.h" // 引入Book类的头文件

using namespace std;

class BookManager {
private:
    vector<Book> books;

public:
    void addBook(string isbn, string title, string author, string publisher) {
        Book newBook(isbn, title, author, publisher);
        books.push_back(newBook);
        cout << "书籍添加成功!" << endl;
    }

    void removeBook(string isbn) {
        for (auto it = books.begin(); it != books.end(); ++it) {
            if (it->isbn == isbn) {
                books.erase(it);
                cout << "书籍删除成功!" << endl;
                return;
            }
        }
        cout << "未找到该书籍!" << endl;
    }

    void findBooksByAuthor(string author) {
        for (const auto& book : books) {
            if (book.author == author) {
                book.display();
            }
        }
    }

    void displayAllBooks() {
        for (const auto& book : books) {
            book.display();
        }
    }
};

int main() {
    int choice;
    string isbn, title, author, publisher;

    BookManager manager;

    do {
        cout << "1. 添加书籍" << endl;
        cout << "2. 删除书籍" << endl;
        cout << "3. 查找书籍" << endl;
        cout << "4. 显示所有书籍" << endl;
        cout << "0. 退出" << endl;
        cout << "请选择操作: ";
        cin >> choice;

        switch (choice) {
            case 1:
                cout << "输入ISBN: ";
                cin >> isbn;
                cout << "输入标题: ";
                cin >> title;
                cout << "输入作者: ";
                cin >> author;
                cout << "输入出版社: ";
                cin >> publisher;
                manager.addBook(isbn, title, author, publisher);
                break;
            case 2:
                cout << "输入要删除的ISBN: ";
                cin >> isbn;
                manager.removeBook(isbn);
                break;
            case 3:
                cout << "输入作者: ";
                cin >> author;
                manager.findBooksByAuthor(author);
                break;
            case 4:
                manager.displayAllBooks();
                break;
            case 0:
                cout << "退出程序" << endl;
                break;
            default:
                cout << "输入错误,请输入正确的选项" << endl;
        }
    } while (choice != 0);

    return 0;
}

最终测试与运行

测试代码

main函数中,用户可以选择不同的选项,执行相应的操作。

例如:

int main() {
    int choice;
    string isbn, title, author, publisher;

    BookManager manager;

    do {
        cout << "1. 添加书籍" << endl;
        cout << "2. 删除书籍" << endl;
        cout << "3. 查找书籍" << endl;
        cout << "4. 显示所有书籍" << endl;
        cout << "0. 退出" << endl;
        cout << "请选择操作: ";
        cin >> choice;

        switch (choice) {
            case 1:
                cout << "输入ISBN: ";
                cin >> isbn;
                cout << "输入标题: ";
                cin >> title;
                cout << "输入作者: ";
                cin >> author;
                cout << "输入出版社: ";
                cin >> publisher;
                manager.addBook(isbn, title, author, publisher);
                break;
            case 2:
                cout << "输入要删除的ISBN: ";
                cin >> isbn;
                manager.removeBook(isbn);
                break;
            case 3:
                cout << "输入作者: ";
                cin >> author;
                manager.findBooksByAuthor(author);
                break;
            case 4:
                manager.displayAllBooks();
                break;
            case 0:
                cout << "退出程序" << endl;
                break;
            default:
                cout << "输入错误,请输入正确的选项" << endl;
        }
    } while (choice != 0);

    return 0;
}

调试和运行

  1. 在IDE中编译并运行程序。
  2. 根据提示选择操作,测试不同的功能。
  3. 确认每个功能按预期工作,无错误提示。

通过以上步骤,你已经掌握了C++编程的基本知识,并成功实现了一个简易的图书管理系统。继续学习和实践,将进一步提高你的编程技能。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消