【C++程序员必修第一课】C++基础课程-02:快速入门

news2025/6/18 8:18:38

1 本课主要内容:

  • 简单介绍 VS2019 开发工具基本使用
  • C++ 开发基本概念、函数、变量、注释、if 判断、for 循环、while 循环等

2 主要知识点:

  • VS主界面介绍

VS 主界面简单介绍;解决方案下面包含项目,项目下面包含有头文件、源文件、资源文件等;

  • .h 文件

.h 文件是 C++ 头文件,一般用来写定义、声明等,包括对外接口、函数、数据等;如下例子:

// myfile.h

// 定义最小、最大值
const int MinNumber{0};
const int MaxNumber{9999};
// 声明函数
void add_number(int number);

// 声明类
class my_class {
public:
    // 声明类函数
    void do_something();    
};
  • .cpp 文件

.cpp 文件是 C++ 源文件,一般用来写业务逻辑代码,或者一些局部变量定义等;如下例子:

// myfile.cpp

// 实现业务逻辑
void add_number(int number) {
    if (number < MinNumber) {
        number = MinNumber;
    }
    else if (number > MaxNumber) {
        number = MaxNumber;
    }
    // ...
}

// 类函数实现代码
void my_class::do_something() {
    // ...
}
  • 其他 .hpp 文件等

有一些开源库会把源文件和头文件写到一起,然后用 .hpp 文件命名,所以你看到有其他扩展名的 C++ 代码,不需要感到意外;如下例子:

// my_class.hpp

// 声明类
class my_class {
public:
    // 声明和实现写到一起
    void do_something() {
        // ...
    }
  
};
  • #include 语句

(#include) 语句用来包含引用其他类或模块头文件;如下几种包含例子:

#include <random>          // 包含系统级别、或其他模块头文件
#include <open3d/Open3D.h> // 包含带路径头文件
#include "user_info.h"     // 包含本模块头文件
#include "../user_info.h"  // 支持相对路径;(../)指上一个路径;(../../)指上上个路径;
  • 编译、调试、运行和发布

编写代码后,需要把代码生成(也叫编译)成可执行程序(Windows环境下就是exe程序文件),才可以调试、运行或发布程序;

  • Debug 版本和 Release 版本

Debug是指可调试版本,Release指可发布版本;Debug在调试过程中可以看到调用堆栈、变量值等信息,生成程序比较大;Release发布版本做了优化,不能用于调试,生成文件小,执行效果更高;

  • C++ 代码基本语句格式

基本语句格式例子如下:

int a = 10;
以上代码,定义一个整形变量 a 初始赋值 10,(;)结束语句;
也可以写成下面这行(建议统一写成以下格式)
int a{10};

int a = 10, b = 20;
以上代码,定义二个整形变量 a 和 b,分别初始赋值 10 和 20, (;)结束语句;
也可以写成下面这行
int a{10}, b{20};
  • C++ 注释

C++ 有二种注释语句(//)和(/* */),(//)用于单行注释,(/* */)用于单选注释和多行注释;

// 【单行注释示例】屏蔽没用代码
// int minValue{0};     // 【单行注释示例】最小数值
float minValue{0.0};    // 【单行注释示例】最小数值

/* 单行注释 */ 
或者
/******************** 单行注释 ********************/ 


/*
 【多行注释示例】
 */
或者 
/*******************************
 【多行注释示例】
 *******************************/
  • 变量名

定义变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成,第一个字母必须是字母或者下划线(_)开头;

// 以字母开头(大小写都可以)
int minValue = 0;    // 合法
// 以字母开头,后面带字母和数字
int minValue1 = 0;   // 合法
// 以下划线(_)开头,后面带字母和数字
int _minValue2 = 0;  // 合法
  • C++ 代码区分大小写

// 区分大小写,如下定义了 A 和 a 二个不同变量
int A, a;
  • 初识 C++ 标准输入流、输出流

/**** 例子:提示用户输入二个整数,输出二个整数的和 ****/
#include <iostream>

// std::cout(读 see out),是C++标准输出流
std::cout << "Enter two numbers:" << std::endl;
// 用于存放用户输入数值的 v1, v2 整形变量
int v1 = 0, v2 = 0;
// std::cin(读 see in),是C++标准输入流
std::cin >> v1 >> v2;
// 输出 v1, v2 的和
std::cout << v1 << " + " << v2 << " = " << v1 + v2 << std::endl;
  • if 判断语句

if 是逻辑判断语句,用于判断运算结果 true(真)、false(假)

/**** 例子:提示用户输入一个整数,判断该数值是否等于100,并输出不同提示 ****/
#include <iostream>

std::cout << "Enter number:" << std::endl;
int number = 0;
std::cin >> number;
// 判断 number 是否等于100
if (number == 100) {
    std::cout << "Number = 100 is true" << std::endl;
    
}
else {
    std::cout << "Number = 100 is false;  " << number << std::endl;
}
  • for 循环语句

/**** 例子:计算1到100自然数的总和 ****/
#include <iostream>

int value = 0;    // 用于存放计算结果值
// for 循环语句:
// 初始表示式:(i=1) 初始化i=1;循环表示式:(i<=100) true 执行循环,false 退出循环;
// 执行表示式:(++i) i自增1,等于 i=i+1
for (int i = 1; i <= 100; ++i) {
    value += i;
    // 累加 i 的值
}
// 输出结果
std::cout << "1+2+...+100 = " << value << std::endl;
  • while 循环语句

/**** 例子:计算1到100自然数的总和 ****/
#include <iostream>

int value = 0;          // 用于存放计算结果值
int i = 1;              // 初始i=1
while (i <= 100) {      // 判断 i 小于等于 100;true执行循环,false退出循环
    value += i++;       // 先累加 i 的值,再 i 自增
}
// 输出结果
std::cout << "1+2+...+100 = " << value << std::endl;
  • C++ 函数

C++ 函数基本格式和例子如下:

// 普通的功能函数
void func1() {
    ...
}

// 带 return 返回值功能函数
int func2() {
    ...
    return 0;
}

// 带参数功能函数
int func3(int a, int b) {
    ...
    return a + b;
}

/**** 例子:编写函数,输入整数参数count,计算1到count的总和,并返回计算结果 ****/
#include <iostream>

int func4(int count)
{
    int value = 0;
    for (int i = 1; i <= count; ++i) {
        value += i;
    }
    return value;
}

int value = func4(100);
    // 调用函数,输入100
std::cout << "1+2+...+100 = " << value << std::endl;
  • C++ 程序主函数 main() 函数

main() 函数是 C++ 程序主入口函数;一般有以下二种格式:

// 1 最基本的主入口函数
int main()
{
    // ...
    return 0;
}

// 2 带命令参数主入口函数
int main(int argc, char *argv[])
{
    // ...
    return 0;
}
  • 3 实例:

利用 C++ 的 random 生成100组随机数,计算最大值、最小值

#include <iostream>
#include <random>    // 使用 random 库文件

void test_gen_random_value() {
    unsigned int minValue = -1; // 最小值 
    unsigned int maxValue = 0;  // 最大值 
    std::random_device rd;
    for (int i = 0; i < 100; i++) {
        unsigned int value = rd();
        std::cout << i << " : " << value << std::endl;
        if (value < minValue)
            minValue = value;
        else if (value > maxValue)
            maxValue = value;
    }
    // 输出结果
    std::cout << "MinValue : " << minValue << std::endl;
    std::cout << "MaxValue : " << maxValue << std::endl;
}

int main()
{
    test_gen_random_value();
    return 0;
}

4 课后练习:

  • 练习1:新建控制台程序,提示用户输入整数 v,判断输入取值范围[1 ~ 10000],编写函数,计算从1到v的相加结果并返回,将结果输出到屏幕
  • 练习2:利用 random 生成 100 组随机数,计算数值累加值、平均值,把计算结果输出到控制台界面上;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java也能做OCR!SpringBoot 整合 Tess4J 实现图片文字识别

前言 今天给大家分享一个SpringBoot整合Tess4j库实现图片文字识别的小案例&#xff0c;希望xdm喜欢。 文末有案例代码的Git地址&#xff0c;可以自己下载了去玩玩儿或继续扩展也行。 话不多说&#xff0c;开整吧。 什么是Tess4j库 先简单给没听过的xdm解释下&#xff0c;这里要…

和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试

数智化时代&#xff0c;数据总量的爆炸性增长伴随着人工智能、云计算等技术的发展&#xff0c;加速催化了公众对于数据存储与应用的多元化需求。同时&#xff0c;数据也是重要的基础资源和战略资源&#xff0c;需要严格保障其安全性、完整性。搭建国产数据基础设施底座&#xf…

一元交友盲盒在线搭建完整教程 前后端分离 可二开

大家好啊&#xff0c;今天来给大家分享一个最近很火的一元交友盲盒小程序的搭建教程。 系统搭建教程&#xff1a; 需求分析与规划&#xff1a;明确系统的基本功能需求&#xff0c;如用户注册、登录、浏览和匹配其他用户、聊天、付费参与盲盒等。选择合适的平台和框架&#xff…

【Rust基础①】基本类型、所有权与借用、复合类型

文章目录 1 基本类型1.1 数值类型1.1.1 Rust 中的内置的整数类型&#xff1a;1.1.2 浮点类型1.1.3 数学运算1.1.4 位运算1.1.5 序列(Range) 1.2 字符、布尔、单元类型1.3 语句和表达式1.4 函数 2 所有权与借用2.1 栈(Stack)与堆(Heap)2.2 所有权原则2.2.1 转移所有权2.2.2 克隆…

rtsp_topic

1.打开推流服务器 2.接收ros图像 3.ffmpeg命令推流 pushflow.cpp // 1.包含头文件&#xff1b; #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" #include <iostream> #include <csignal> #include <opencv4/opencv2/o…

什么是好的数据库设计?

良好的数据库设计对确保数据的准确性、一致性和完整性至关重要&#xff0c;同时确保数据库高效、可靠且易于使用。设计必须解决快速且轻松地存储和检索数据的问题&#xff0c;同时稳定地处理大量数据。经验丰富的数据库设计师可以创建一个强大、可扩展和安全的数据库架构&#…

3.1 SQL概述

思维导图&#xff1a; 前言&#xff1a; 前言笔记&#xff1a;第3章 关系数据库标准语言SQL - **SQL的定义**&#xff1a; - 关系数据库的标准和通用语言。 - 功能强大&#xff0c;不仅限于查询。 - 功能覆盖&#xff1a;数据库模式创建、数据插入/修改、数据库安全性与…

爱德华、书客、柏曼的护眼台灯谁的护眼能力更好?三款护眼台灯真实测评

为人父母以后最大的感受就是希望孩子能够健康成长&#xff0c;而且现在生活水平也变好了&#xff0c;都想尽可能给孩子最好的&#xff0c;什么学习专用的书桌啊、柜子啊、学习用品等等。但是随着孩子慢慢步入更高的年级&#xff0c;作业也在不断增加&#xff0c;孩子完成作业的…

处理ElementUI组件默认样式多次重复问题

问题截图&#xff1a; 解决办法&#xff1a; 在postcss.config.js文件里添加配置项&#xff1a; module.exports {plugins: {autoprefixer: {},cssnano: {} //添加这行代码}, } 处理结果&#xff1a; github issues&#xff1a; https://github.com/ElemeFE/element/is…

如何使用前端包管理器(如npm、Yarn)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

React js原生 详解 HTML 拖放 API(鼠标拖放功能)

最近碰到了个需求&#xff0c;大概就是要通过可视化拖拽的方式配置一个冰柜&#xff0c;需要把预设好的冰柜内部架子模板一个个拖到冰箱内。一开始的想法是用鼠标事件&#xff08;mousedown、mouseup等&#xff09;那一套去实现&#xff0c;能实现但是过程过于复杂&#xff0c;…

Linux 回顾总结

学习前提&#xff08;环境搭建&#xff09;&#xff1a;RHCSA Linux环境搭建-CSDN博客 目录 一、shell 二、文件 三、用户和组管理 四、权限 五、软件 六、网络 七、磁盘 一、shell Linux的操作界面常称为Shell&#xff0c;Shell是操作系统提供给用户使用的界面&#xf…

【Python】PaddleOCR文字识别国产之光 从安装到pycharm中测试 (保姆级图文)

目录 官方项目地址Python环境搭建&#xff08;也就是使用Anaconda的python&#xff09;1. 安装Anaconda1. 打开终端并创建conda环境 安装PaddlePaddle&#xff08;CPU演示&#xff09;安装PaddleOCR whl包如果安装shapely库报错&#xff08;我没有报错&#xff0c;其他类似库安…

MongoDB 索引和常用命令

一、基本常用命令 1.1 案例需求 存放文章评论的数据存放到 MongoDB 中&#xff0c;数据结构参考如下&#xff0c;其中数据库为 articledb&#xff0c; 专栏文章评论 comment 字段名称 字段含义 字段类型 备注 _id ID ObjectId或String Mongo的主键的字段 articlei…

【Mybatis】基于Mybatis插件+注解,实现敏感数据自动加解密

一、介绍 业务场景中经常会遇到诸如用户手机号&#xff0c;身份证号&#xff0c;银行卡号&#xff0c;邮箱&#xff0c;地址&#xff0c;密码等等信息&#xff0c;属于敏感信息&#xff0c;需要保存在数据库中。而很多公司会会要求对数据库中的此类数据进行加密存储。 敏感数据…

光伏三相并网逆变器的控制策略与性能分析

微❤关注“电击小子程高兴的MATLAB小屋”获得资料&#xff08;专享优惠&#xff09; 光伏三相并网逆变器的控制策略与性能分析 引言&#xff1a; 随着可再生能源的日益重视和发展&#xff0c;光伏发电系统在电力系统中的地位越来越重要。其中&#xff0c;光伏三相并网逆变器…

什么台灯最好学生晚上用?开学适合孩子学习的台灯

作为学龄期儿童的家长&#xff0c;最担心的就是孩子长时间学习影响视力健康。无论是上网课、写作业、玩桌游还是陪伴孩子读绘本&#xff0c;都需要一个足够明亮的照明环境&#xff0c;因此选购一款为孩子视力发展保驾护航的台灯非常重要。推荐五款适合孩子学习的台灯。 1. 书客…

distcc分布式编译

distcc https://gitee.com/bison-fork/distcc.git 下载工具链 mingw&#xff0c;https://www.mingw-w64.org/downloads/#w64devkitperl&#xff0c;https://strawberryperl.com/releases.html免安装zip版本&#xff0c;autoconf等脚本依赖perlautoconf、automake&#xff0c…

软件测试学习(四)自动测试和测试工具、缺陷轰炸、外包测试、计划测试工作、编写和跟踪测试用例

目录 自动测试和测试工具 工具和自动化的好处 测试工具 查看器和监视器 驱动程序 桩 压力和负载工具 干扰注入器和噪声发生器 分析工具 软件测试自动化 宏录制和回放 可编程的宏 完全可编程的自动测试工具 随机测试&#xff1a;猴子和大猩猩 使用测试工具和自动…

SpringBoot 前端406 后端Could not find acceptable representation

原因:返回对象没有get方法,无法转成JSON格式