1、C +基础入门1 C+初识1.1 第一个C+程序编写一个C+程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1 创建项目Visual Studio是我们用来编写C+程序的主要工具,我们先将它打开1.1.2 创建文件右键源文件,选择添加-新建项给C+文件起个名称,然后点击添加即可。1.1.3 编写代码#include using namespace std;int main() cout Hello world endl;system(pause);return 0;1.1.4 运行程序1.2 注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式1. 单行注
2、释: / 描述信息通常放在一行代码的上方,或者一条语句的末尾,=对该行代码说明=/* 描述信息 */2. 多行注释:通常放在一段代码的上方,=对该段代码做整体说明= 提示:编译器在编译代码时,会忽略注释的内容1.3 变量作用:给一段指定的内存空间起名,方便操作这段内存语法: 数据类型 变量名 = 初始值;示例:#include using namespace std;int main() /变量的定义/语法:数据类型变量名 = 初始值int a = 10;cout a = a endl;system(pause);return 0;注意:C+在创建变量时,必须给变量一个初始值,否则会报错1.4
3、 常量作用:用于记录程序中不可更改的数据C+定义常量两种方式#define 常量名 常量值1. #define 宏常量:=通常在文件上方定义=,表示一个常量const 数据类型 常量名 = 常量值2. const修饰的变量=通常在变量定义前加关键字const=,修饰该变量为常量,不可修改示例:/1、宏常量#define day 7int main() cout 一周里总共有 day 天 endl;/day = 8;/报错,宏常量不可以修改/2、const修饰变量const int month = 12;cout 一年里总共有 month 个月份 endl;/month = 24; /报错,常量
4、是不可以修改的system(pause);return 0;1.5 关键字作用:关键字是C+中预先保留的单词(标识符) 在定义变量或者常量时候,不要用关键字C+关键字如下:asmdoifreturntypedefautodoubleinlineshorttypeidbooldynamic_castintsignedtypenamebreakelselongsizeofunioncaseenummutablestaticunsignedcatchexplicitnamespacestatic_castusingcharexportnewstructvirtualclassexternoperat
5、orswitchvoidconstfalseprivatetemplatevolatileconst_castfloatprotectedthiswchar_tcontinueforpublicthrowwhiledefaultfriendregistertruedeletegotoreinterpret_casttry提示:在给变量或者常量起名称时候,不要用C+得关键字,否则会产生歧义。1.6 标识符命名规则作用:C+规定给标识符(变量、常量)命名时,有一套自己的规则标识符不能是关键字标识符只能由字母、数字、下划线组成第一个字符必须为字母或下划线标识符中字母区分大小写建议:给标识符命名时,争
6、取做到见名知意的效果,方便自己和他人的阅读2 数据类型C+规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存2.1 整型作用:整型变量表示的是=整数类型=的数据C+中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:数据类型占用空间取值范围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)2.2 sizeof关键字sizeof( 数据
7、类型 / 变量)作用:利用sizeof关键字可以=统计数据类型所占内存大小= 语法:示例:int main() cout short 类型所占内存空间为: sizeof(short) endl; cout int 类型所占内存空间为: sizeof(int) endl;cout long 类型所占内存空间为: sizeof(long) endl;cout long long 类型所占内存空间为: sizeof(long long) endl; system(pause);return 0;整型结论:=short int = long = long long=2.3 实型(浮点型)作用:用于=表
8、示小数=浮点型变量分为两种:1. 单精度float2. 双精度double两者的区别在于表示的有效数字范围不同。数据类型占用空间有效数字范围float4字节7位有效数字double8字节1516位有效数字示例:int main() float f1 = 3.14f; double d1 = 3.14;cout f1 endl; cout d1 endl;cout floatsizeof = sizeof(f1) endl; cout double sizeof = sizeof(d1) endl;/科学计数法float f2 = 3e2; / 3 * 10 2 cout f2 = f2 end
9、l;float f3 = 3e-2;/ 3 * 0.1 2 cout f3 = f3 endl;system(pause);return 0;2.4 字符型作用:字符型变量用于显示单个字符语法: char ch = a;注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号注意2:单引号内只能有一个字符,不可以是字符串C和C+中字符型变量只占用=1个字节=。字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元示例:int main() char ch = a; cout ch endl;cout sizeof(char) endl;/ch = abcde;
10、 /错误,不可以用双引号/ch = abcde; /错误,单引号内只能引用一个字符cout (int)ch endl;/查看字符a对应的ASCII码ch = 97; /可以直接用ASCII给字符型变量赋值cout ch endl;system(pause);return 0;ASCII码表格:ASCII值控制字符ASCII值字符ASCII值字符ASCII值字符0NUT32(space)6496、1SOH33!65A97a2STX3466B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL39,71G103g8BS40(7
11、2H104h9HT41)73I105i10LF42*74J106j11VT43+75K107k12FF44,76L108l13CR45-77M109m14SO46.78N110n15SI47/79O111o16DLE48080P112p17DCI49181Q113q18DC250282R114r19DC351383S115s20DC452484T116t21NAK53585U117u22SYN54686V118v23TB55787W119w24CAN56888X120x25EM57989Y121y26SUB58:90Z122z27ESC59;9112328FS609412631US63?95_
12、127DELASCII 码大致由以下两部分组成:ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。2.5 转义字符作用:用于表示一些=不能显示出来的ASCII字符=现阶段我们常用的转义字符有: nt转义字符含义ASCII码值(十进制)a警报007b退格(BS) ,将当前位置移到前一列008f换页(FF),将当前位置移到下页开头012n换行(LF) ,将当前位置移到下一行开头010r回车(CR) ,将当前位置移到本行开头013t水平制
13、表(HT) (跳到下一个TAB位置)009v垂直制表(VT)011代表一个反斜线字符092代表一个单引号(撇号)字符039代表一个双引号字符034?代表一个问号0630数字0000ddd8进制转义字符,d范围073位8进制xhh16进制转义字符,h范围09,af,AF3位16进制示例:int main() cout endl;cout tHello endl; cout n endl;system(pause);return 0;2.6 字符串型作用:用于表示一串字符两种风格char 变量名 = 字符串值1. C风格字符串: 示例:int main() char str1 = hello wo
14、rld; cout str1 endl;system(pause);return 0;注意:C风格的字符串要用双引号括起来string变量名 = 字符串值1. C+风格字符串: 示例:int main() string str = hello world; cout str endl;system(pause);return 0;注意:C+风格字符串,需要加入头文件=#include=2.7 布尔类型 bool作用:布尔数据类型代表真或假的值bool类型只有两个值:true - 真(本质是1)false - 假(本质是0)bool类型占=1个字节=大小示例:int main() bool fl
15、ag = true;cout flag endl; / 1flag = false;cout flag endl; / 0cout size of bool = sizeof(bool) 变量语法:示例:int main()/整型输入int a = 0;cout 请输入整型变量: a;cout a endl;/浮点型输入double d = 0;cout 请输入浮点型变量: d;cout d endl;/字符型输入char ch = 0;cout 请输入字符型变量: ch;cout ch endl;/字符串型输入string str;cout 请输入字符串型变量: str;cout str e
16、ndl;/布尔类型输入bool flag = true;cout 请输入布尔型变量: flag;cout flag endl; system(pause); return EXIT_SUCCESS;3 运算符作用:用于执行代码的运算本章我们主要讲解以下几类运算符:运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值3.1 算术运算符作用:用于处理四则运算算术运算符包括以下符号:运算符术语示例结果+正号+33-负号-3-3+加10 + 515-减10 - 55*乘10 * 550/除1
17、0 / 52%取模(取余)10 % 31+前置递增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;示例1:/加减乘除 int main() int a1 = 10; int b1 = 3;cout a1 + b1 endl; cout a1 - b1 endl; cout a1 * b1 endl;cout a1 / b1 endl; /两个整数相除结果依然是整数int a2 = 10; int b2 = 20;cout a2 / b2 endl;int a3
18、= 10; int b3 = 0;/cout a3 / b3 endl; /报错,除数不可以为0/两个小数可以相除double d1 = 0.5; double d2 = 0.25;cout d1 / d2 endl;system(pause);return 0;总结:在除法运算中,除数不能为0示例2:/取模int main() int a1 = 10; int b1 = 3;cout 10 % 3 endl;int a2 = 10; int b2 = 20;cout a2 % b2 endl;int a3 = 10; int b3 = 0;/cout a3 % b3 endl; /取模运算时
19、,除数也不能为0/两个小数不可以取模double d1 = 3.14; double d2 = 1.1;/cout d1 % d2 endl;system(pause);return 0;总结:只有整型变量可以进行取模运算示例3:/递增int main() /后置递增int a = 10;a+; /等价于a = a + 1 cout a endl; / 11/前置递增int b = 10;+b;cout b endl; / 11/区别/前置递增先对变量进行+,再计算表达式int a2 = 10;int b2 = +a2 * 10; cout b2 endl;/后置递增先计算表达式,后对变量进行
20、+ int a3 = 10;int b3 = a3+ * 10; cout b3 endl;system(pause);return 0;总结:前置递增先对变量进行+,再计算表达式,后置递增相反3.2 赋值运算符作用:用于将表达式的值赋给变量赋值运算符包括以下几个符号:运算符术语示例结果=赋值a=2; b=3;a=2; b=3;+=加等于a=0; a+=2;a=2;-=减等于a=5; a-=3;a=2;*=乘等于a=2; a*=2;a=4;/=除等于a=4; a/=2;a=2;%=模等于a=3; a%2;a=1;示例:int main() /赋值运算符/ =int a = 10; a = 10
21、0;cout a = a endl;/ += a = 10;a += 2; / a = a + 2;cout a = a endl;/ -= a = 10;a -= 2; / a = a - 2cout a = a endl;/ *= a = 10;a *= 2; / a = a * 2cout a = a endl;/ /= a = 10;a /= 2;/ a = a / 2;cout a = a endl;/ %= a = 10;a %= 2;/ a = a % 2;cout a = a endl;system(pause);return 0;3.3 比较运算符作用:用于表达式的比较,并返
22、回一个真值或假值比较运算符有以下符号:运算符术语示例结果=相等于4 = 30!=不等于4 != 31小于4 大于4 31=小于等于4 =大于等于4 = 11int main() int a = 10; int b = 20;cout (a = b) endl; / 0cout (a != b) endl; / 1system(pause);return 0;示例:cout b) endl; / 0cout(a b) endl; / 1cout= b) endl; / 0cout(a= b) endl; / 1注意:C和C+ 语言的比较运算中, =“真”用数字“1”来表示, “假”用数字“0”来
23、表示。=3.4 逻辑运算符作用:用于根据表达式的值返回真值或假值逻辑运算符有以下符号:运算符术语示例结果!非!a如果a为假,则!a为真; 如果a为真,则!a为假。&与a & b如果a和b都为真,则结果为真,否则为假。|或a | b如果a和b有一个为真,则结果为真,二者都为假时,结果为假。示例1:逻辑非/逻辑运算符- 非int main() int a = 10;cout !a endl; / 0cout !a endl; / 1system(pause);return 0;总结: 真变假,假变真/逻辑运算符- 与int main() 示例2:逻辑与int a = int b =10;10;co
24、ut (a & b) endl;/1a = 10;b = 0;cout (a & b) endl;/0a = 0;b = 0;cout (a & b) endl;/ 0system(pause);return 0;总结:逻辑=与=运算符总结: =同真为真,其余为假=示例3:逻辑或/逻辑运算符- 或int main() int a = 10; int b = 10;cout (a | b) endl;/ 1a = 10;b = 0;cout (a | b) endl;/ 1a = 0;b = 0;cout (a | b) endl;/ 0system(pause);return 0;逻辑=或=运
25、算符总结: =同假为假,其余为真=4 程序流程结构C/C+支持最基本的三种程序运行结构:=顺序结构、选择结构、循环结构=顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码4.1 选择结构4.1.1 if语句作用:执行满足条件的语句if语句的三种形式单行格式if语句多行格式if语句多条件的if语句1. 单行格式if语句: if(条件) 条件满足执行的语句 示例:int main() /选择结构-单行if语句/输入一个分数,如果分数大于600分,视为考上一本大学,并在屏幕上打印int score = 0;cout 请
26、输入一个分数: score;cout 您输入的分数为: score 600)cout 我考上了一本大学! endl;system(pause);return 0;注意:if条件表达式后不要加分号2. 多行格式if语句: if(条件) 条件满足执行的语句 else 条件不满足执行的语句 ;示例:int main() int score = 0;cout 请输入考试分数: score;if (score 600)cout 我考上了一本大学 endl;elsecout 我未考上一本大学 endl;system(pause);return 0;else 都不满足执行的语句3. 多条件的if语句: if
27、(条件1) 条件1满足执行的语句 else if(条件2)条件2满足执行的语句.示例:int main() int score = 0;cout 请输入考试分数: score;if (score 600)cout 我考上了一本大学 500)cout 我考上了二本大学 400)cout 我考上了三本大学 endl;elsecout 我未考上本科 endl;system(pause);return 0;嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断案例需求:提示用户输入一个高考考试分数,根据分数做如下判断分数如果大于600分视为考上一本,大于500分考上二本,大于400考上
28、三本,其余视为未考上本 科;在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大。示例:int main() int score = 0;cout 请输入考试分数: score;if (score 600)cout 我考上了一本大学 700)cout 我考上了北大 650)cout 我考上了清华 endl;elsecout 我考上了人大 500)cout 我考上了二本大学 400)cout 我考上了三本大学 endl;elsecout 我未考上本科 b ? a : b;cout c = c b ? a : b) = 100;cout a = a endl; co
29、ut b = b endl; cout c = c endl;system(pause);return 0;如果表达式1的值为真,执行表达式2,并返回表达式2的结果; 如果表达式1的值为假,执行表达式3,并返回表达式3的结果。示例:总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰4.1.3 switch语句switch(表达式)case 结果1:执行语句;break; case 结果2:执行语句;break;.default:执行语句;break;作用:执行多条件分支语句语法:int main() /请给电影评分int score = 0;cout 请给电影打分 s
30、core;switch (score)case 10:case 9:cout 经典 endl; break;case 8:cout 非常好 endl; break;case 7:case 6:cout 一般 endl; break;default:cout 烂片 endl; break;system(pause);return 0;示例:/109经典/87非常好/65一般/5分以下烂片注意1:switch语句中表达式类型只能是整型或者字符型 注意2:case里如果没有break,那么程序会一直向下执行总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不
31、可以判 断区间4.2 循环结构4.2.1 while循环语句作用:满足循环条件,执行循环语句语法: while(循环条件) 循环语句 解释:=只要循环条件的结果为真,就执行循环语句=示例:int main() int num = 0; while (num 10)cout num = num endl; num+;system(pause);return 0;注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环while循环练习案例:=猜数字=案例描述:系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过 小,如果猜对恭喜玩家胜利,并且退出游戏。4
32、.2.2 do.while循环语句作用: 满足循环条件,执行循环语句do 循环语句 while(循环条件);语法:注意:与while的区别在于=do.while会先执行一次循环语句=,再判断循环条件示例:int main() int num = 0;docout num endl; num+; while (num 10);system(pause);return 0;总结:与while循环区别在于,do.while先执行一次循环语句,再判断循环条件练习案例:水仙花数案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身例如:13 + 53+ 33 = 153请利用do.while语句,求出所有3位数中的水仙花数4.2.3 for循环语句作用: 满足循环条件,执行循环语句语法: for(起始表达式;条件表达式;末尾循环体) 循环语句; 示例:int main()