学习目标:
9/07 9/08复习C++基础
学习内容:
C++基础
1、-变量 常量 关键字 标识符
2、-数据类型
3、-运算符
4、-程序流程结构
5、-数组
6、-函数
7、-指针
8、-结构体
9、-基础案例 通讯录管理系统
学习时间:
2020 9/7,9/8,9/9.
学习产出:
技术笔记&CSDN 博客 1 篇
START
文章目录
1、变量 常量 关键字 标识符
变量 :方便内存管理
常量 : 不可修改的变量
#define修饰 宏常量
const修饰
#include<iostream>
using namespace std;
//宏常量#define以及const修饰的变量(修饰后变量不可被修改)
#define days01 7
int main(){
//days = 8;(错误,宏常量不可被修改)
int days02 = 8;
cout<<"days02="<<days02<<endl;
const int days03 = 9;
cout<<"days02="<<days02<<endl;
//days03 = 19;(错误,const修饰不可被修改)
system("pause");
return 0;
}
关键字 &标识符 :c++预先保留的单词
字母、数字以及下划线组成
不能以数字开头
标识符不能是关键字
区分大小写
————————————————————
2、数据类型
c++中创建变量常量时必须声明其数据类型,否则无法分配内存
数据类型意义:给变量分配合理的内存空间
数据类型 | 占用空间 | 取值范围 |
---|---|---|
bool | 1 | -2^7 ~2 ^7-1 |
char | 1 | -2^7 ~2 ^7-1 |
short (短整型) | 2 | -2^15 ~2 ^15-1 |
int(整型) | 4 | -2^31 ~2 ^31-1 |
long (长整型) | windows为4字节,Linux(32位)为4字节,64位为8字节 | -2^31 ~2 ^31-1 |
long long (长长整型) | 8 | -2^63 ~2 ^63-1 |
float | 4 | -2^31 ~2 ^31-1 |
double | 8 | -2^63 ~2 ^63-1 |
sizeof关键字 :统计数据类型占用内存大小
//size of用法
//short < int <= long <= long long
cout<<"short占用的内存空间为:"<<sizeof(short);
#include<iostream>
using namespace std;
int main(){
short a = 1;//-2^15 -2^15-1
int b = 2;//-2^31 -2^31-1
long c = 3;//-2^31 -2^31-1
long long d = 4;//-2^32 -2^32-1
cout<<"short占用内存空间为"<<sizeof(short)<<endl;//2
cout<<"int占用内存空间为"<<sizeof(int)<<endl;//4
cout<<"long占用内存空间为"<<sizeof(long)<<endl;//4
cout<<"long long占用内存空间为"<<sizeof(long long)<<endl;//8
//输出时自动精确到小数点后5位
float e = 5.55555555555f;//有效七位
cout<< e <<"float占用内存空间为"<<sizeof(float)<<endl;//4
double f = 6.66666666;//有效15~16位
cout<< f <<"float占用内存空间为"<<sizeof(double)<<endl;//8
system("pause");
return 0;
}
字符变量 :并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
char ch = 'a';
//占用1字节
cout<<"ch占用的内存空间为:"<<sizeof(ch);
//a--97,A--65
cout<<"其对应的ASCII数值为"<<(int)ch<<endl;
转义字符
转义字符 | 含义 | ASCII码值 |
---|---|---|
\a 警报 | 007 | |
\b 退格 | 008 | |
\n | 换行 | 010 |
\r | 回车 | 010 |
\t | 制表符 | 009 |
\ | 反斜线 | 092 |
\t 水平制表符 所占的位置为8-已用位置
cout<<"aa\thello"<<endl;
cout<<"aaaa\thello"<<endl;
cout<<"aaaaaa\thello"<<endl;
字符串型:用来表示一串字符
注意:使用string时需要添加头文件
#include< string>
//C语言风格
char str[] = "helloworld";
cout<<str<<endl;
//C++风格
string str2 = "helloworld";
#include<iostream>
#include<string>
using namespace std;
int main(){
char ch1 = 'a';
char ch2 = 'A';
char ch3 = '0';
char ch4 = '5488';
//char ch5 = "1"; 必须为单引号
//char ch6 = 'hdhsjcn';创建字符型变量,单引号内必须只有一个字符
char ch5[] = "abcfefg";//C语言的写法
string ch6 = "abcdefg";//C艹的新写法,需要引用<string>头文件
cout<<"字符型占用"<<sizeof(char)<<"字节"<<endl;
cout<<"字符型占用"<<sizeof(char)<<"字节"<<endl;
cout<<ch4<<endl;//8,只显示最后一位
cout<<ch5<<endl;//abcdefg
cout<<ch6<<endl;//abcdefg
//ASCII表中
cout<<"a对应的ASCII码为"<<int(ch1)<<endl;//97
cout<<"A对应的ASCII码为"<<int(ch2)<<endl;//65
cout<<"0对应的ASCII码为"<<int(ch3)<<endl;//48
cout<<"NULL对应的ASCII码为"<<int(NULL)<<endl;//0
//转义字符 \a警报 \n换行 \t制表符 \\ 表示\。
//错误号的第二笔,叫反斜杠
cout<<"\a"<<endl;
cout<<"wahaha\n";
cout<<"aa\tbbb"<<endl;
cout<<"aaa\tbbb"<<endl;
cout<<"aaaaaaaa\tbbb"<<endl;//8个+制表符,后面跟8个
cout<<"aaaaaaaaa\tbbb"<<endl;//9个+制表符,后面跟7个
system("pause");
return 0;
}
数据的输入与输出
cin>>
cout<<
cout<<flag<<endl;//1 (真)
flag = false;
cout<<flag<<endl;//0 (假)
cout<<"布尔类型所占内存空间为:"<<sizeof(bool)<<"字节"<<endl;//1
int a = 0;
cout<<"请输入整型变量:"<<a<<endl;
cin>>a;
cout<<"a = "<<a<<endl;
float b = 0.0f;
cout<<"请输入浮点型变量:"<<b<<endl;
cin>>b;
cout<<"b = "<<b<<endl;
char c = ' ';
cout<<"请输入字符型变量:"<<c<<endl;
cin>>c;
cout<<"c = "<<c<<endl;
string d = "";
cout<<"请输入字符串型变量:"<<d<<endl;
cin>>d;
cout<<"d = "<<d<<endl;
bool flag = true;
cout<<"请输入布尔型变量:"<<flag<<endl;
cin>>flag;
cout<<"flag = "<<flag<<endl;//只要不是0,都代表1(真)
system("pause");
return 0;
}
3、运算符
运算符类型 | 作用 |
---|---|
算数运算符 | 用于进行四则运算 |
赋值运算符 | 将表达式值赋值给变量 |
比较运算符 | 用于表达式的比较,返回一个真值或假值 |
逻辑运算符 | 根据表达式的值返回真值或假值 |
3.1算数运算符
算数运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | ||
- | 负号 | ||
+ | 加 | ||
- | 减 | ||
* | 乘 | ||
/ | 除 | 10/5 | 2 |
% | 取模(取余) | 10%3 | 1 |
++x | 前置递增 | a=2,b=++a | a=3,b=3 |
- -x | 前置递减 | a=2,b=- -a | a=1,b=1 |
x++ | 后置递增 | a=2,b=a++ | a=3,b=2 |
x- - | 后置递减 | a=2,b=a- - | a=1,b=2 |
注意点1、两个整数相处,结果依然是整数,去除掉小数部分
int a = 10,b = 20;
//输出为0
cout<<a/b<<endl;
//输出为2
double a1 = 0.5,b1 = 0.25;
cout<<a/b<<endl;
//输出为2.27273
double a1 = 0.5,b1 = 0.22;
cout<<a/b<<endl;
注意点2、c++中不允许两个小数作取模运算
3.2赋值运算符
赋值运算符(内容略。。。easy)
赋值运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | |||
+= | |||
-+ | |||
*= | |||
/= | |||
%= |
3.3比较运算符
比较运算符(内容略。。。easy)
注意一点,比较运算符返回的是一个真值或假值就行
比较运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | |||
!= | |||
> | |||
< | |||
>= | |||
<= |
3.4逻辑运算符
逻辑运算符(这个需要牢记,黄阿牛本人老忘)
逻辑运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
&& | 与 | a,b都为真 则结果为真 | |
II | 或 | a,b有一真,则结果为真 | |
! | 非 |
——————————————————
4、程序流程结构
最基本的三种程序运行结构:顺序,选择,循环
三只小猪比体重案例
#include<iostream>
using namespace std;
int main(){
int pig01 = 0;
int pig02 = 0;
int pig03 = 0;
cout<<"请输入第1只小猪的体重"<<endl;
cin>>pig01;
cout<<"请输入第2只小猪的体重"<<endl;
cin>>pig02;
cout<<"请输入第3只小猪的体重"<<endl;
cin>>pig03;
cout<<(pig01>pig02?(pig01>pig03?pig01:pig03):(pig02>pig03?pig02:pig03))<<endl;
(pig01>pig02?pig01:pig02) = 100;//C艹中,三目运算符返回的是变量,可以再进行赋值
cout<<pig01<<endl;
system("pause");
return 0;
}
注意:C艹中,三目运算符返回的是变量,可以再进行赋值
switch语句
#include<iostream>
using namespace std;
int main(){
int score = 0;
cout<<"请输入电影评分 10/7/4"<<endl;
cin>>score;
//switch结构清晰,执行效率高,缺点是不可以判断区间
switch(score){
//switch语句中的这个类型必须是整型或者字符型
case 10:
cout<<"高分"<<endl;
break;
case 7:
cout<<"中分"<<endl;
break;
case 4:
cout<<"低分"<<endl;
break;
default:
cout<<"未输入合法输入"<<endl;
}
system("pause");
return 0;
}
switch和if
一般switch执行效率会高于if,思路更清晰,结构有序
缺点是判断只能对 整型 或者 字符型,不可以是区间
循环结构之猜数字案例
#include<iostream>
using namespace std;
#include<ctime>
int main(){
srand((unsigned int)time(NULL));//添加随机数种子,利用当前时间生成随机数,防止每次随机数都一样
int num01 = (rand()%100 + 1);//系统随机生成1-100的数字(伪随机数)
int num02 = 0;//初始化num02
int times = 0;
cout<<"请输入猜测的数字\n"<<"您有8次机会"<<endl;
cin>>num02;//用户对num02赋值
//开始进行判断
while(times<8){
if(num02>num01){
cout<<"猜大了"<<endl;
cin>>num02;
times++;
}
else if(num02 < num01){
cout<<"猜小了"<<endl;
cin>>num02;
times++;
}
else{
cout<<"猜对了"<<endl;
break;
}
}
if(times<9){
cout<<"win"<<endl;
}else{
cout<<"lose"<<endl;
}
system("pause");
return 0;
}
注意:只用rand()%100,生成的是伪随机数(每次都一样)
可添加随机数种子,利用系统当前时间生成随机数。
#include<ctime>
srand((unsigned int)time(NULL));
循环结构之水仙花数案例
//水仙花数是指一个三位数,每个位上的三次幂之和等于该数
//求所有三位数中的水仙花数
#include<iostream>
using namespace std;
int main(){
int GeW = 0,ShiW = 0,BaiW = 0;
for(int i=100;i<1000;i++){
GeW = i % 10;
ShiW = i / 10 % 10;
BaiW = i / 10 / 10;
if(i == (GeW*GeW*GeW)+(ShiW*ShiW*ShiW)+(BaiW*BaiW*BaiW)){
cout<<i<<endl;
}
}
system("pause");
return 0;
}
循环结构之敲桌子案例
#include<iostream>
using namespace std;
//1-100的数字,是7的倍数,或者个位数是7,再或者十位数是7,打印敲桌子
int main(){
int a=0,b=