- 一,C++初识
- 二,数据类型
- 三,运算符
- 四,程序流程结构
- 五,数组
- 六,函数
- 七,指针
- 八,结构题
#define宏常量,在文件上方定义
#define 常量名 常量值
const修饰的变量,通常在变量定义前关键字const,修饰该变量为常量,不可修改
const 数据类型 常量名 = 常量值
C++关键字
asm,auto,bool,break,case,catch,char,class,const,const_cast,continue,default,delete
do,double,dynamic_cast,else,enum,explicit,export,extern,false,float,for,friend,goto
if,inline,int,long,mutable,namespace,new,operator,private,protected,public,register,reinterpret_case
return,short,signed,sizeof,static,static_cast,struct,switch,template,this,throw,true,try
typedef,typeid,typename,union,unsigned,using,virtual,void,volatile,wchar_t,while
标识符命名规则:
~标识符不能使关键字
~标识符只能由字母,数字,下划线组成
~标识符第一个字符只能是字母或下划线
~标识符区分大小写
//固定格式 #include二,数据类型using namespace std; int main() { system("pause"); return 0; }
语法:数据类型 变量名 = 变量初始值
数据类型存在的意义:给变量分配合适的内存
sizeof关键字:查看数据类型占用几个字节(占用字节数和运行空间不同有关)
整型
短整型short:2字节(15[-32768~32767])
整型int:4字节(31)
长整型long:linux系统下8字节(63)
长长整型long long:8字节(63)
实型(浮点数):小数默认是双精度,默认情况下输出一个小数,会显示出有效数字6位
单精度float:占用空间4字节,有效数字范围7位
双精度double:占用空间8字节,15-16位有效数字
tips:
float f1 = 53.1411111f;// 表示f接收 //科学计数法 float f2 = 3e2;//3*10^2 float f3 = 3e-2;//3*0.1^2
字符型:显示单个字符,占用1字节的内存
语法:char ch = ‘a’;
字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元
tips:
创建字符型变量的时候要用’’
创建字符型变量的时候’'中只能放1个字符
查看对应ASCII编码强转成int:cout << (int)变量名 << endl;
A-65,a-97
转义字符(常用)
换行符 n :cout << “hello worldn”;
反斜杠 :cout << “”; 输出:
水平制表符 t:cout << “hellotaaaan”; 输出:hello aaaa,空格的个数取决于前面字符多少,一共是8位.可以整齐的输出数据.
字符串型
//C风格字符串,注意:char 字符串名 [],等号后面要用双引号包含起来字符串
char str[] = "hello world"; cout << str << endl; //C++风格字符串,注意:用之前要加一个头文件#includestring str2 = "hello world"; cout << str2 < > a ; cout << "整型变量a=" << a << endl;
//2.浮点型
float f = 3.14f; cout << "请给浮点型变量f赋值:" << endl; cin >> f; cout << "浮点型变量f=" << f << endl;
//3.字符
char ch2 = 'a'; cout << "请给字符型变量ch赋值:" << endl; cin >> ch2; cout << "字符变量f=" << ch2 << endl;
//4.字符串型
string str1 = "helloworld";
cout << "请给字符串str1赋值:" << str1 << endl;
cin >> str1;
cout << "字符串str1=" << str1 << endl;
//5.布尔类型
bool flag = false;
cout << “请给布尔flag赋值:” << endl;
cin >> flag; //输入非零的值都代表真
cout << “布尔类型flag=” << flag << endl;
算数运算符:+, -, *, /, %, ++, –
赋值运算符: =, +=, -=, =, /=, %= (a ?= 2; 等同于 a = a ? 2; 注:?代替-,+,/,,%)
比较运算符: ==, !=, <, >, <=, >= (假0,真1)
逻辑运算符: !, &&, ||
循序结构:
选择结构:
单行格式:if(){}
多行格式:if(){}else{}
多条件的if语句:if(){}else if(){}…else{}
嵌套if语句:if(){if(){}}
选择结构案例:三只小猪称体重
三目运算符c = (a > b) ? a : b;
(a > b) ? a : b = c;
循环结构:
switch:
switch(表达式){
case 结果1 : 执行语句 ;
break;
case 结果2 : 执行语句 ;
break; //代表退出当前分支
......
default:执行语句; break;
}
eg:电影打分(见github)
while(循环条件){循环语句}
eg:打印0-9,猜数字:随机生成数字,猜错比大小,才对输出你猜对了
// 随机生成数 // 添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样 srand((unsigned int)time (NULL)); //要加time系统时间头文件 #includeint num = rand()%100 +1; // rand()%100 + 1 生成 0+ 1~99 + 1 随机数 // cout << num << endl; int val = 0; cout << "请输入你猜测是数字:" << endl; while(val != num){ cin >> val; if(val > num){ cout << "猜测过大" << endl; }else if(val < num){ cout << "猜测过小" << endl; }else{ cout << "恭喜你猜对了" << endl; } }
do {}while(条件)
eg:输出0-9这10个数字,水仙花数
//do …while 与while的区别在于do … while 会先执行一次
for(起始表达式;条件表达式;末尾循环体){循环语句;}
eg:输出0-9,100以内敲7
嵌套循环for(;{for(;{}}
eg:打印正方体星星,乘法口诀
for(int i = 0;i<=10;i++){
for(int j = 0;j<=10;j++){
cout << "* ";//不换行
}
cout << endl; //换行
}
跳转语句
break:出现在switch,出现在循环语句中,出现在嵌套语句中跳出循环
countinue:跳过本次循环尚未执行的语句,执行下一条语句
goto:无条件的跳转代码 语法:goto 标记;
cout << “1,XXX” << endl;
goto FLAG;
cout << “2,XXX” << endl;
cout << “3,XXX” << endl;
FLAG:
cout << “4,XXX” << endl;
输出: 1,XXX
2,XXX
特点:数组中的每个元素都是相同的数据类型,是有连续的内存位置组成的 三种定义方式:数据类型 数组名[数组长度]; 数据类型 数组名[数组长度] = {值1,值2....} 数据类型 数组名[] = {值1,值2...} 数组名的用途:可以统计整个数组在内存中的长度,可以获取数组在内存中的首地址 sizeof(arr[0])//a[0]的长度 siezeof(arr)//arr的长度 sizeof(arr)/sizeof(arr[0])//数组的个数 cout << (int)arr << endl; //查看首地址 cout << (int)&arr[0] << endl;//查看第一个元素的地址,注:强转int是否报错分编译器 cout << (int)&arr[1] << endl;//查看第二个元素的地址 eg:5只小猪的体重,元素逆置,冒泡排序
二维数组:定义的四种方式
数据类型 数组名[行数][列数];
数据类型 数组名[行数][列数] = { {数据1,数据2},{数据3,数据4}};//可读性最高
数据类型 数组名[行数][列数] = { 数据1,数据2,数据3,数据4};
数据类型 数组名[][列数] = { 数据1,数据2,数据3,数据4};
二维数组名称用途
//查看占用内存空间大小
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 << “二维数组首地址:” << arr << endl;
cout << “二维数组第一行首地址” << arr[0] << endl;
cout << “二维数组第二行首地址” << arr[1] << endl;
案例:考试成绩统计,输出同学的总成绩.
作用:将一段经常使用的代码封装起来,减少重复代码
定义:返回值类型,函数名,参数列表,函数体语句,return表达式
返回值类型 函数名 (参数列表){
函数体语句
return表达式
}
值传递,就是函数调用时实参将数值传入给形参
值传递,如果形参发生,并不会影响实参
函数样式4种
1.无参无返
2.有参无返
3.无参有返
4.有参有返
七,指针
八,结构题


