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

目录


前言

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


一、第⼀个C++程序

1.1 基础程序

c 复制代码
#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 头文件

前⾯的代码中,写的,

cpp 复制代码
 #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 是告诉程序把后⾯双引号中的内容打印到标准输出设备(屏幕)上,双引号中的内容可以替换的。

cpp 复制代码
#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++的输⼊输出可以⾃动识别变量类型。(后期会讲到,再慢慢体会)
cpp 复制代码
#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 这个名字空间中的各种定义都可以直接使⽤,但是我们往往只是使⽤部分。所以名字空间其实也

可以这样使⽤:

cpp 复制代码
#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!

cpp 复制代码
int main()
{
	cout << "Hello,World!" << endl;
	return 0;
}

练习2:打印飞机

cpp 复制代码
int main()
{
	cout << "     **     " << endl;
 	cout << "     **     " << endl;
 	cout << "************" << endl;
 	cout << "************" << endl;
 	cout << "    *  *    " << endl;
 	cout << "    *  *    " << endl;

	return 0;
}

练习3:第⼆个整数

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

练习4:字符三角形

cpp 复制代码
#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++入门的知识点,并加以练习;下期见。


相关推荐
S-X-S26 分钟前
Java实现.env文件读取敏感数据
java·开发语言·.env
我命由我1234527 分钟前
游戏开发领域 - 游戏引擎 UE 与 Unity
开发语言·c++·unity·c#·游戏引擎·unreal engine·unreal engine 4
深度混淆30 分钟前
C#,入门教程(11)——枚举(Enum)的基础知识和高级应用
开发语言·算法·c#·枚举·enum
诗句藏于尽头30 分钟前
PHP实现混合加密方式,提高加密的安全性(代码解密)
开发语言·笔记·php
a180079310801 小时前
Java基础知识总结(三十二)--API--- java.lang.Runtime
java·开发语言
zzlyx991 小时前
2025年大年初一篇,C#调用GPU并行计算推荐
开发语言·c#
lsx2024061 小时前
Kotlin 委托详解
开发语言
SomeB1oody1 小时前
【Rust】18.2. 可辩驳性:模式是否会无法匹配
开发语言·后端·rust
python算法(魔法师版)1 小时前
Spring Boot深度开发实践:从高效开发到生产级部署
开发语言·vue.js·spring boot·前端框架·ecmascript
扎量丙不要犟2 小时前
rust跨平台调用动态库
开发语言·后端·rust