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

目录

  • 前言
  • 一、第⼀个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++入门的知识点,并加以练习;下期见。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【背包问题 】01背包

目录 一&#xff0c;01背包问题详解 问题描述&#xff1a; 问题分析&#xff1a; 代码&#xff1a; 空间优化&#xff1a; 二&#xff0c;典例 1&#xff0c;分割等和子集 题目解析&#xff1a; 算法解析&#xff1a; 代码&#xff1a; 空间优化&#xff1a; 2&am…

81,【5】BUUCTF WEB [b01lers2020]Life on Mars

进入靶场 怎莫颠颠的&#xff0c;一下子就想到展博了 先把左边的挨个点一遍 在最后一个有点收获 不过也没其他收获了 这种进去给个正常网页的题目&#xff0c;基本都靠url获取信息了 抓包看看有没有其他信息 竟然没有任何信息 自闭了 看别人的wp去咯 为什么别人抓到的包里…

80,【4】BUUCTF WEB [SUCTF 2018]MultiSQL

53&#xff0c;【3】BUUCTF WEB october 2019 Twice SQLinjection-CSDN博客 上面这个链接是我第一次接触二次注入 这道题也涉及了 对二次注入不熟悉的可以看看 BUUCTF出了点问题&#xff0c;打不开&#xff0c;以下面这两篇wp作为学习对象 [SUCTF 2018]MultiSQL-CSDN博客 …

Vue 响应式渲染 - 指令

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 响应式渲染 - 指令 目录 指令 介绍 缩写 指令示例 总结 指令 介绍 指令&#xff1a;是指带有v-前缀的特殊属性 v-bind 动态绑定属性 v-if 动态创建/删除 v-show 动态显示/隐藏 v-on:click 绑定事件 v-for 遍历…

扣子平台音频功能:让声音也能“智能”起来

在数字化时代&#xff0c;音频内容的重要性不言而喻。无论是在线课程、有声读物&#xff0c;还是各种多媒体应用&#xff0c;音频都是传递信息、增强体验的关键元素。扣子平台的音频功能&#xff0c;为开发者和内容创作者提供了一个强大而灵活的工具&#xff0c;让音频的使用和…

python3+TensorFlow 2.x(三)手写数字识别

目录 代码实现 模型解析&#xff1a; 1、加载 MNIST 数据集&#xff1a; 2、数据预处理&#xff1a; 3、构建神经网络模型&#xff1a; 4、编译模型&#xff1a; 5、训练模型&#xff1a; 6、评估模型&#xff1a; 7、预测和可视化结果&#xff1a; 输出结果&#xff…

LKT4304新一代算法移植加密芯片,守护 物联网设备和云服务安全

凌科芯安作为一家在加密芯片领域深耕18年的企业&#xff0c;主推的LKT4304系列加密芯片集成了身份认证、算法下载、数据保护和完整性校验等多方面安全防护功能&#xff0c;可以为客户的产品提供一站式解决方案&#xff0c;并且在调试和使用过程提供全程技术支持&#xff0c;针对…

js/ts数值计算精度丢失问题及解决方案

文章目录 概念及问题问题分析解决方案方案一方案二方案其它——用成熟的库 概念及问题 js中处理浮点数运算时会出现精度丢失。js中整数和浮点数都属于Number数据类型&#xff0c;所有的数字都是以64位浮点数形式存储&#xff0c;整数也是如此。所以打印x.00这样的浮点数的结果…

SSM框架探秘:Spring 整合 SpringMVC 框架

搭建和测试 SpringMVC 的开发环境&#xff1a; web.xml 元素顺序&#xff1a; 在 web.xml 中配置 DisPatcherServlet 前端控制器&#xff1a; <!-- 配置前端控制器 --> <servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>…

算法11(力扣496)-下一个更大元素I

1、问题 nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 &#xff0c;下标从 0 开始计数&#xff0c;其中nums1 是 nums2 的子集。 对于每个 0 < i < nums1.length &#xf…

2024年博客之星主题创作|2024年蓝桥杯与数学建模年度总结与心得

引言 2024年&#xff0c;我在蓝桥杯编程竞赛和数学建模竞赛中投入了大量时间和精力&#xff0c;这两项活动不仅加深了我对算法、数据结构、数学建模方法的理解&#xff0c;还提升了我的解决实际问题的能力。从蓝桥杯的算法挑战到数学建模的复杂应用&#xff0c;我在这些竞赛中…

Spring FatJar写文件到RCE分析

背景 现在生产环境部署 spring boot 项目一般都是将其打包成一个 FatJar&#xff0c;即把所有依赖的第三方 jar 也打包进自身的 app.jar 中&#xff0c;最后以 java -jar app.jar 形式来运行整个项目。 运行时项目的 classpath 包括 app.jar 中的 BOOT-INF/classes 目录和 BO…

初阶数据结构:链表(二)

目录 一、前言 二、带头双向循环链表 1.带头双向循环链表的结构 &#xff08;1)什么是带头&#xff1f; (2)什么是双向呢&#xff1f; &#xff08;3&#xff09;那什么是循环呢&#xff1f; 2.带头双向循环链表的实现 &#xff08;1&#xff09;节点结构 &#xff08;2…

Java Web-Request与Response

在 Java Web 开发中&#xff0c;Request 和 Response 是两个非常重要的对象&#xff0c;用于在客户端和服务器之间进行请求和响应的处理&#xff0c;以下是详细介绍&#xff1a; Request&#xff08;请求对象&#xff09; Request继承体系 在 Java Web 开发中&#xff0c;通…

mysql 学习2 MYSQL数据模型,mysql内部可以创建多个数据库,一个数据库中有多个表;表是真正放数据的地方,关系型数据库 。

在第一章中安装 &#xff0c;启动mysql80 服务后&#xff0c;连接上了mysql&#xff0c;那么就要 使用 SQL语句来 操作mysql数据库了。那么在学习 SQL语言操作 mysql 数据库 之前&#xff0c;要对于 mysql数据模型有一个了解。 MYSQL数据模型 在下图中 客户端 将 SQL语言&…

微信小程序date picker的一些说明

微信小程序的picker是一个功能强大的组件&#xff0c;它可以是一个普通选择器&#xff0c;也可以是多项选择器&#xff0c;也可以是时间、日期、省市区选择器。 官方文档在这里 这里讲一下date picker的用法。 <view class"section"><view class"se…

【学习笔记】计算机网络(二)

第2章 物理层 文章目录 第2章 物理层2.1物理层的基本概念2.2 数据通信的基础知识2.2.1 数据通信系统的模型2.2.2 有关信道的几个基本概念2.2.3 信道的极限容量 2.3物理层下面的传输媒体2.3.1 导引型传输媒体2.3.2 非导引型传输媒体 2.4 信道复用技术2.4.1 频分复用、时分复用和…

总结8..

#include <stdio.h> // 定义结构体表示二叉树节点&#xff0c;包含左右子节点编号 struct node { int l; int r; } tree[100000]; // 全局变量记录二叉树最大深度&#xff0c;初始为0 int ans 0; // 深度优先搜索函数 // pos: 当前节点在数组中的位置&#xff0c…

多智能体中的理论与传统智能体理论有何异同?

多智能体系统与传统单智能体理论在多个方面存在异同&#xff0c;多智能体系统在理论上扩展了单智能体系统的研究范畴&#xff0c;强调智能体之间的交互和协作。随着人工智能、人机智能、人机环境系统智能的发展&#xff0c;多智能体系统在机器人群体、分布式计算、资源管理等领…

RKNN_C++版本-YOLOV5

1.背景 为了实现低延时&#xff0c;所以开始看看C版本的rknn的使用&#xff0c;确实有不足的地方&#xff0c;请指正&#xff08;代码借鉴了rk官方的仓库文件&#xff09;。 2.基本的操作流程 1.读取模型初始化 // 设置基本信息 // 在postprocess.h文件中定义&#xff0c;详见…