C++入门(一)(算法竞赛)


🌊用有趣的言语来阐述苦涩难懂的代码世界,让每一个技术都充满风趣!

🔭个人主页: 散峰而望

🚀学习方向: C/C++等方向

📌专栏系列:

💬人生格言: 冀以尘雾之微,补益山海,荧烛末光,增辉岁月。

🎬博主简介

文章目录

  • 前言
  • [1. 软件下载](#1. 软件下载)
  • [2. 第一个C++文件](#2. 第一个C++文件)
    • [2.1 基础程序](#2.1 基础程序)
    • [2.2 main函数](#2.2 main函数)
    • [2.3 字符、字符串](#2.3 字符、字符串)
    • [2.4 头文件](#2.4 头文件)
    • [2.5 cin和cout初识](#2.5 cin和cout初识)
    • [2.6 名字空间](#2.6 名字空间)
    • [2.7 注释](#2.7 注释)
    • [2.8 练习](#2.8 练习)
  • 结语

前言

工欲善其事,必先利其器。C++作为算法竞赛的基石语言,以其卓越的性能与强大的功能,成为攻克难题、赢得胜利的锐利武器。本章将引领您从零开始,系统掌握程序结构、数据类型、基础语法等核心概念,为构建坚实的算法大厦打下第一块基石。希望各位读者能迈稳这关键一步,以扎实的基本功,开启通往更高竞技舞台的征途,为未来的辉煌战绩奠定坚实基础。

------ 让我们从第一个"Hello, World!"开始,书写属于我们的算法篇章!

1. 软件下载

1.1下载和使用

可以跳转这个链接 -- Dev-C++软件下载配置以及使用,来熟悉熟悉Dev C++软件。

1.2 软件一些问题处理

以及对Dev-C++一些问题的处理 -- Dev-C++一些问题的处理,帮助我们更好的使用Dev-C++。

2. 第一个C++文件

2.1 基础程序

cpp 复制代码
#include<iostream>
using namespace std;

int main()
{
	cout << "hello world" << endl;
	return 0;
 } 

一个程序的运行需要:编译+运行。

  • 编译:检查程序是否有错误警告
  • 运行:跳出终端,可以在屏幕上打印。

2.2 main函数

main函数是程序的入口,无论C++程序中有多少代码,都是从main函数开始执行,故main函数 也被称为:主函数。main函数前面的int表示main函数执行结束的时候返回一个整型类型的值,而在main函数的最后写 return 0; 正好前后呼应。

  • mian函数是程序的入口
  • main函数有且仅有一个
  • 一个项目中可以有多个.cpp文件,但只能有一个main函数,因为程序入口只能有一个 。关于函数,这里不过多描述,后面会专门讲。
cpp 复制代码
main函数固定模板
int mian()
{
  return 0;
}  

2.3 字符、字符串

在C语言中,使用单引号 括起来一个字符 ,表示字符字面值,比如:'2','a',使用双引号 括起来多个字符表示一个字符串,比如:"abcd","hello world",字符串中可以有一个或多个字符,也可以没有字符," "表示空字符串。

在C++的STL中又引入了string来表示字符串,功能更加强大,C语言不支持,后面会详细介绍。上述的代码中字符串的内容可以由所需变换,可以自己试试。

cpp 复制代码
using namespace std;

int main()
{
	'a';
	'6';
	'v';
	"abcd";
	"hello world";
	" ";//空字符串
	return 0; 
	
 }

2.4 头文件

由上面的代码中可以看到,基本上会在第一行都会有

c 复制代码
#include<iostream>

这就是包含头文件,头文件的名字叫:iostream,使用#include<>的形式进行包含。iostream文件中的io指的是输入(进入程序的信息,就是可以给程序输入数据)和输出(从程序中输出的信息,就是将程序的数据打印到屏幕上)。

在C++中要完成输入和输出的操作会涉及到iostream文件中的多个定义,所以要包含这个头文件的。一个头文件可以理解为一个工具箱,工具箱中包含多种工具,想要使用这些工具就必须包含头文件。比如:cout是输出对象,就是用来完成数据输出,需要包含头文件。

iostream -- 输入输出流

i -- input -- 输入

o -- output -- 输出

除了这个头文件之外,C++还有其他的一些头文件,每一个头文件都支持一组特定的工具。在代码中如果使用某个头文件的定义,就要包含相对应的头文件。

C++库函数相关头文件:C++库函数相关头文件

注意:

  1. 在C语言中头文件的扩展名是.h,但是C++中发生了一些变化,对老式的C的头文件保留了扩展名.h,但是C++自己并没有扩展名。

C语言头文件:C语言头文件

  1. C语言有的头文件被转化为C++头文件,这些头文件被重命名,去掉.h的扩展名,并在文件名前面加上前缀C,表示来自C语言。例如:C语言中数学的头文件math.h,在C++中就是cmath。同时也要注意,有时候C语言版本和C++版本相同,有时候,C++会有一些修改。

头文件的命名约定:

2.5 cin和cout初识

cpp 复制代码
cout << "hello world" << endl;

这句代码是上面程序中最重要的代码,其他所有代码都是为了编写这句代码。

cout是标准输出流对象
cin是标准输入流对象

代码如下:

cpp 复制代码
#include<iostream>
using namespace std;

int main()
{
	int num;
	cin >> num;
	cout << num << endl;
	return 0;
}
  • cin和cout是全局的流对象,cin负责输入数据,cout负责输出数据。
  • endl是C++中特殊的操作符,效果是换行和刷新缓冲区,使用时必须包含iostream头文件
  • <<是流插入运算符,和cout配合使用。>>是流提取运算符,和cin配合使用。两者易混淆,大家一定要取分开。
  • 使用C++输入输出更方便,不需要像C语言中printf/scanf那样,需要手动控制格式类型。C++可以自动识别变量类型。
    比如:

C++语言:

C语言:

c 复制代码
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d",&n);
	printf("%d\n",n);
	return 0;
}

如果没有endl则会出现这种情况,所以一定不要忘记码上。

2.6 名字空间

cpp 复制代码
using namespace std;

这句话代码意思是:使用名字空间std(名字空间也叫命名空间)。为了更好的理解什么叫做名字空间,名字空间的用处是什么,大家可以看一个例子:

一个学校里学生可能有重名,假设这个学校有3个叫张三的同学,那么每次老师喊张三的时候,其他两个张三就会误会,是不是在喊自己,这就是因为这三个张三其实在同一个范围(空间)内的,就会有名字的冲突。但是如果这个学校的学生分为三个班,分别是1班、2班、3班,把三个张三分别安排在不同的班级,那么老师以后喊:1班的张三,那么2班、3班的张三就不会误会了,这是不是就很好的解决了名字冲

突的问题。其实这里的本质就是:1.将名字进行了隔离,2.在使用名字之前先交待使用哪个班级的名字

在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称如果都存在于全局作用域中,可能会导致很多冲突。使用名字空间的目的是对标识符的名称进行隔离,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

std是C++标准库的名字空间名,C++将标准库的定义实现都放到这个命名空间中,当我们需要使用标准库中的内容时,就需要加上:using namespace std;当有了这句代码的时候,表示名字空间std中信息都是可⻅和可用的,比如:cin、cout、endl等。

名字空间也可以自己定义,因为主要以竞赛常用为主,这里不加以详细介绍,可以自行学习。

当然直接使用using namespace std;是一种简单粗暴的做法,直接这样使用,就意味着后续在std这个名字空间中的各种定义都可以直接使用,但是我们往往只是使用部分。所以名字空间其实也可以这样使用:

cpp 复制代码
#include<iostream>
using namespace std;
int main()
{
    std::cout << "hello world" << std::endl;
    return 0;
}

代码中的std::cout的意思就是使用std名字空间中的cout。

不过一般这种写法比较浪费时间,所以竞赛中一般直接写:

cpp 复制代码
using namespace std;

2.7 注释

C++里有两种注释形式:

  1. 单行注释://
  2. 多行注释:/* */

注释本来是对代码进行解释的文字,要放在代码中,但是又无需编译。注释是给程序员自己看的,编译器会忽略注释,基于注释是被编译器忽略的这个特点,在代码中有些代码不再需要的时候也会使用注释的方式屏蔽。

单行注释:当前行不参与编译和运行

cpp 复制代码
int main()
{
	int i = 0;
	//cin >> i;   //这是单行注释 
	cout << i << endl;
	return 0;
}

多行注释:被包含在内的多行不参与编译和运行

cpp 复制代码
/*
int main()
{
	int i = 0;
	//cin >> i;   //这是单行注释 
	cout << i << endl;
	return 0;
}*/

注释方式:

  1. 快捷键:**ctrl + /**注释和取消注释
  2. 点击菜单中的编译

2.8 练习

以下是一些简单题型可以做一下,后面会单独进行讲解。

B2002 Hello,World!

小飞机

B2003 输出第二个整数

B2005 字符三角形


结语

希望这篇文章可以助各位敲开算法竞赛的大门,初识C++的奥秘,去探寻算法世界的精妙。同时愿诸君能一起共渡重重浪,终见缛彩遥分地,繁光远缀天

相关推荐
g***B7384 分钟前
Kotlin协程在Android中的使用
android·开发语言·kotlin
whysqwhw5 分钟前
Kotlin `by`关键字特性深度解析
github
火白学安全9 分钟前
《Python红队攻防零基础脚本编写:进阶篇(一)》
开发语言·python·安全·web安全·网络安全·系统安全
6***x54511 分钟前
C++在计算机视觉中的图像处理
c++·图像处理·计算机视觉·游戏引擎·logback·milvus
爱码小白11 分钟前
PyQt5 QTimer总结
开发语言·qt
fpcc14 分钟前
跟我学C++中级篇——内存访问违例
c++
A***279516 分钟前
Kotlin反射机制
android·开发语言·kotlin
E***q53921 分钟前
C++内存对齐优化
开发语言·c++
D_evil__23 分钟前
[C++高频精进] 文件IO:文件操作
c++
uhakadotcom40 分钟前
Loguru 全面教程:常用 API 串联与实战指南
后端·面试·github