【C++ 程序设计入门基础】- Chapter One

news2024/12/26 12:00:54

目录

一、什么是 C++?

1、概念

2、标准库

二、第一个 C++ 程序

1、下载 C++ 开发工具

2、开始下载好之后,我们先设置一下编码,解决中文注释不显示的问题。

 3、下面我们就可以新建一个源代码

4、 编写完成后,我们就可以运行查看结果。

5、头文件、命名空间和主函数的详细说明

三、输入输出、格式

1、概述

2、四个预定义的标准流对象

setfill(char c)

setprecision(int n)

setw(int n)

 四、基本运算


一、什么是 C++?

1、概念

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

不同于C语言,C++是一种面向对象的语言,在 C 语言的基础上,C++ 扩充了一些自己特有的知识,如 bool 类型、重载函数、模板、STL等。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。

2、标准库

标准的 C++ 由三个重要部分组成:

  • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
  • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
  • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。

二、第一个 C++ 程序

1、下载 C++ 开发工具

这里我用的是 Dev-C++ 6.3 开发工具。

2、开始下载好之后,我们先设置一下编码,解决中文注释不显示的问题。

  • 工具 -> 编辑器选项 -> 基本 -> 将New Document Encoding选为UTF-8

在utf-8格式下中文注释仍然无法显示

  • 工具 -> 编辑器选项 -> 显示 -> 去掉这个勾勾 

 3、下面我们就可以新建一个源代码

点击文件-> 新建-> 源代码 myFirst.cpp

#include<iostream>//输入输出头文件
//i=input 输入
//o=output 输出
//stream 流
using namespace std;//命名空间,防止变量名冲突
//std=standard 标准的
int main()//主函数,这里名称只能是main
{
	//cout:表示输出的符号
	//<< :表示插入数据
	//endl:表示换行
	cout<<"zhaoYanFei,hello world!"<<endl;
	return 0;//返回0
}

4、 编写完成后,我们就可以运行查看结果。

点击运行:

        -> 编译(F9)

        -> 运行(F10)

        -> 编译运行(F11)

这里我们就直接 F11 编译运行即可。

输出如下:

5、头文件、命名空间和主函数的详细说明

头文件

C++ 中的输入、输出头文件 iostream
i   —— input 输入
o —— output 输出
stream —— 流
C 语言中的头文件以 .h 后缀,C++ 中头文件不加后缀。

C 语言中的string.h头文件,C++用 cstring,C语言中的 math 头文件,C++ 使用 cmath 头文件。

这不只是形式上的改变,其实现也有所不同。

命名空间

C++ 标准库中所有标识符并定义于一个名为 std 的命名空间中,std称为标准命名空(standard,标准的)。
引入标准命名空间方法:
using namespace std;
注意:语句末尾的分号不能少 。

主函数

主函数main()是程序的入口,每个程序都需要一个唯一主函数。主函数返回值为int型。

int main()//主函数,这里名称只能是main
{
	//cout:表示输出的符号
	//<< :表示插入数据
	//endl:表示换行
	cout<<"zhaoYanFei,hello world!"<<endl;
	return 0;//返回0
}

 注意:程序末尾返回0;

三、输入输出、格式

1、概述

  • 标准输入输出流的对象和操作方法都是由 istreamostream 两个类提供的,这两个类继承自ios 基类,它们预定义了标准输入输出流对象,并且提供了多种形式的输入输出功能。
  • C++ 在进行输入时需要从流中提取数据,在输出时需要向流中插入数据,提取和插入是通过在流类库中重载 “>>” “<<” 运算符来实现的。

2、四个预定义的标准流对象

cin:是 istream 类的对象,用于处理标准输入(即键盘输入);

cout:是 ostream 类的对象,用于处理标准输出(即屏幕输出);

cerr、clog:也都是 ostream 类的对象,用于处理标准出错信息,并将信息显示到屏幕上。

在这四个标准流对象中,除了cerr不支持缓冲外,其余3个都带有缓冲区。

对象名所属类对应设备含义
cinistream键盘标准输入,有缓冲
coutostream屏幕标准输出,有缓冲
cerrostream屏幕标准错误输出,缓冲
clogostream屏幕标准错误输出,有缓冲

cin 与提取运算符 “>>” 结合使用;

cout、cerr 与 clog 与插入运算符 “<<” 结合使用,完成了 C++ 中所有的输入输出操作。

1)cin

cin 是 istream 类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过提取运算符“>>”从流中提取数据,然后送给cin对象,由cin将对象送到指定地方。

1、输入单个数值

cin是带缓冲区的输入流对象,只有在输入完数据按下回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。

int a;
cin>>a;

此时若从键盘上输入6,则 6 只是存入缓冲区而并不能为 “>>” 运算符提取,当按下回车键(Enter)后,相当于执行 endl 语句,则缓冲区中内容才被刷新形成输入流,被 “>>” 运算符提取,然后传递给 cin 对象,由 cin 对象送到变量 a 中存储。


从流中读取数据要保证能正常进行。例如,如果针对上述代码从键盘输入“我是飞哥”,则提取操作会失败,此时,cin 流被置为出错状态。只有在正常状态时才能从输入流中提取数据,这也是C++I/O 的安全性体现。

注:这里如果输入中文时,头文件需要引入函数库

#include <windows.h>

一系列的函数都在头文件中包含(是一个函数库) 

而且在主函数的第一行需要设置编码

SetConsoleOutputCP(CP_UTF8);

/2、除了单个变量读取,cin对象也可以一次读入多个变量的值,因为“>>”运算符返回的是 istream 的引用,可连续提取数据。

char c1,c2;
cin>>c1>>c2;

 若从键盘输入’a’、’b’两个字符,上面的cin语句把输入的’a’字符送给变量c1,把输入的’b’字符送给c2。当输入多个数值时,要在数值之间加空格以示区分,cin 读到空格时,就能够区别输入中的各个数值。

当字符型 char 输入时,多个之间可以省略空格。

除了在输入的数据之间加空格,也可以在每输入一个数据后按回车键,这样完全可以正确的读入数据。

3、采用cin对象也可以对不同类型的变量读入数据。

string s;
float f;
cin>>s>>f;

当从键盘正确输入字符串和float类型的值时,cin将它们分别存储到对应变量中。字符串的读入也可以采用字符数组存储,例如: 

char str[10];
cin>>str;

 如果用一个字符数组存储字符串,要确保输入的字符串不超出字符数组的大小,否则会发生溢出,破坏内存中的其他数据。

2)cout

cout 是 ostream 类预定义的对象,对应的标准设备为屏幕,称作标准输出对象或屏幕输出对象,但也可以重定向输出到磁盘文件。用户可以通过 cout 对象调用 ostream 类的插入运算符和成员函数来输出信息。

1、利用cout对象可以直接输出常量

在输出常量值时,直接将要输出的内容放在“<<”运算符后面即可。 

cout << 10 << endl;
cout << 'a' << endl;
cout << "C++" << endl;

 2、利用cout对象输出变量的值

int a = 10;
string s = "C++";
float f = 1.2;
cout << a << endl;  //输出int类型的变量
cout << s << endl;  //输出string类型的变量
cout << f << endl;  //输出float类型的变量

在用 cout 输出变量值时,不必设置以什么格式输出,“<<” 运算符会根据变量的数据类型自动调用相匹配的重载函数,而正确输出。这比C语言中的 printf() 函数用法更简便。

3、利用 cout 对象输出指针引用类型的数据

当输出数据类型为指针或引用时,与 printf() 函数的用法一致;

不加 “*” 符号是输出指针的值,即变量的地址;

带有 “*” 符号输出的是指针指向的变量的值;

它比 printf() 的简便之处在于不必设置数据的输出格式。

int a = 10,*p;
int& b = a;
p = &a;
string s = "C++";
string* ps = &s;
cout << p << endl;  //输出结果是指针p的值,a变量的地址
cout << b << endl;  //输出结果是b的值10
cout << *p << endl; //输出结果是指针p指向的变量的值,即a的值10
cout << ps << endl; //输出结果是指针ps的的值,s变量的地址
cout << *ps << endl; //输出结果是指针ps指向的变量的值,即s的值”C++”

上面代码中,变量前带 “*” 号的表示为指针。

地址 “&” 符号在等号 “=” 左侧表示变量的引用,在等号 “=” 右侧表示取地址。

 4、cout对象可以连续输出数据

int a = 10;
char c = 'a';
cout << a << "," << c << endl;

 

 

当用户在程序中包含了头文件iostream时,编译器调用相应的构造函数产生这 4 个标准流对象,用户在程序中就可以直接使用它们了。

#include <iostream>
#include<windows.h>
using namespace std;
 int main()
{
    SetConsoleOutputCP(CP_UTF8);
	const double pi = 3.14159;
	double r, c, s;
	cout << "输入圆的半径:";
	cin >> r;
	c = 2.0 * pi * r;
	s = pi * r * r;
	cout << "圆的周长为:" << c << endl;
	cout << "圆的面积为:" << s << endl;
	return 0;
}

 3)精度、域宽和填充字符的设置

引入头文件

#include <iomanip>

操作符

功能

setfill(char c)

设置以c表示的填充字符

setprecision(int n)

设置以n表示的数值精度

setw(int n)

设置以n表示的域宽
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
	double d=sqrt(2.0);
	cout << "精度设置:" << endl;
	for (int i = 0; i < 5; i++)
	{
		cout <<setprecision(i)<<d<<endl;//设置不同的精度
	}
	cout << "当前精度为:" <<cout.precision() << endl;
	cout << "当前域宽:" <<cout.width() << endl;
	cout <<setw(6)<<d << endl; //默认是右对齐
	cout << "当前填充字符:" << endl;
	cout<<setfill('*') <<setw(10)<<d << endl; //setfill()函数可以直接插入流中
	return 0;
}

 注:cout <<setprecision(i)<<d<<endl;

这里所设置的精度为小数点前后都包含的位数。

如果想要设置我们通常讲的保留小数点后几位,那么应该设置精度前,加定点输出。

cout<<fixed;

cout <<setprecision(i)<<d<<endl;//设置不同的精度

4)常用的操作符

 四、基本运算

5 种基本运算:加(+)、减(-)、乘(*)、除(/)、模取余数(%)。

示例代码:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
	int n;
	int ge,shi,bai;
	cin>>n;
	ge=n%10;
	shi=(n/10)%10;
	bai=(n/100)%10;
	cout<<ge<<setw(2)<<shi<<setw(2)<<bai<< endl; 
	return 0;
}
  • 算术运算符

运算符

运算

范例

结果

+

正号

+3

3

-

负号

b=4;-b;

-4

+

5+5

10

-

6-4

2

*

3*4

12

/

5/5

1

%

取模

7%5

2

++

自增(前)

a=2;b=++a;

a=3;b=3;

++

自增(后)

a=2;b=a++;

a=3;b=2;

--

自减(前)

a=2;b=--a;

a=1;b=1;

--

自减(后)

a=2;b=a--;

a=1;b=2;

  • 赋值运算符

 

 

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

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

相关文章

MyBatis:缓存机制详解

本篇内容包括&#xff1a;MyBatis 缓存机制概述、一级缓存与二级缓存的介绍、配置和具体流程。 一、MyBatis 缓存机制概述 在我们常见的 OLTP&#xff08;on-line transaction processing&#xff0c;联机事务处理&#xff09;类型的 Web 应用中&#xff0c;性能的瓶颈往往来源…

【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码

目录前言一、注意力机制&#xff1a;Attention二、自注意力机制&#xff1a;Self-Attention三、多头注意力机制&#xff1a;Multi-Head Self-Attention四、位置编码&#xff1a;Positional EncodingReference前言 最近在学DETR&#xff0c;看源码的时候&#xff0c;发现自己对…

【码上掘金编程挑战赛】- 前端可冲【简历加分项】

【码上掘金编程挑战赛】1.比赛报名2. 比赛介绍赛题一&#xff1a;码上游戏赛题二&#xff1a;码上创意赛题三&#xff1a;码上文言文赛题四&#xff1a;码上10243.报名4.提交作品1.比赛报名 比赛报名链接 https://juejin.cn/challenge/1?utm_source3169 2. 比赛介绍 赛题一…

Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】

Spring5入门到实战------12、使用JdbcTemplate操作数据库&#xff08;增删改查&#xff09;。具体代码讲解 【上篇】 Spring5入门到实战------13、使用JdbcTemplate操作数据库&#xff08;批量增删改&#xff09;。具体代码讲解 【下篇】 以上两篇采用的是注解开发形式xml配置…

自己动手写操作系统系列第3篇,实现时钟和键盘中断

对应labOS版本1.3 程序源码可以私聊我 picirq.h int 0x20~0x2f接收中断信号IRQ0~15&#xff0c;因为int 0x00~0x1f不能用于IRQ。 picirq.c pic0_mask0xfb即1111 1011&#xff1b;PIC1以外全部禁止。pic1_mask0xff即1111 1111&#xff1b;禁止所有中断 pic_enable函数就是将…

【Linux下安装jdk】Linux下安装jdk

Linux下安装jdk 1、-RPM安装 1.1、检查系统是否安装过jdk java -version 检查是否有安装包 rpm -qa | grep java 1.2、安装jdk 查看服务器版本: uname -a 下载jdk对应rpm包: https://www.oracle.com/java/technologies/downloads/#java8 上传安装包至任意目录下&…

用户登录权限校验 JWT【详解】

JWT &#xff08;json web token&#xff09;是当前最流行的用户登录权限校验&#xff08;用户认证鉴权&#xff09;方案。 官网 https://jwt.io/ JWT 的工作流程 客户端填写账号密码访问登录接口 login&#xff0c;将账号密码传给服务端服务端验证账号密码是否正确&#xff0c…

职言 | 校招面试有感,一个面试官的几点建议

职言&#xff1a; 最近一直在校招&#xff0c;我&#xff08;作者&#xff09;和同事说等这段时间结束&#xff0c;我不想再参与面试了&#xff0c;快面吐了。从校招开始&#xff0c;我团队前前后后陆续进了500多封学生简历&#xff0c;我经常一整天排满了面试&#xff0c;聊到…

【电子通识】芯片资料(数据手册/规格书)查询常用网站和方法

目录 1.AlldataSheet 网站&#xff08;建议使用&#xff09; 2.ICpdf 网站 3.CIC中国IC网 网站 4.datasheet&#xff08;不建议使用&#xff09; 5.半导小芯 &#xff08;建议使用&#xff09; 6.立创商城 &#xff08;建议使用&#xff09; 在做硬件的芯片选型、产品维修…

生物信息学笔记02 -- 研究的一般方法

生物信息学概述 以基因组DNA序列信息为源头&#xff0c;识别基因组序列中代表蛋白质和RNA基因的编码区&#xff0c;阐明非编码区的信息特征&#xff0c;破译隐藏在DNA序列中的遗传语言规律 生物信息学研究的内容与方法 研究主要内容 ⚫ 生物学数据的收集、存储、管理与提供 …

C++:继承

文章目录前言一、继承的概念及定义1.继承的概念2.继承的定义二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员总结前言 本文介绍C中的继承。 一、继承的概念及定义 1.继承的概念 继承机制是面向对象程序设计使代码可…

厨电智能化趋势下,究竟什么才是真正的“用户思维”?

文|智能相对论 作者|佘凯文 近期2022年前三季度的各项经济数据在陆续发布&#xff0c;大环境依然承压&#xff0c;各个行业都在负重前行。 厨电行业在房地产下滑、疫情反复等因素影响下&#xff0c;前三季度同样一直承受着不小的压力&#xff0c;AVC数据显示&#xff0c;202…

【面试官说实现一个顺序表,但听到要求后我沉默了】

在很多人心里&#xff0c;顺序表是数据结构最基础最简单的东西了&#xff0c;如果面试让我们手撕一道顺序表&#xff0c;相信大家心里早就乐开了花&#xff0c;但是面试官真的会出这么简单的题吗&#xff1f; 答案是&#xff1a;当然会&#xff0c;哈哈。 我们来看看面试官的要…

【精选】ARMv8/ARMv9架构入门到精通-[前言]

快速链接: . &#x1f449;&#x1f449;&#x1f449; 个人博客笔记导读目录(全部) &#x1f448;&#x1f448;&#x1f448; 付费专栏-付费课程 【购买须知】: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 想不想一夜暴富&#xf…

python基于PHP+MySQL的高校公选课管理信息系统

随着我国教育质量提高,在校大学生的数量也在不断的增长。相对应的如何让学生根据自己的兴趣爱好进行在线选课,从而有目的的对学生进行培养,也是当前很多高校教务人员所关心的问题。能够让更多的大学生进行在线自主选课,选择自己所喜欢的课程和教师,我们开发了高校公选课管理系统…

强化学习论文分析3---蜂窝网络联合频谱和功率分配的深度强化学习--《Deep Reinforcement Learning for ......》

目录一、研究内容概述二、系统目标与约束1.系统描述2.系统目标三、DQN、DDPG网络设计四、性能表征本文是对论文《Deep Reinforcement Learning for Joint Spectrum and Power Allocation in Cellular Networks》的分析&#xff0c;若需下载原文请依据前方标题搜索&#xff0c;第…

深入理解java线程池+源码解读

文章目录一.线程池简介1. 什么是线程池2. 线程池的优点3. 线程池中核心关系继承4.对线程池的理解①框架的两极调度模型②核心线程和非核心线程的本质区别二. 线程池核心概念1. 线程池核心参数2.两种常见的线程池①newCachedThreadPool②newFixedThreadPool③newSingleThreadExc…

基于STM32F469 discovery kit 开发板的开发3

目录基于STM32F469 discovery kit 开发板的开发3软件项目架构1. 应用层&#xff1a;2. Drivers层3. Middlewares层软件工作流程main函数入口LED等初始化配置外部中断基于STM32F469 discovery kit 开发板的开发3 前文我们已经实现了第一个例程在discovery 开发板上的运行&#…

virtio机制简介

What is VirtIO VirtIO是virtual input & output的缩写&#xff0c;是在host device之上的一层抽象层&#xff0c;提供给虚拟机使用。VM虚机一般是通过virtio device来使用host devices设备的&#xff0c;所以一个VirtIO device的主要作用其实就是充当VM与host device har…

Arduino UNO 可视化GT-24工业级无线透传

Arduino UNO 可视化GT-24工业级无线透传一、前言二、硬件要求三、参数基础四、原理剖析五、透传思路六、程序概要七、arduino使用接线八、成果展示一、前言 无线透传市面上较为常见的是基于蓝牙、esp的多种透传模块&#xff0c;今天介绍的则是用NRF24L01芯片构成的电路。&…