C++入门.docx
《C++入门.docx》由会员分享,可在线阅读,更多相关《C++入门.docx(55页珍藏版)》请在冰豆网上搜索。
![C++入门.docx](https://file1.bdocx.com/fileroot1/2022-11/26/c8c535f6-fefc-4084-ab17-dc00d1f30dd7/c8c535f6-fefc-4084-ab17-dc00d1f30dd71.gif)
C++入门
C/C++语言入门
黄锡波整理
黄锡波寄语:
C/C++永远都是老大的,开发底层的东西,嵌入式的东西都需要掌握C/C++最古老最顽强的语言,有些同学想做开发,但不想做网站Android之类的,可以努力一下C/C++,懂这个,基本就业能通行无阻哦。
大家想学这个,就算是毕业后也可找我,我在1992年在银行就开始做这个了,到2002年全世界才突然转向Java的(开发安全网站)。
第一课 导入
一、什么是C/C++语言:
C++语言是一种高级程序设计语言。
C++语言是20世纪80年代初期由贝尔实验室设计的一种在C语言基础上增加了对面向对象程序设计支持的语言,它是目前应用最为广泛的编程语言。
程序体验:
#include
usingnamespacestd;
intmain()
{
printf(“hello!
”);
system("pause");
return0;
}
例一:
已知长方形的长、宽,求长方形的周长、面积
#include
usingnamespacestd;
intmain()
{inta,b,L,S;
scanf("%d%d",&a,&b);
L=2*(a+b);
S=a*b;
printf("L=%d,S=%d",L,S);
scanf("\n");
return0;
}
二、程序设计的要素:
1、分析题目中的已知和求解的信息,以变量的形式定义下来。
(例题中已知长和宽,求周长和面积。
a,b,l,s分别为长、宽、周长、面积)
2、如何求解―算法。
三、
一个程序:
头文件
Intmain()
{变量说明部分;
执行部分;
scanf(“\n”);
return0;
}
执行部分主要分为:
输入、处理、输出
C++程序的组成
#include//标准输入输出库文件
usingnamespacestd;//使用std命名空间
intmain()
{inta,b,L,S;//定义变量
scanf("%d%d",&a,&b);//输入
//处理
L=2*(a+b);
S=a*b;
printf("L=%d,S=%d",L,S);//输出
scanf("\n");//查看结果
return0;
}
四、
C++程序设计的界面及主要命令
五、环境
1、菜单――激活菜单命令F10
2、编辑区----书写程序的地方,写完后按Ctrl+S保存文件
六、常用操作
书写程序时注意:
1、保持缩进
2、{}要成对出现
3、除了头文件,intmain()外
每句程序后面都要加;
1、新建\源代码。
2、编译并运行F93、编译――Ctrl+F94、运行------Ctrl+F10
练习
1、启动DevC++。
2、输入以上例1的程序
3、文件保存,编译,运行,看结果
第二课 简单程序的书写
一、分析例题2.1
例二:
已知正方形的边长,求正方形的周长、面积
#include//标准输入输出库文件
usingnamespacestd;//使用std命名空间
intmain()
{
inta,L,S;
scanf("%d",&a);
L=4*a;
S=a*a;
printf("L=%d,S=%d",L,S);
scanf("\n");
return0;
}
Int 数据类型中的整数类型。
scanf输入语句= 赋值语句printf输出语句
二、变量声明部分
格式:
类型名变量名1,变量名2,…,变量名n;
例如:
inta;(单个变量说明)
floatL,S;(多个相同变量同时定义,变量名之间用逗号隔开)
变量名:
由字母、数字、下划线组成的。
以字符或者下划线开头。
区分大小写。
不能与保留字同名。
常见的保留字:
int,float,char,string,bool,unsigned,
if,else,do,while,char,break
(c语言中保留字、标准库函数名都只用小写字母表示)
三、基本数据类型:
类型
说明
字节
取值范围
[signed]char
字符型
1
-128~127
unsignedchar
无符号字符型
1
0~255
[signed]short
短整型
2
-32768~32767
unsignedshort
无符号短整型
2
0~65536
[signed]int
整型
4
-2147483648~-2147483647
unsignedint
无符号整型
4
0~4294967295
[signed]long
长整型
4
-2147483648~-2147483647
unsignedlong
无符号长整型
4
0~4294967295
[signed]longlong
超长整型
8
-2^63~2^63-1
Float
单精度浮点型
4
-3.4×10^38~3.4×10^38(约6个有效数字)
double
双精度浮点型
8
-1.7×10^308~1.7×10^308(约12个有效数字)
表中的[]表示其中的内容可以省略。
如[signed]char,简略为char就可以。
注意:
不同的数据类型,存储空间大小和能合适的运算不同
1、整型适用的运算操作
加
减
乘
除
余数
+
-
*
/
%
运算优先级:
(*等于/等于%)>(+等于-)
体验:
运算符号与数据类型
#include//标准输入输出库文件
usingnamespacestd;//使用std命名空间
intmain()
{Inta,b;
a=5/2;b=5%2;
printf(“%d%d”,a,b)
scanf("\n");
return0;
}
例题:
已知a,b两个整数,求这两个数的和、差、乘积、商、余数
分析:
已知a,b,求:
S1(和),S2(差),S3(乘积),S4(商),y(余数)
方法:
s1=a+b;s2=a-b;s3=a*b;s4=a/b;s5=a%b;
#include
usingnamespacestd;
intmain()
{inta,b,s1,s2,s3,s4,y;
scanf("%d%d",&a,&b);
s1=a+b;s2=a-b;s3=a*b;
s4=a/b;y=a%b;
printf("%d+%d=%d\n",a,b,s1);
printf("%d-%d=%d\n",a,b,s2);
printf("%d*%d=%d\n",a,b,s3);
printf("%d/%d=%d...%d\n",a,b,s4,y);
system("pause");
return0;
}
说明:
书写程序时,不一定要严格一行一个语句,可以一行多个语句。
变量名的命名与实际存储内容相关联。
便于自己编程中不会混淆变量。
例题:
2、整型变量常用的函数
函数名
功能
函数的定义
举例
Abs
求绝对值
abs(任意的数值类型)
abs(-2)结果为2,abs
(2)结果为2
Sqrt
求平方根
sqrt(任意的数值类型)
sqrt(4),结果为2;sqrt(1.5)结果为1.224745
Int
强制类型转换整型
(int)变量名或者表达式
一般用来把实数转换为整数
(Int)2.5;结果为2
3、实型合适的运算符号与函数
加
减
乘
除
+
-
*
/
Inta=5/2;//结果为a=2
Charch=101;//inta=ch/3;结果为a=33;
floata=5/2;//结果为a=2.000;精度丢失在计算5/2时发生了。
除数与被除数至少需要一个为实型,除运算才能实数除。
floata=5.0/2;
floata=5/2.0;//结果为a=2.5
floata=5.0/2.0;
试一试强制类型转换(float)变量,(int)变量
#include
usingnamespacestd;
intmain()
{inta,b;
floatc;
a=(int)7.6;b=5;
c=a/b;printf("%0.2f",c);//结果为c=1.00
c=(float)a/b;printf("%0.2f",c);//结果为c=1.40
c=(float)(a/b);printf("%0.2f",c);//结果为c=1.00
system("pause");
return0;
}
实数的常用函数#include
函数名
功能
实例
ceil
向上舍入doubleceil(doublex)
Ceil(5.4)结果为5
floor
向下舍入doublefloor(doublex)
Floor(5.6)结果为6
Fabs
求浮点数的绝对值
doublefabs(doublex)
Fabs(-5.4)结果为5.4
Fmod
求x/y的余数
Doublefmod(doublex,doubley)
Fmod(2,5.0)结果为2
注意不可以为fmod(2,5)
pow
指定数的指定次幂
doublepow(doublex,doubley)
Pow(5,3.0)结果为125
练习:
已知圆的半径,求圆的面积和周长
常量:
定义:
在程序执行过程中始终保持不变的数据量。
#definePI3.1415926(注意c++语言中区分大小写)//实数常量
#defineN100//整数常量
#defineName“hello”//字符串常量
#definech‘A’//字符常量
数据存储:
已知半径r,数据类型实型,求周长l,面积s。
算法:
l=2*PI*rs=PI*r*r;
#include
#definePI3.1415926
usingnamespacestd;
intmain()
{floatr,l,s;
r=5;
l=2*PI*r;s=PI*r*r;
printf("l=%0.2f,s=%0.2f",l,s);
system("pause");
return0;
}
4、字符类型,实际存储的是0..255的整数
定义:
charch1,ch2,ch3;
赋值:
ch1=97;相当于ch1=’a’;
ch2=’A’;相当于ch2=65;
ch3=’0’;相当于ch3=48;
输入:
scanf("%c%c",&ch1,&ch2);输入ab
scanf("%c%c",&ch1,&ch2);输入ab
输出:
printf(“%c,%c,%c”,ch1,ch2,ch3);输出a,A,0
Printf(“%5c”,ch1);定义场宽为5。
练习:
1、输入字母序号,输出相应的大小写字母。
输入1,输出A,a输入26,输出Z,z
2、输入一个小写字母,将其转换为大写字母3、输入字母,输出其在字母表中的序号。
三、输出语句:
printf函数
语句格式:
printf(“格式控制字符串”,地址列表)
格式控制字符串:
用于指定输出格式,由格式字符串和非格式字符串构成。
格式字符串:
以%开头,后面有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。
非格式字符串:
原样输出。
地址列表:
各个输出项。
要求格式字符串和各输出项在数量和类型上应该是一一对应的。
//不同的类型控制:
#include
usingnamespacestd;
intmain()
{inta=65,b=97;
printf("******\n");//原样输出,后换行
printf("%d%d\n",a,b);//6597%d----十进制
printf("%d,%d\n",a,b);//65,97
printf("%o,%o\n",a,b);//%o-----八进制
printf("%x,%x\n",a,b);//%x-----十六进制
printf("%c,%c\n",a,b);//A,a%c-----字符格式
system("pause");
return0;
}
类型格式符号
意义
d
十进制带符号整数(整数不输出符号)
O
以八进制带符号整数(不输出前缀O)
X
以十六进制带符号整数(不输出前缀Ox)
u
以十进制无符号整数
f
以小数形式输出单、双精度实数
e
以指数形式输出单、双精度实数
c
输出单个字符
s
输出字符串
“格式控制字符串”:
%[输出宽度][.精度]d
//体验宽度和精度的控制
#include
usingnamespacestd;
intmain()
{inta=123;floatb=123.456;
printf("------分割线---------\n");//原样输出,后换行
printf("a=%d,%5d\n",a,a);
printf("b=%f,%10.5f,%0.1f\n",b,b,b);
system("pause");
return0;
}
三、输入语句:
scanf函数(格式输入函数)
语句格式:
scanf(“格式控制字符串”,地址列表)
#include
usingnamespacestd;
intmain()
{
inta1,b1,a2,b2;
scanf("%d%d",&a1,&b1);printf("a1=%d,b1=%d\n",a1,b1);
scanf("%d,%d",&a2,&b2);printf("a2=%d,b2=%d\n",a2,b2);
system("pause");
注意:
整数与实数一般用空格或回车来区分不同变量的数据。
如何输入格式中有,
输入数据一定要有,否则数据出错。
return0;
}
从键盘上输入:
12从键盘上读入:
1
3,42
3,
输出:
a1=1,b1=24
a2=3,b2=4输出:
a1=1,b1=2
a2=3,b2=4
scanf中常见的错误:
错误
正确
scanf(“%d”,a);
scanf(“%d”,&a);
没有&
scanf(“%5.2f”,b);
scanf(“%f”,&b);
不能有精度控制
//体验输入不同类型的数据
#include
usingnamespacestd;
intmain()
{
inta,b;
floatc,d;
charch1,ch2;
scanf("%d%d",&a,&b);
scanf("%f%f",&c,&d);
scanf("\n%c%c",&ch1,&ch2);
printf("a=%d,b=%d\n",a,b);
printf("c=%0.2f,d=%0.2f\n",c,d);
printf("ch1=%c,ch2=%c\n",ch1,ch2);
system("pause");
return0;
}
输入数据:
12输出:
a=1,b=2
3.45.6c=3.40,d=5.60
abch1=a,ch2=b
四、赋值语句语句格式:
变量=表达式
1、相同类型的赋值
Inta,b,c;
a=1;b=2;c=3;a=b+c;可以写成a=(b=2)+(c=3);
a=1;b=1;c=1;可以写成a=b=c=1;
floatx,y;
x=1.1;y=x;
2、不同类型的赋值
右边的表达式的值赋值给左边的变量时,如果两边的类型不一致时,自动进行类型转换,将右边的类型转换成左边的类型。
实型赋值给整型,舍去小数部分。
整数赋值给实型,数值不变。
字符型赋值给整型,其AscⅡ码的值放入整型的低八位,高八位赋值为0.
整型赋值给字符型,只把低八位赋值给字符型。
3、复合赋值表达式
双目运算符的使用+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
复合赋值表达式:
变量+双目运算符+表达式等价于变量=变量+运算符+表达式
a+=5等价于a=a+5
x*=y+7等价于x=x*(y+7)
r%=p等价于r=r%p
复合赋值表达式能提高编译的效率并产生质量较高的目标代码。
例:
输入a,b的值,将其值交换后,输出
intmain()
{
inta,b,t;
scanf("%d%d",&a,&b);
t=a;a=b;b=t;
printf("a=%d,b=%d\n",a,b);
system("pause");
return0;
}
说明:
程序1中,temp为中间暂存变量;理解程序2为什么可以实现a,b值的交换?
intmain()
{
inta,b;
scanf("%d%d",&a,&b);
a=a+b;b=a-b;a=a-b;
printf("a=%d,b=%d\n",a,b);
system("pause");
return0;
}
练习:
1、输入整数X,求x的前一个整数、后一个整数;求x的绝对值,求x的平方。
2、输入两个整数a,b;将数据交换后,输出交换数据后的a,b
3、整数拆分:
已知一个百位整数,编程求各个数位上的数字之和。
4、已知梯形的上底、下底、高,求梯形的面积
5、输入一个实数,求平方根,平方,绝对值。
第三课选择结构语句(if、switch)
一、布尔类型
定义:
boolf1,f2;
赋值:
f1=true;等价于f1=1;
f2=false;等价于f2=0;
输出:
printf(“%d,%d”,f1,f2);输出为1,0
二、关系运算符
作用
操作符
大于
>
小于
<
大于等于
>=
小于等于
<=
等于
==
不等于
!
=
三、逻辑运算符
作用
操作符
优先级
非
!
高
逻辑与
&&
中
逻辑或
||
低
由关系运算符和逻辑运算符连接的表达式,结果为布尔类型。
四、优先级
算术运算符>关系运算符>逻辑运算符
常用的表达式
意义
1>0
1!
=0
1==0
1+2>5
结果为true或者1
结果为true或者1
结果为false或者0
结果为false或者0
a>0
a==0
a!
=0
a==b
a!
=b
变量a是否大于0
变量a是否等于0
变量a是否不等于0
变量a与b是否相等
变量a与b是否不相等
a>=0&&a<=10
变量a的值是否在区间[0,10]
a%4==0
变量a是否为4的倍数
a+b>c&&b+c>a&&a+c>b
等价于
(a+b>c)&&(b+c>a)&&(a+c>b)
三角形的任意两边之和大于第三边
五、IF语句
【作用】:
根据条件来选择执行的语句。
【格式】:
形式1:
if(条件)语句;
形式2:
if(条件)
语句1;
else语句2;
【注意】
1、条件,是一个表达式,()不能省略。
2、注意加;的位置
3、书写if语句的关键在于给出条件表达式,主要使用关系表达式或者逻辑表达式来表示某一条件。
【例题】
例3.1:
输入不相等的两个整数a,b,输出较大的数。
分析:
根据判断两个数的大小关系,给出条件表达式a>b,条件成立输出a,条件不成立,输出b;程序二中引进一个新的变量max来存储最大值。
#include
usingnamespacestd;
intmain()
{inta,b;
cin>>a>>b;
if(a>b)cout<<"max="<elsecout<
system("pause");
return0;
}
#include
usingnamespacestd;
intmain()
{inta,b,max;
cin>>a>>b;
if(a>b)max=a;elsemax=b;
cout<<"max="<system("pause");
return0;
}
例3.2:
输入一个整数a,判断是否在开区间(0,8)内,是,输出“Yes”,否则输出“No”.
分析:
a是否在开区间(0,8)内,也就是0 表达式书写:
错误写法:
0a>0&&a<8
知识点:
当判断由多个条件构成时,条件之间根据逻辑运算符!
&&,||来连接。
#include
usingnamespacestd;
intmain()
{inta;
cin>>a;
if(a>0&&a<8)cout<<"Yes"<elsecout<<"No"<system("pause");
return0;
}
例3.3:
输入年份,判断是否为闰年。
闰年的规则:
年份能够被4整除,但不能被100整除,或能被400整除。
#include
usingnamespacestd;
intmain()
{intyear;
cin>>year;
if(year%4==0&&year%100!
=0||year%400==0)
cout<elsecout<system("pause");
return0;
}
例3.4:
输入一个整数x,判断该数的奇偶性,如果是奇数,输出“奇数”,否则输出“偶数”
#include
usingnamespacestd;
int