null第二章
C++简单程序设计第二章
C++简单程序设计C++语言程序设计本章主要内容*本章主要内容C++语言概述(熟悉)
基本数据类型和表达式(重点)
数据的输入与输出(熟悉)
算法的基本控制结构(重点)
自定义数据类型(了解)C++语言的产生*C++语言的产生C++出于C而胜于C
引入类机制,最初被称为“带类的C”
1983年正式取名为C++
从1989年开始C++语言的标准化工作
1994年制定了ANSI C++标准草案
1998年11月被(ISO)批准为国际标准C++语言概述C++的诞生*C++的诞生 C++的创始人:
Bjarne stroustrup (AT&T Bell实验室)C++的特点*C++的特点全面兼容C
它保持了C的简洁、高效和接近汇编语言等特点
对C的类型系统进行了改革和扩充
C++也支持面向过程的程序设计,不是一个纯正的面向对象的语言
支持面向对象的方法C++语言概述C++程序实例—例2-1*C++程序实例—例2-1//2_1.cpp
#include
using namespace std;
int main()
{ cout<<"Welcome to c++!"<
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
、类(数据成员、成员函数)
程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何。
语句以英文分号结束;书写格式自由
预处理命令
以#开头的语句
注释
单行 //
多行 /* */ (C语言原有的注释方式)C++字符集*C++字符集大小写的英文字母:A~Z,a~z
数字字符:0~9
特殊字符:
空格 ! # % ^ & * _(下划线) + = - ~ < > / \ ' " ; . , : ? ( ) [ ] { }C++语言概述词法记号*词法记号关键字 C++预定义的单词
标识符 程序员声明的单词,它命名程序正文中的一些实体
文字 在程序中直接使用符号表示的数据
操作符 用于实现各种运算的符号
分隔符 () {} , : ; 用于分隔各个词法记号或程序正文
空白符 空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称C++语言概述标识符的构成规则*标识符的构成规则以大写字母、小写字母或下划线_开始
可以由以大写字母、小写字母、下划线_或数字0~9组成。
大写字母和小写字母代表不同的标识符。 大小写敏感C++语言概述用户自定义标识符*用户自定义标识符合法的:
apple、_Student、_123、No1、max_num
不合法的:
51job、max-num、abc$、 float、true
良好的标识符命名习惯
1、Unix常用的命名法
my_age、num_of_student
2、驼峰式命名法
myAge、numOfStudent
3、匈牙利标记法
iMyCar、bIsRight2.2 基本数据类型*2.2 基本数据类型什么是数据类型?
数据是程序处理的对象,根据其本身的特点进行分类,形成不同的数据类型。
例:数学中有自然数、整数、实数
基本数据类型
整型:int
字符型:char
实型:单精度float、双精度double
逻辑型:boolnull* 基本类型 有序型
字符型(char)
整型(int、 short、long)
布尔型(bool)
浮点型 单精度型(float)
双精度型(double)
构造类型 枚举型(enum)
数组
结构体(struct)
共用体(union)
类(class)
指针类型 null*修饰符
在C++中描述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本的数据类型:
1、长型 long
2、短型 short
3、有符号 signed
4、无符号 unsignednull*1、short:
仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;
2、long:
仅修饰int和double,在不同的编译环境中使用long修饰的数据所占内存不同。
3、unsigned:
用来修饰char、short和int,表示该数据类型为无符号数。
4、signed:
用来修饰char、short和int,表示该数据类型为有符号数,为缺省设置。数据类型
—整型数据及取值范围*数据类型
—整型数据及取值范围类型 说明符 位数 数值范围
短整 short 16 -32768~32767
基本 int 32 -231~(231-1)
长整 long 32 -231~(231-1)
无符号 unsigned short 16 0~65535 unsigned [int] 32 0~(232-1) unsigned long 32 0~(232-1) 基本数据类型和表达式数据类型和内存空间*数据类型和内存空间不同的数据类型,加上不同的修饰符,在内存中占用的空间不同,其所能表示的数值范围也不同。
内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。
整型int的长度等于机器的字长:
16位机:int=2字节;
32位机:int=4字节。
long int在32位系统中一般为4字节,但在64位系统一般位 8字节。
float和double型数据的有效位数分别为6位、15位unsigned int与signed int的比较*unsigned int与signed int的比较指定为signed的数据以补码形式存放,存储单元中的最高位(bit)用来表示数值的符号。指定为unsigned的数据,全部二进制位都用来表示数值本身。例:短整型数据占两个字节null*float 4字节
精度:3.4×10±38
6位有效数字
double 8字节
精度:1.7×10±308
15位有效数字
long double 8字节
精度:1.7×10±308
15位有效数字数据类型—实型数据实型常量:
1.23默认为double型
1.23F或1.23f为 float型
1.23L为long double型常量*常量1. 在程序运行过程中,值不能被改变的量称为常量。
2. 文字常量是指可直接使用的常量。
3. 文字常量分为整形、实型、字符型和字符串型常量。 常量*常量1.整型常量
(1)十进制整数,如:789, -456
(2)八进制整数,如:0102,-026
(3)十六进制整数,如:0x789, -0xAB
(4)长整型与无符号型整数
长整型整数,如:12L, 0234L,-0xABl
无符号型整数,如:12U, 0234U,0xABU常量*常量2.实型常量
在内存中以浮点形式存放,均为十进制数,无数制区分。
(1)小数形式: 1.65,1.,.123
(2)指数形式:1.23e5、1.23e-5、1e3
数据类型
——字符型数据*数据类型
——字符型数据字符常量
单引号括起来的一个字符, 如:'a', 'D', '?', '$'
字符变量
用来存放字符 例:char c1,c2; c1='a'; c2='A';
字符数据在内存中的存储形式
以ASCII码存储,占1字节,用7个二进制位基本数据类型和表达式 数据类型
——字符型数据*字符串常量
例:"CHINA" "a" 'a'
所以:char c; c="a"; 数据类型
——字符型数据基本数据类型和表达式转义字符*转义字符\a 响铃(喇叭声)
\n 回车
\t 向右跳过一个水平制表符
\nnn 八进制数表示
注意:每一位数字n<8
\xhh 十六进制数表示 数据类型
——布尔型数据* 数据类型
——布尔型数据布尔型变量的说明: 例:bool flag;
布尔型数据的取值: 只有 false 和 true 两个值基本数据类型和表达式变量*变量在程序运行中,值可变的量称为变量。
变量的三要素:变量名、内存空间和值。
1定义变量:
bool b;
char gender, ch;
int a, b ;
double dx ;
float f ;
unsigned u ;
变量*变量2 变量赋值
(1)变量定义后,用赋值语句赋初值。
int a;
a = -12+100;
(2)在定义变量的同时,初始化。
int a = 12;
★ 变量不赋值,其值是什么?
数据类型
——变量初始化* 数据类型
——变量初始化例: int a=3; double f=3.56; char c='a'; int c(5);基本数据类型和表达式2.2.4 符号常量*2.2.4 符号常量例如:const double pi=3.14159;
常变量具有变量的三个要素。所以又称为常变量
必须在定义时赋初值,且在程序的运行中值不可变。
编译器可对常变量进行类型检查。2.2.5 运算符和表达式*2.2.5 运算符和表达式运算符:
一元:负数- 逻辑非! 按位取反 ~
二元:+ - * / %等
三元运算符:条件运算?:
关键字运算符:sizeof new delete 强制类型转换
运算需要考虑
运算符的功能
对操作数的要求(个数、类型)
运算符的优先级(见表2.4)
运算符的结合性(见表2.4 )算术运算符与算术表达式*算术运算符与算术表达式基本算术运算符
+ - * /(若整数相除,结果取整)
%(取余,操作数为整数)
运算符不能省略,a*(x+b)
优先级与结合性
先乘除,后加减,同级自左至右基本数据类型和表达式试一试*试一试
温度转换公式
求一元二次方程ax2+bx+c=0的根
x1=?
x2=?
12运算符与表达式*运算符与表达式关系运算符与关系表达式
六种:==、!=、>=、>、<=、<
运算符的优先级:由高到低:
1、>=、>、<=、< 2、==、!=
关系表达式的结果类型为bool,只能为true或false
注意:不要把 "= "当成等号用!
例:设int a=0; 则a==0为true ,而a=0为falsenull*int a=1, b=2, c=3;
cout<<(a==b)<=b)<b>a)<3&&2||8<4 true
例3: 3&&0&&9 false
例2、3涉及"表达式短路"概念:
如果多个表达式用&& 或 || 连接,为了提高判断效率,只要能够确定表达式的结果,运行就不再继续了。
例4:闰年的判别:设年份为y,当下式为真时为闰年:
y%4==0 && y%100 !=0 || y%400==0 增1、减1运算*增1、减1运算运算符:++和--分别表示将操作数增1、减1
操作对象:整型或字符型变量
根据操作数的位置不同,分为前置和后置两种
++i 先自身加1,再将加1的值作为表达式的值
i++ 将i作为表达式的值,然后自身再加1。
--i 先自身减1,再将加1的值作为表达式的值
i-- 将i作为表达式的值,然后自身再减1。
结合性:从右向左null*#include
using namespace std;
void main()
{
int i =1;
cout<<"i="<
using namespace std;
int main()
{
int i,j,x,y;
i=j=1;
x=(++i)+(++i);
y=(j++)+(j++);
cout<>=,&=,^=,|=
例 a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8)基本数据类型和表达式逗号运算符与逗号表达式*逗号运算符与逗号表达式逗号运算符,又叫"顺序求值运算符"
优先级最低。
格式: 表达式1,表达式2,……,表达式n;
依次计算表达式1,表达式2,……,表达式n的值,并将表达式n的结果作为逗号表达式的结果
例1:逗号表达式a=3*5, a*4的值? 60
例2: int a, b, c, x, y;
a=3, b=4, c=a+b;
x=b+c, a; x值为11,表达式值为3
y=(b+c, a) y和整个表达式值都为3null*① x=(a=3,6*3) a值为3, x值为18
② x=a=3,6*a a值为3, x值为3
逗号表达式其实是把若干个表达式"串联"起来。使用逗号表达式是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于for循环语句中。
在用cout输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如
cout<<(3*5, 43-6*5, 67/3)<b?a:b;基本数据类型和表达式sizeof 运算符*sizeof 运算符作用:获取不同数据类型或表达式所占据的字节长度
格式:sizeof (类型名) 或sizeof (表达式)
结果值: “类型名”所指定的类型或“表达式”的结果类型所占的字节数。
例:sizeof (char)
sizeof(bool)
sizeof(float)
sizeof(int) 、 sizeof(short)、 sizeof(long)比较
sizeof(10+3.14)位运算——按位与(&)*位运算——按位与(&)运算规则
将两个运算量的每一个位进行逻辑与操作
举例:
计算 3 & 5
3: 0 0 0 0 0 0 1 1
5:(&) 0 0 0 0 0 1 0 1
3 & 5: 0 0 0 0 0 0 0 1基本数据类型和表达式位运算——按位或(|)*位运算——按位或(|)运算规则
将两个运算量的每一个位进行逻辑或操作
举例:
计算 3 | 5
3: 0 0 0 0 0 0 1 1
5:(|) 0 0 0 0 0 1 0 1
3 | 5: 0 0 0 0 0 1 1 1基本数据类型和表达式按位取反运算~*按位取反运算~按位取反是一个一元运算符,它的作用是将两个操作数对应的每一位分别进行取反操作。
具体运算规则:~1=0,~0=1。
例如:计算~5
5:0 0 0 0 0 1 0 1
~5:1 1 1 1 1 0 1 0
比较:!0与~0的区别:
cout< < >= <=
== !=
位运算:& ^ |
逻辑:&&
||
三目:?:
赋值运算:= += *= ...
逗号运算低高基本数据类型和表达式null*数据类型转换*数据类型转换数据类型转换
当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种:
1、隐式类型转换(自动转换)
2、强制类型转换
混合运算时的类型转换* 混合运算时的类型转换不同类型数据进行混合运算时,C++编译器会自动进行类型转换。
为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种类型数据。
可以采用强制类型转换:
例如: float c; int a,b; c=float(a)/float(b);
或 c=(float)a/(float)b; 数据类型转换*数据类型转换1、隐式类型转换
各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。
转换的基本原则:
将精度较低、范围较小的类型转换成精度较高、范围较大的类型。
char→short→int→long→float→double赋值过程中的类型转换*赋值过程中的类型转换赋值运算符要求"="左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的操作数类型向着左边的操作数类型转换。
(1) 将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分。
(2) 将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。
(3) 将一个double型数据赋给float变量时,要注意数值范围不能溢出。
字符型数据赋给整型变量,将字符的ASCII码赋给整型变量。
逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型,转换规则:0为false,非0为true。null*例:将一个int、short或long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量(发生截断)。例如
short int i=289;
char c;
c=i; //将一个int型数据赋给一个char型变量
赋值情况如图。设short int型数据占2个字节
null*(6) 将signed(有符号)型数据赋给长度相同的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。
例2.5 将有符号数据传送给无符号变量。
#include
using namespace std;
void main( )
{ unsigned short a;
short int b= -1;
a=b;
cout<<″a=″<
using namespace std;
int main( )
{ cout << 1 << "/ 3 =" << (float)1/3 << endl;
cout << 1 << "/ 3 =" << float(1)/3 << endl;
cout << 1 << "/ 3 =" << float(1/3) << endl;
return 0;
}语句*语句声明语句
表达式语句
选择语句 if语句,switch语句
循环语句 while,do while,for语句
跳转语句 break, continue, goto
复合语句 {......}语句的概念*语句的概念表达式语句格式:表达式;
例:s=a*b; i++;
表达式与表达式语句的区别:
if((a=b)>0)t=a; √
if((a=b;)>0)t=a;
返回语句 return 表达式
空语句 只有语句结束符 ";"的语句
控制语句的种类: 分支、循环、转向…复合语句*复合语句将多个语句用一对大括号包围,便构成一个复合语句
例如
{
sum=sum+i;
i++;
} 2.3 数据的输入输出*2.3 数据的输入输出向标准输出设备(显示器)输出
例:int x;
cout<<"x="<>x;
1)从键盘输入时默认的分隔符为空格,也可以用回车、TAB键。
2)不许在cin中加变量名以外的符号,例:逗号
算法的基本控制结构*顺序结构
分支结构
循环结构算法的基本控制结构选择结构*选择结构if…else语句
1、没有else分支
2、双分支
3、多分支
4、if 语句的嵌套if-else 语句*if-else 语句1、没有else分支
例:比较x和y的大小,如果x大,则输出x的值
if ( x>y )
cout<y )
cout<
void main()
{
int year;
cin>>year;
if (year % 4==0 && year %100 != 0 || year % 400==0)
cout<<"闰年"<
using namespace std;
void main()
{ char ch;
cout<<"输入字符:"<>ch;
if (ch>= '0'&& ch<= '9')
cout<<"是数字"<
void main()
{ int x; cin>>x;
if(x>=90)
cout<<"优秀"<=80)
cout<<"良好"<=60)
cout<<"合格"<0)
if(x>=0)
if(x!=0) y=1;
else y=0;
else y=-1;
或者:
y= (x>=0)?(x!=0)?1:0:-1;例:输出a,b,c中较大的数*例:输出a,b,c中较大的数#include
void main(){
int a,b,c;
cin>>a>>b>>c;
if (a>b)
if (a>c) cout<c) cout<b?(a>c?a:c):(b>c?b:c ) );if…else 语句*if…else 语句注意:二义性
int a= -2, b=1, c=2;
if (a>x;
switch(x/10)
{ case 10:
case 9:cout<<"优秀"<
void main() {
int day; cin >> day;
switch (day) {
case 0: cout << "Sunday" << endl; break;
case 1: cout << "Monday" << endl; break;
case 2: cout << "Tuesday" << endl; break;
case 3: cout << "Wednesday" << endl; break;
case 4: cout << "Thursday" << endl; break;
case 5: cout << "Friday" << endl; break;
case 6: cout << "Saturday" << endl; break;
default: cout << "Day out of range "<< endl;
}
}输入年、月,计算该月有多少天?*输入年、月,计算该月有多少天?#include
void main()
{
int y,m,d; cin>>y>>m;
switch(m){
case 1:case 3:case 5:case 7:case 8:
case 10:case 12: d=31;break;
case 4:case 6:case 9:case 11: d=30;break;
case 2:
d=(y%4==0&&y%100!=0||y%400==0)?29:28; break;
default:cout<<"输入错!";
}
cout<<"day="<
using namespace std;
void main()
{
int i=1;
while (i<=9)
{
cout<
using namespace std;
void main()
{
int sum=0, i=1;
while(i<=10)
{
sum+=i;
i++;
}
cout<
using namespace std;
void main()
{
unsigned char ch=32;
while(ch<128)
{
cout<<(int)ch<<'\t'<
void main()
{ int k=1, sum=0, n;
cout<<"input n(n>0):";
cin>>n;
while(k<=n)
{
sum=sum+k*k;
k++;
}
if(n>0) cout<
void main()
{
int k=1,sum=0,n;
cout<<"input n(n>0):";
cin>>n;
while(k<=n)
{ sum=sum+k*k;
k++;
}
if(n>0) cout<
using namespace std;
int main()
{ int i,sum(0);
cin>>i;
while(i<=10)
{ sum+=i;
i++;
}
cout<<"sum="<
using namespace std;
int main()
{ int i, sum(0);
cin>>i;
do{
sum+=i;
i++;
}while(i<=10);
cout<<"sum="<
using namespace std;
void main()
{
for (int i=1;i<10;i++)
cout<
using namespce std;
void main()
{
int sum=0;
for (int i=1;i<=10;i++)
sum+=i;
cout<可以省略
for(int i=1 ; i<=9 ; i++)
循环体;
int i=1;
for( ; i<=9 ; i++)
循环体;for循环语句使用说明*for循环语句使用说明2、<表达式2>可以省略
for(int i=1; i<=9; i++)
循环体;
for(int i=1; ; i++)
{ if (i<=9)
循环体;
else
break; //跳转语句,用来跳出循环
}for循环语句使用说明*for循环语句使用说明3、<表达式3>可以省略
for(int i=1; i<=9; i++)
循环体;
for(int i=1; i<=9; )
{
循环体;
i++;
}for循环语句使用说明*for循环语句使用说明3、<表达式1> <表达式3>同时省略
for(int i=1; i<=9; i++)
循环体;
int i=1;
for(; i<=9; )
{
循环体;
i++;
}for循环语句使用说明*for循环语句使用说明5、极端情况,可实现无限循环
for( ; ; ) //分号不能省略
{
循环体;
}三种循环语句的比较*三种循环语句的比较1)for
最适合循环次数固定,循环规律非常明显程序。
2)while
最常使用的循环结构。
3)do_while
最适合至少循环一次的循环结构。null*例2-8: 输入一个整数,求出它的所有因子
#include
using namespace std;
int main()
{
int n, k;
cout << "输入一个正整数: ";
cin >> n;
cout << "正整数" << n << "的因子:";
for (k=1; k <= n; k++)
if (n % k == 0)
cout << k << " ";
cout << endl;
}循环结构与选择结构相互嵌套*循环结构与选择结构相互嵌套//求100~200之间不能被3整除的数
#include
using namespace std;
int main()
{
int n;
for(n=100; n<=200; n++)
{ if (n%3!=0)
cout<
using namespace std;
int main()
{ int i=0,j=0,n;
cout<<"请输入若干整数(输入0则结束):";
cin>>n;
while( n!=0 )
{ if(n>0) i++;
if(n<0) j++;
cin>>n ;
}
cout<<"正整数个数:"<
本文档为【C++简单程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。