持续更新中…
文章目录
日期:2022.7.5
1前言
本人是23届考研考生,考研要求C/C++版数据结构,但是本科期间没有学习过C++,以此记录自学C++过程。本科学大数据,学过Java、Python、R、HTML、Spark等编程语言,具有一定的编程基础,因此本文只记录了学习C++过程中接触的新知识以及学习笔记。
2使用的编译器
使用Visual Studio 2019 Community版。
3C++初识
实现第一个C++程序“Hello C++”
创建文件:
- 创建新项目,选择空项目
- 右击源文件,添加,新建项
C++程序必要的6行代码
代码要求与Java一致:要求每句以分号结束。
#include<iostream>
using namespace std;
/* main函数是程序的入口
每个程序有且仅有一个main函数*/
int main(){
cout << "Hello C++!" << endl;
system("pause");
return 0;
}
注意:endl(“l”是小写字母,不是数字1)
变量
创建与python一致
数据类型 变量名=变量初始值
int a=10;
日期:2022.7.8
常量
常量一经设置,不可以修改。
- #define 宏常量:
#define 常量名 常量值
(一般写在文件上方)不需要分号!!!
#include <iostream>
using namespace std;
//宏常量 定义在文件上方
#define day 7 //不需要分号!!
int main(){
cout << "一周有" << day << "天" << endl;
system("pause");
return 0;
}
- const修饰的变量:
const 数据类型 常量=常量值
#include <iostream>
using namespace std;
int main(){
//const修饰的变量
const int month = 12;
cout << "一年有" << month << "个月" << endl;
system("pause");
return 0;
}
关键字、标识符
关键字
与其他编程语言一致:不能用关键字命名
C++里的关键字具体可以看下面这篇文章
标识符的命名规则
- 不可以是关键字
- 字母、数字、下划线组成
- 第一个字符必须是字母或者下划线,不能数字
- 字母区分大小写
给变量起名时,最好可以见名之意~(可以代表变量的意义)
int num1 = 5;
int num2 = 10;
int sum = num1 + num2;
cout << sum << endl;
日期:2022.7.10
4数据类型
整型
必须指定数据类型,达到给变量分配合适的内存空间,不然无法分配内存
short < int <= long <= long long
整型 | 占用空间 | 取值范围 |
---|---|---|
短整型short | 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关键字
//sizeof(数据类型 或者变量)
short num1 = 10;
cout << "short占用的内存空间为" << sizeof(short) << endl;
cout << "short占用的内存空间为" << sizeof(num1) << endl;
实型(浮点型)
- 单精度float
- 双精度double
默认情况下,输出一个小数,会显示6位有效数字
类型 | 占用空间 | 有效数字范围 |
---|---|---|
float | 4字节 | 7位 |
double | 8字节 | 15~16位 |
//单精度,占4四节
float f1 = 3.14f;
cout << "f1=" << f1 << endl;
cout << "float占用的内存空间为" << sizeof(f1) << endl;
//双精度,占8字节
double d1 = 3.14;
cout << "double占用的内存空间为" << sizeof(d1) << endl;
//科学计数法
float f2 = 3e2;//3*10^2
float f3 = 3e-2;//3*0.1^2
cout << "f2=" << f2 << endl;
cout << "f3=" << f3 << endl;
字符型
char 变量名 = ‘字符’;
- 单引号引住 ,不能双引号
- 只能有一个字符
- C、C++中字符型变量中只占用1个字节
- 字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
//字符型
char ch = 'a';
cout << ch << endl;
cout << "char占用的内存空间为" << sizeof(char) << endl;
//字符型变量对应的ASCII编码
//强转为int
cout << "a对应的ASCII编码为" << (int)ch << endl;
记住: a–97 ; A–65
转义字符
现阶段常用的转义字符:
- \n — 换行(LF)—010
- \t — 水平制表(HT)(跳到下一个TAB位置)—009
- \ — 代表一个反斜线–092
//转义字符
//换行符\n
cout << "hello c++ \n" ;
//反斜线\\
cout << "\\" << endl;
cout << "\\\n" ;
//水平制表符\t
cout << "aaa\thello c++" << endl;
//aaa后多出的空格有多长,取决于aaa所占的字符;\t总共占8个位置;
//aaa占3个字符==>空格就占5个字符
//aaaaa占5个字符==>空格就占3个字符
//可以整齐的输出 \t 后面的内容
cout << "aaa\thello c++" << endl;
cout << "a\thello c++" << endl;
cout << "aaaaa\thello c++" << endl;
字符串型
表示一串字符
C风格字符串
char 变量名[] = “字符串值”
//C风格字符串
//必须是中括号;用双引号引内容
char str[] = "hello c++";
cout << str << endl;
- 双引号引住
- 里面是字符串
C++风格字符串
string 变量名 = “字符串值”
//C++风格字符串
//如果报错,可以在首行添加一个头文件 #include <string>
//vs2019之后不需要加string头文件
string str2 = "hello c++";
cout << str2 << endl;
布尔类型
占1个字节大小
true(1);false(0)
//布尔类型
bool flag = true; //输出是1
cout << flag << endl;
flag = false;
cout << flag << endl;//输出是0
cout << "bool所占的内存空间是" << sizeof(bool) << endl;
数据的输入
从键盘上获取数据
cin >> 变量
//变量输入
//整型
int a = 0;
cout << "请给整型变量a进行赋值:" << endl;
cin >> a;
cout << "a=" << a << endl;
//浮点型
float f =3.14f;
cout << "请给浮点型变量f进行赋值:" << endl;
cin >> f;
cout << "f=" << f << endl;
//字符型
char ch = 'a';
cout << "请给字符型变量ch进行赋值:" << endl;
cin >>ch;
cout << "ch=" << ch << endl;
//字符串
string str = "hello";
cout << "请给字符串型变量str进行赋值:" << endl;
cin >> str;
cout << "str=" << str << endl;
//布尔类型
bool flag = true;
cout << "请给布尔型变量flag进行赋值:" << endl;
cin >> flag; //输入数字,只要是非0的值都代表的是 真true
cout << "flag1=" << flag << endl;
2022.7.11
5运算符
算术运算符
注意除法(/):两个整数相除,结果仍是整数(取整);
除数不可以是0
#include<iostream>
using namespace std;
int main() {
int a = 10;
int b = 20;
cout << a / b << endl; //输出是0
system("pause");
return 0;
}
两个小数可以相除,运算结果可以是小数
double d1 = 0.5;
double d2 = 0.22;
cout << d1 / d2 << endl;//输出是2.27273
本质是取余数;
两个数相除,除数不可以是0,也无法做取余运算;
两个小数之间不可以做取余运算(只有整型可以取余)
int a1 = 10;
int b1 = 3;
cout << a1 % b1 << endl;//输出是1
int a2 = 10;
int b2 = 20;
cout << a2 % b2 << endl;//输出是10
前置递增递减
先让变量加减1,然后进行表达式运算
后置递增递减
先进行表达式运算,再让变量加减1
口诀:加在前,先加;加在后,后加
//前置
int a2 = 10;
int b2 = ++a2 * 10;
cout << "a2=" << a2 << endl; //a2=11
cout << "b2=" << b2 << endl; //b2=110
//后置
int a3 = 10;
int b3 = a3++ * 10;
cout << "a3=" << a3 << endl; //a3=11
cout << "b3=" << b3 << endl; //b3=100
赋值运算符
(±*/%)=
//+=
a = 10;
a += 2; //a=a+2;
cout << "a=" << a << endl; //a=12
//-=
a = 10;
a -= 2; //a=a-2
cout << "a=" << a << endl; //b=8
//%=
a = 10;
a %= 2; //a=a%2
cout << "a=" << a << endl; //a=0
比较运算符
- ==
- !=
- >
- <
- >=
- <=
返回的是 真假(0或1)
逻辑运算符
- 非( ! )—取反操作
- 与(&&)—a&&b (条件全为真,结果才是真)
- 或( || )—a||b (a或者b是真,就是真)
// !与
int a = 10;// 在C++中,非0都是真
cout << !a << endl;//输出是0
cout << !!a << endl;//输出是1
//&&和
// “同真为真,其余为假”
int b = 10;
cout << (a && b) << endl;//输出是1
int c = 0;
cout << (c && b) << endl;//输出是0
int d = 0;
cout << (c && d) << endl;//输出是0
// ||或
// “同假为假,其余为真”
int a = 10;
int b = 10;
cout << (a || b) << endl;//结果是1
int c = 0;
cout << (a || c) << endl;//结果是1
int d = 0;
cout << (c || d) << endl;//结果是0
2022.7.12
6程序流程结构
- 顺序结构
- 选择结构
- 循环结构
顺序结构
平常我们写的代码都是顺序结构的,不发生跳转
选择结构
if语句
- 单行if
if(条件){条件满足执行的语句}
条件后不需要加分号!!!否则后面都会执行
- 多行if
if(条件){条件满足执行的语句}else{条件不满足执行的语句}
- 多条件
if(条件1){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}…else{不满足执行的语句}
#include<iostream>
using namespace std;
int main() {
int a = 0;
int b = 0;
cout << "请给a赋值" << endl;
cin >> a;
cout << "请给b赋值" << endl;
cin >> b;
cout << "两个数中较大的数是";
if (a > b) {
cout << a << endl;
}
else if (a == b) {
cout << "两个数相等,且为" << a << endl;
}
else {
cout << b << endl;
}
system("pause");
return 0;
}
- 嵌套if
#include<iostream>
using namespace std;
int main() {
int a = 0;
int b = 0;
cout << "请给a赋值" << endl;
cin >> a;
cout << "请给b赋值" << endl;
cin >> b;
if (a > b) {
if (a % 2 == 0) {
cout << "a是大于b的偶数,且a为" << a;
}
else if (a % 2 == 1) {
cout << "a是大于b的奇数,且a为" << a;
}
}
else if (a == b) {
if (a % 2 == 0) {
cout << "a与b相等,且为偶数" << a;
}
if (a % 2 == 1) {
cout << "a与b相等,且为奇数" << a;
}
}
else {
if (b % 2 == 0) {
cout << "b是大于a的偶数,且b为" << b;
}
else if (b % 2 == 1) {
cout << "b是大于a的奇数,且b为" << b;
}
}
system("pause");
return 0;
}
2022.7.19
三目运算符
实现简单的判断
表达式1 ?表达式2 :表达式3
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
否则执行表达式3,并返回表达式3的结果
#include<iostream>
using namespace std;
int main() {
int a = 15;
int b = 20;
int c = 0;
//a和b比较,将大的赋值给c
c = ( a > b ? a : b );
cout << "c=" << c << endl;
system("pause");
return 0;
}
在C++中 三目运算符返回的是变量,可以继续赋值
( a > b ? a : b )=100
(a > b ? a : b) = 100;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
选择结构
switch语句
持续更新中…