蓝桥杯之c++入门(一)【第一个c++程序】

ops/2025/2/1 12:24:12/

目录

  • 前言
  • 一、第⼀个C++程序
    • 1.1 基础程序
    • 1.2 main函数
    • 1.3 字符串
    • 1.4 头文件
    • 1.5 cin 和 cout 初识
    • 1.6 名字空间
    • 1.7 注释
  • 二、四道简单习题(点击跳转链接)
    • 练习1:Hello,World!
    • 练习2:打印飞机
    • 练习3:第⼆个整数
    • 练习4:字符三角形
  • 总结


前言

从今天开始更新关于蓝桥杯备赛的相关文章,这个系列不会从头到尾彻底的学习c++,但是可以带领大家讲c++主要在竞赛中用的语句和语法详细的过一遍,所以需要有一定的语言基础,本人也通过文章来打卡学习;


一、第⼀个C++程序

1.1 基础程序

#include <iostream> //头⽂件
using namespace std; //使⽤std的名字空间
int main() //main函数
{cout << "hello world!" << endl; //输出:在屏幕打印"hello world!"return 0;
}

现在看不太懂没事我们就这个程序来对c++进行一个入门学习:

1.2 main函数

学过C语言的都知道:main 函数是程序的⼊⼝,C++ 的程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数也被叫做:主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类型的值,⽽在 main 函数的最后写 return 0; 正好前后呼应。

  • main 函数是程序的⼊⼝
  • main 函数有且仅有⼀个
  • ⼀个项⽬中可以有多个 .cpp ⽂件,但是只能有⼀个 main 函数(因为程序的⼊⼝只能有⼀个)关于函数, 这⾥不做过多描述,我们后⾯有专⻔的函数章节来讲解。

1.3 字符串

在 C 语⾔中,使⽤单引号括起来⼀个字符,表⽰字符字⾯值,⽐如: ‘1’ , ‘a’ ,使⽤双引号括起来多个字符表⽰⼀个字符串,⽐如: “abcdef” , “hello world” ,字符串中可以有⼀个或者多个字符,也可以没有任何字符, “” 表⽰空字符串。上⾯代码中的 “hello world!” 就是⼀个字符串。这类字符和字符串表⽰的⽅式在C++也完全⽀持的

在C++的 STL 中⼜引⼊了 string 来表⽰字符串,功能更加强⼤,C 语⾔不⽀持,后期会详细介绍。
上述的代码中字符串的内容可以根据你的需要变换,可以⾃⾏试试。

1.4 头文件

前⾯的代码中,写的,

 #include <iostream> 

就是在包含头⽂件,头⽂件的名字叫:iostream ,使⽤ #include <> 的形式进⾏包含。 iostream ⽂件中的 io 指的是输⼊(进⼊程序的信息,简单理解就是可以给程序输⼊数据)和输出(从程序中输出的信息,简单理解就是程序会打印数据在屏幕上)。
在 C++ 程序中要完成输⼊和输出的操作会涉及到 iostream ⽂件中的多个定义,所以就要包含这个头⽂件的。⽐如:代码中的 cout 是输出流对象,就是⽤来完成数据输出的,就需要包含头⽂件。除了 iostream 这个头⽂件之外,C++还有哪些头⽂件呢?
C++的编译器⾃带了很多头⽂件,每个头⽂件都⽀持⼀组特定的⼯具。

C++库函数相关头⽂件:https://zh.cppreference.com/w/cpp/header
在代码中如果使⽤了某个头⽂件中的定义,就得包含对应的头⽂件。

  1. 在C语⾔中头⽂件的扩展名是 .h ,但是C++中的⽤法发⽣了⼀些变化,对⽼式C的头⽂件保留了扩展名 .h ,但是C++⾃⼰的⽂件没有扩展名了。C语⾔头⽂件:https://zh.cppreference.com/w/c/header
  2. 有些C的头⽂件被转换成C++头⽂件,这些⽂件名被重命名,去掉了.h扩展名,并在⽂件名的前⾯加上了前缀c(表⽰来⾃C语⾔);例如:C语⾔中有关数学的头⽂件名字是math.h ,在C++中就是 cmath 。当然还得注意,有时头⽂件的C语⾔版本和C++版本相同,⽽有时候,新版本做了⼀些修改。

头⽂件的命名约定:

头文件类型约定实例说明
C++旧式风格.h结尾<iostream.h>C++程序可以使用,一些新的IDE可能不再支持
C旧式风格.h结尾<math.h>C、C++程序可以使用
C++新式风格没有扩展名<iostream>C++程序可以使用,使用namespace std
转换后的C加上前缀,没有扩展名<cmath>C++程序可以使用,可能包含不是C的特性名

1.5 cin 和 cout 初识

cout << “hello world!” << endl; 这句代码在上⾯的程序中是最重要的代码,其他所有的代码都是为了编写这句代码。
代码中的 cout 是标准输出流对象(针对控制台,也就是屏幕),其实还有标准输⼊流对象(针对的是键盘) cin 。
cout 是告诉程序把后⾯双引号中的内容打印到标准输出设备(屏幕)上,双引号中的内容可以替换的。

#include <iostream>
using namespace std;
int main()
{int num;cin >> num; //获取标准输⼊cout << num << endl; //对获取到的结果标准输出return 0;
}

学过C语言的兄弟们就发现这与C语言中的printf和scanf函数非常的像;但其实两者也有所以不同:

  1. cin 和 cout 是全局的流对象, cin 负责输⼊数据, cout 负责输出数据。
  2. endl 是 C++ 中⼀个特殊的操作符,效果是换⾏和刷新缓冲区,使⽤时必须包含在iostream 头⽂件。
  3. << 是流插⼊运算符和 cout 配合使⽤>> 是流提取运算符,和 cin 配合使⽤,两者容易混淆,⼤家⼀定要仔细区分,不可混⽤。
  4. 使⽤C++输⼊输出更⽅便,不需要像 printf / scanf 输⼊输出时那样,需要⼿动控制格式。C++的输⼊输出可以⾃动识别变量类型。(后期会讲到,再慢慢体会)
#include <iostream>
using namespace std;
int main() 
{float score = 0;cin >> score;//直接读取的就是浮点数cout << score;//直接输出的就是浮点数return 0;
}

1.6 名字空间

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 这个名字空间中的各种定义都可以直接使⽤,但是我们往往只是使⽤部分。所以名字空间其实也
可以这样使⽤:

#incldue <iostream>
int main()
{std::cout << "hello world" << std::endl;return 0;
}

代码中的 std::cout 的意思就是使⽤ std 名字空间中的 cout 。
也就是用那个就拿那个,上面的就是直接一起拿来,想用就用;

采⽤ std::cout 这种写法,如果频繁使⽤,在算法竞赛中⽐较⿇烦,耽搁时间但是在企业中做软件开发基本上都这样写的,这样写更好的避免名字冲突的问题,后期在慢慢琢磨。

1.7 注释

C++⾥主要有两种形式:单⾏注释 // 和多⾏注释 /* */
注释本来是对代码进⾏解释的⽂字,要放在代码中,但是⼜⽆需编译。注释是给程序员⾃⼰看的,编
译器会忽略注释,基于注释是被编译器忽略的这个特点,在代码中有些代码不再需要的时候也会使⽤
注释的⽅式屏蔽。

单⾏注释:指的是当前⾏不参与编译和运⾏;
多⾏注释:指的是被包含在内的多⾏不参与编译和运⾏;

在VS环境中注释和取消注释的快捷键: Ctrl + K + C , Ctrl + K + U
在DevC++中注释和取消注释的快捷键: Ctrl + /

二、四道简单习题(点击跳转链接)

练习1:Hello,World!

int main()
{cout << "Hello,World!" << endl;return 0;
}

练习2:打印飞机

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

练习3:第⼆个整数

#include <iostream>
using namespace std;
int main()
{int a,b;cin >> a >> b;cout << b << endl;return 0;
}

练习4:字符三角形

#include <iostream>
using namespace std;
int main()
{char c;cin >> c;cout << "  " << c << endl;cout << " " << c << c << c << endl;cout << c << c << c << c << c<< endl;return 0;} 

总结

这期我们主要讲了c++入门的知识点,并加以练习;下期见。



http://www.ppmy.cn/ops/154742.html

相关文章

MySQL知识点总结(十六)

请说明在复制拓扑中&#xff0c;中继日志集和从属服务器状态日志的作用。 中继日志用来保存从主服务器接受的二进制日志&#xff0c;与二进制日志相同的格式存储&#xff0c;由服务器自动管理&#xff0c;在其全部内容重放后会自动删除。 从属服务器状态日志存储关于如何连接…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化

1.25 视觉风暴&#xff1a;NumPy驱动数据可视化 目录 #mermaid-svg-i3nKPm64ZuQ9UcNI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-i3nKPm64ZuQ9UcNI .error-icon{fill:#552222;}#mermaid-svg-i3nKPm64ZuQ9UcNI …

全球AI模型百科全书,亚马逊云科技Bedrock上的100多款AI模型

今天小李哥给大家介绍的是亚马逊云科技上的AI模型管理平台Amazon Bedrock上的Marketplace&#xff0c;这是亚马逊云科技在今年re:Invent发布的一个全新功能&#xff0c;将亚马逊的电商基因带到了其云计算平台&#xff0c;让我们能够通过Amazon Bedrock访问100多种流行、新兴和专…

WPF常见面试题解答

以下是WPF&#xff08;Windows Presentation Foundation&#xff09;面试中常见的问题及解答&#xff0c;涵盖基础概念、高级功能和实际应用&#xff0c;帮助你更好地准备面试&#xff1a; 基础概念 什么是WPF&#xff1f; WPF是微软开发的用于构建桌面应用程序的UI框架&#x…

PSpice for TI体验

前言 基于 从零开始学 PSpice for TI 仿真工具 - 手把手操作实训课程_哔哩哔哩_bilibili 体验PSpice for TI的功能&#xff0c;并记录下来。文章内容大部分都参考自视频&#xff0c;可以理解成图文版。目前发现是没有支持中文语言&#xff0c;而且部分仿真&#xff0c;时间消耗…

第30章 测试驱动开发中的设计模式解析(Python 版)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

神经网络梯度爆炸的原因及解决方案

在深度学习中&#xff0c;梯度爆炸&#xff08;gradient exploding&#xff09;是一种常见的训练问题&#xff0c;尤其是在深层神经网络中。梯度爆炸指的是在反向传播过程中&#xff0c;梯度值呈指数级增长&#xff0c;导致网络权重的大幅更新&#xff0c;从而使得网络变得不稳…

C++ 7

vector 底层原理和扩容过程 底层原理 ● vector 是 C 标准库中的一个容器&#xff0c;可以看作是一个动态数组&#xff0c;它的大小可以根据元素的增加而增长。它通过在堆上分配一段连续的内存空间存放元素&#xff0c;支持时间复杂度为 O&#xff08;1 ) 的随机访问。 ● vec…