文章目录
- 创建文件(Hello World)
- 注释
- 变量的使用
- 常量
- 标识符命名规则
- 数据类型
- 整形
- sizeof关键字
- 实型(浮点类型)
- 字符型
- 转义字符
- 字符串类型
- 布尔类型
- 数据的输入
- 加减乘除运算
- 算数运算
- 逻辑运算
- 程序流程结构
- 选择结构
- 循环结构
- 跳转语句
- 举例(while循环+break)
- 举例(for循环+contine)
- 跳转语句goto
- 数组
- 一维数组
- 数组名
- 数组逆置
- 冒泡排序
- 二维数组
- 数组名称
VsStudio下载
创建文件(Hello World)
或者
添加模块
//main.cpp
#include <iostream>
using namespace std;
int main(void) {
cout << "hello world" << endl;
system("pause");
return 0;
}
注释
- 单行注释:
//
- 多行注释:
/**/
变量的使用
变量就是方便我们操作内存中的数据
语法:数据类型 变量名 = 变量初始值
。例如:int a = 10;
常量
常量用于记录程序中不可更改的数据
常量定义的俩种方式
#define
宏常量:#define 常量名 常量值
const
修饰的变量:const 变量名 = 常量值
标识符命名规则
作用: C++标识符(变量,常量)命名时有一套自己的规则
- 标识符不能是关键字
- 标识符只能由字母、数字、下划线组成
- 第一个字母必须是字母或者下划线
- 标识符中字母区分大小写
定义是,尽量见名知意,方便他人和自己阅读
数据类型
整形
数据类型 | 占用空间 | 取值范围 |
---|---|---|
shot(短整型) | 2字节 | (-215~215-1) |
int(整形) | 4字节 | (-231~231-1) |
long(长整形) | windows是4字节,Linux为4字节(32位)8字节(64位) | (-231~231-1) |
long long(长长整形) | 8字节 | (-263~263-1) |
sizeof关键字
#include <iostream>
using namespace std;
int main(void) {
long long ll = 628;
cout << sizeof(ll) << endl;
system("pause");
return 0;
}
实型(浮点类型)
数据类型 | 占用空间 | 有效值范围 |
---|---|---|
float | 4字节 | 7位有效数字 |
double | 8字节 | 15~16位有效数字 |
#include <iostream>
using namespace std;
int main(void) {
float pi = 3.14f;
double test = 3.1415926;
cout << "单精度:" << pi << endl;
cout << "双精度:" << test << endl;
system("pause");
return 0;
}
字符型
作用: 字符型变量用于显示单个字符
语法:char ch = 'a'
(只能写单引号和里面只能写一个字符)
#include <iostream>
using namespace std;
int main(void) {
char ch = 'a';
cout << ch << endl;
cout << sizeof(ch) << endl;
cout << (int)ch << endl;
system("pause");
return 0;
}
字符型变量并不是本身放入内存存储,而是将对应的ASCII码放入
转义字符
转义字符 | 含义 | ASCII码值(十进制) |
---|---|---|
\a | 警报 | 007 |
\b | 退格 | 008 |
\f | 换页 | 012 |
\n | 换行 | 010 |
\r | 回车(CR) | 013 |
\t | 水平制表 | 009 |
\v | 垂直制表 | 011 |
\\ | 代表一个反斜线字符"\" | 092 |
\’ | 代表一个单引号 | 039 |
\‘’ | 代表双引号 | 034 |
\? | 代表一个问号 | 063 |
\0 | 数字0 | 0000 |
\ddd | 8进制转移字符,d范围0~7 | 3位8进制 |
\hhh | 16进制转移字符,h范围:0-9,a-f | 3位16进制 |
字符串类型
作用:表示一串字符
- C语言风格字符串
char 变量名[] = "字符串值"
char str[] = "...";
- C++风格字符串
string 变量名 = "字符串值"
string str = ""
布尔类型
布尔类型返回值只有真(本质是1)或假(本质是0)
int main(){
bool flag = true
cout << flag << endl;
}
数据的输入
关键字
cin
语法:cin >> 变量
int a = 0;
cin >> a;
cout << "输入的值:" << a << endl
加减乘除运算
运算符类型 | 作用 |
---|---|
算术运算符 | 用于处理四则运算 |
赋值运算符 | 用于将表达式的值给变量 |
比较运算符 | 用于表达式的比较,并返回一个真或假值 |
逻辑运算符 | 用于根据表达式的值返回真值或假值 |
算数运算
运算符 | 属于 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10+5 | 15 |
- | 减 | 10-5 | 5 |
* | 乘 | 10*5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10%3 | 1 |
++ | 前递增 | a=0;++a | 0,1 |
++ | 后递增 | a=0;a++ | 0,0 |
– | 前递减 | a=2;–a | 2,1 |
– | 后递减 | a=0;a– | 2,2 |
逻辑运算
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果a为假,那么!a就是真 |
&& | 与 | a && b | 如果a和b为真,结果才为真 |
|| | 或 | a||b | 如果a和b其中一个为真, 结果就为真 |
程序流程结构
C/C++支持的三种运行结构:
顺序结构
,选择结构
,循环结构
选择结构
if语句(单行)
语法if(条件){}
int main(){
int a = 10;
if(a > 0){
cout<< a << endl;
}
}
if语句(多行)
语法if(条件){}else{}
int a = 0;
if(a > 10){
//...
}else{
//...
}
if语句(多条件)
语法if(条件1){}else if(条件2){}else if(条件n){}else{}
嵌套if语句
语法if(条件1){if(条件2){}}
三目运算符
语法条件?true的语句:false的语句
int a = 10;
a < 10? "真的":"假的";
switch语句
语法switch(条件){case value1:执行语句;break;case value2:执行语句;break;}
循环结构
while循环语句
语法while(条件){满足条件执行循环}
do…while语句
语法do{}while(条件)
不同点: 相比于while循环dowhile循环是无论满不满足条件都会执行一次
for循环
语法for(起始表达式;条件表达式;末尾循环体){循环语句}
for(int i = 0; i< 10; i++){
cout<< i << endl;
}
嵌套循环
for(int i=0;i<5;i++){
for(int j=0; j< 3;j++){
cout << i*j << endl;
}
}
跳转语句
作用: 用于跳出选择结构或者循环结构
举例(while循环+break)
int i = 0;
while(true){
//死循环
if(i >= 10){
//当满足条件,跳出循环
break;
}
i++;
}
举例(for循环+contine)
for(int i = 0; i< 10; i++){
if(i / 2 == 0){
contine;
}
}
跳转语句goto
- 可以之前的那个break的案例来进行修改
- 语法
goto Name;Name:语句
#include <iostream>
using namespace std;
int main(void) {
int i = 0;
while (true) {
//死循环
if (i >= 10) {
//当满足条件,跳出循环
goto FLAG;
}
i++;
}
FLAG:cout << i << endl;
}
不怎么用的原因是: 跳转过于平凡逻辑会很混乱
数组
- 特点一: 数组中每个数据元素都是相同数据类型
- 特点二: 数组是由连续的内存位置组成
一维数组
定义一维数组的三种方式:
数据类型 数组名[数组长度];
数据类型 数组名[数组长度] = {值1,值2,....}
数据类型 数组名[] = {值1,值2,....}
//数据类型 数组名[数组长度];
int arr[5];
//给数组中的元素进行赋值
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
//访问数据元素
//cout << arr[0] << endl;
//cout << arr[1] << endl;
//cout << arr[2] << endl;
//cout << arr[3] << endl;
//cout << arr[4] << endl;
for(int i=0;i < 5; i++){
cout << arr[i] << endl;
}
数组名
一维数组的名称的用途:
- 可以统计整个数组在内存中的长度
- 可以获取数组在内存中的首地址
//1.可以统计整个数组在内存中的长度
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
cout << "整个数组占用内存空间为:" << sizeof(arr) << endl;
cout << "每个元素占用内存空间为:" << sizeof(arr[0]) << endl;
cout << "数组中元素的个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
//2. 可以获取数组在内存中的首地址
cout << "数组首地址为:" << (int)arr << endl;
cout << "数组中第一个元素地址为:" << (int)&arr[0] << endl;
数组逆置
所谓逆置就是首位数组元素交换
int start = 0;//起始元素下标
int end = sizeof(arr)/sizeof(arr[0]) - 1;//末尾元素下标
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
冒泡排序
我们按照之前的哪个思路,先转换一次
#include <iostream>
using namespace std;
int temp;
int main(void) {
int arr[] = { 4,2,8,0,5,7,1,3,9 };
if (arr[0] > arr[1]) {
temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
for (int i = 0; i < 8; i++) {
cout << arr[i] << endl;
}
}
发现交换成功
#include <iostream>
using namespace std;
int temp;
int main(void) {
int arr[] = { 4,2,8,0,5,7,1,3,9 };
//冒泡排序
for (int i = 0; i < 9 - 1; i++) {
for (int j = 0; j < 9 - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//显示
for (int i = 0; i < 9; i++) {
cout << arr[i] << endl;
}
}
二维数组
二维数组定义的四种方式:
数组类型 数组名[行数][列数];
数组类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}};
数组类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};
数组类型 数组名[][列数] = {数据1,数据2,数据3,数据4};
int arr[2][3] = {
{1,2,3},
{4,5,6}
};
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
cout << arr[i][j] << " ";
}
cout<<endl;
}
数组名称
- 查看二位数组所占有的内存空间
- 获取二位数组的收地址
int arr[2][3] = {
{1,2,3},
{4,5,6}
};
//查看二位数组所占有的内存空间
cout << "二维数组占用的内存空间为:" << sizeof(arr) << endl;
cout << "二维数组第一行占用的内存空间为:" << sizeof(arr[0]) << endl;
cout << "二维数组第一个元素占用的内存空间为:" << sizeof(arr[0][0]) << endl;
cout << "二维数组行数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数为:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
//获取二位数组的收地址
cout << "二维数组首地址为: " << (int)arr << endl;
cout << "二维数组第一行首地址为: " << (int)arr[0] << endl;