C语言讲义C基础Word文档下载推荐.docx
《C语言讲义C基础Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言讲义C基础Word文档下载推荐.docx(61页珍藏版)》请在冰豆网上搜索。
计算机中进行运算要存储相关数据到内存中,变量就是用于存储数据。
定义变量格式:
数据类型变量名;
若定义多个同类型变量则用逗号分隔多个变量。
a=123;
表示将123这个数存入a这个变量中,a变量在内存中占用了2个字节空间。
sum=a+b;
表示将a和b的和存入sum中。
cout<
表示输出结果。
<
是一个运算符,与cout结合使用,表示输出。
一个<
表示一次输出,<
表示在屏幕上输出文字"
,<
sum表示在屏幕上输出sum内存放的数据,<
endl表示输出一个换行,其作用同<
”\n”。
最后的分号表示语句结束。
该程序的执行结果为:
例
//此句的作用是
{inta,b,c;
cin>
>
a>
b;
//表示要求用户从键盘上输入两个数据分别存入a变量和b变量
c=max(a,b);
//表示将max(a,b)的结果存入变量c中。
最大值是"
c<
}
intmax(intx,inty)//x,y的值从main函数中main(a,b)中取得,a的值给x,b的值给y
{intz;
if(x>
y)z=x;
//如果x>
y则x存入z
elsez=y;
//否则y存入z
return(z);
//使z作为max的结果
cin表示输入数据。
表示输入运算符,与cin连用表示要求输入数据存入>
符号后面的变量中。
cin>
a;
表示要求从键盘上输入一个数据并存入变量a。
要输入多个数据时可使用cin>
max(a,b)此种形式表示函数调用。
max是一个函数括号内是函数的参数。
此种使用形式要求max必须是一个已经定义的函数。
该函数调用后有一个结果(有没有结果由max函数的定义决定)。
表示将max函数执行后的结果存入变量c中。
intmax(intx,inty){。
。
此形式为函数max的定义。
第一个int表示该函数执行后有一个结果类型为整型的。
其结果由大括号内的语句决定。
max表示函数名,每个函数都有一个名字,用于表示一段代码。
如main函数。
(intx,inty)表示max函数的参数,表示max函数要处理的数据。
intmax(intx,inty)称为函数首部,打括号内的部分称为函数体。
一个函数由函数首部和函数体构成。
此程序的执行时
,此时从键盘输入数据
最后结果为:
关于函数在后续章节中详细介绍。
总结:
通过以上几个例子,可以看到:
(1)C程序是由函数构成的。
(2)一个函数由两部分组成:
①函数的首部,即函数的第一行。
②函数体,即函数首部下面的大括弧{……}内的部分。
(3)一个C程序总是从main函数开始执行的。
(4)每个语句和数据定义的最后必须有一个分号。
(5))可以用/*……*/和//…对程序中的语句作注释。
第2章数据类型、运算符与表达式
上一章中我们对C++程序作了一个简单介绍,了解了C++程序的基本结构和形式。
在上一章的例子中提到要编写C++程序进行运算需要使用变量来存放数据,而数据是分为不同类型的。
例如整数,实数,字符等等。
本章介绍C++语言中的常用数据类型及相关运算符,和由数据和运算符构成的表达式。
2.1C++的数据类型
一个程序应包括以下两方面内容:
(1)对数据的描述。
(2)对操作的描述。
c的数据类型如下:
基本类型:
整型int,字符型char,实型(浮点型)float,单精度型single,双精度型double,布尔型bool
枚举类型:
构造类型:
数组类型,结构体类型,共用体类型,
指针类型:
空类型
2.2变量
程序中其值可以改变的,用一个符号名字表示的量称为变量。
C++语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
注意,大写字母和小写字母被认为是两个不同的字符。
在选择变量名和其他标识符时,应注意做到“见名知意”,“先定义,后使用”。
定义变量时需给出变量的名字以及该变量要存放的数据的类型。
例如:
inta;
表示定义一个整型变量名字为a。
inta,b,c;
表示定义三个整型变量。
inta=1;
表示定义一个整型变量a并将1存入该变量中。
inta
(1);
作用同inta=1;
也可:
inta,b=10,c(0);
2.3整型数据
2.3.1整型常量的表示方法
整型常量即整常数。
c整常数可用以下三种形式表示:
(1)十进制整数。
1020308899直接使用数字构成
(2)八进制整数。
010020030088099以0开头加数字,表示八进制数,后两个对吗?
(3)十六进制整数。
0x100x880xab0xff0xgg以0x开头加数字,表示16进制数。
inta=0xab,b=0xBC,c(011),d=11;
请说明a,b,c,d四个变量的值(10进制)是多少?
2.3.2整型变量
1.整型数据在内存中的存放形式数据在内存中是以二进制形式存放的。
如果定义了一个整型变量i:
inti;
/*定义为整型变量*/
i=10;
/*给i赋以整数10*/
每一个整型变量在内存中占2个字节。
数值是以补码(complement)表示的。
2.整型变量的分类
(1)基本整型,以int表示。
在C语言中占2字节,在C++语言中占4字节
(2)短整型,以shortint表示,或以short表示。
占2字节
(3)长整型,以longint表示,或以long表示。
占4字节
有符号基本整型[signed]int表示范围:
-231~231-1-2147483648~+2147483647
无符号基本整型unsignedint表示范围:
0~232-10~4294967295
有符号短整型[signed]short[int]
无符号短整型unsignedshort[int]
有符号长整型[signed]long[int]
无符号长整型unsignedlong[int]
unsignedintc;
shortd=1;
shortinte;
signedshortf;
unsignedshortg;
longh;
longinti;
signedlongj;
unsignedlongk;
定义变量时根据要存放的数据的类型及大小来选择变量定义的类型。
比如要存放10000000000这个数应选择那种类型来定义变量?
3.整型数据的溢出
例整型数据的溢出。
{inta,b;
a=2147483647;
b=a+1;
a<
endl<
b<
运行结果为
请注意以下几点:
(1)使用时要注意数据的大小与变量的表示范围是否一致,数据值超出标量表示范围后会使数据出错。
(2)C语言中的int类型与C++中的int占用字节不一样,表示范围也不一样,不同的编译系统可能导致数据类型所占字节不同。
(3)一个整常量后面加一个字母u或U,认为是unsignedint型如123u
(4)在一个整常量后面加一个字母l或L,则认为是longint型常量。
如123L,123表示基本整型。
2.4实型数据
2.4.1实型常量的表示方法
实数有两种表示形式:
(1)十进制小数形式,如1.234。
(2)指数形式,如1.234E+002。
实型变量的分类
单精度(float型)占4字节、双精度(double型)占8字节和长双精度型(longdouble)占10字节。
对每一个实型变量都应在使用前加以定义。
如:
float x,y,(指定x、y为单精度实数)
doublez;
(指定z为双精度实数)
longdoublet;
(指定t为长双精度实数)
2.4.2实型常量的类型
1.23F,1.23f表示浮点型,1.23L,1.234l长双精度,1.23表示双精度
2.5字符型数据
2.5.1字符常量
字符常量是用单引号(即撇号)括起来的一个字符。
如‘a’表示字符常量a
还允许用一种特殊形式的字符常量,就是以一个“\”开头的字符序列。
‘\n’,它代表一个“换行”符。
这是一种“控制字符”,在屏幕上是不能显示的。
‘\1到3位八进制数’表示该数对应的ascii码对应的字符,如‘\101’也表示一个字符A。
‘\x1到2位进制数’如:
‘\x41’表示‘A’
‘\t’表示输出数据时跳至下一格制表位,一个制表位为8个字符宽度。
‘\b’表示输出数据时光标退一格
‘\n’表示输出时换行
‘\\’表示输出一个\‘\’’表示输出一个’‘\”’表示输出一个”
例2.5转义字符的使用。
‘\101’也表示一个字符
{cout<
abc\tde\rf\tg\n"
h\ti\b\bjk\n"
\101"
'
\x42'
\n'
输出结果:
2.5.2字符变量
字符型变量用来存放字符常量,请注意只能放一个字符,并使用一个字节来存放一个字符
字符变量的定义形式如下:
char c1,c2;
用下面语句对c1、c2赋值:
c1='
a'
;
c2='
b'
将一个字符常量放到一个字符变量中,是将该字符的相应的ASCII代码放到存储单元中。
例大小写字母的转换。
{charc1,c2;
c1='
c2='
c1=c1-32;
c2=c2-32;
c1<
c2<
2.5.3字符串常量
字符串常量是一对双引号括起来的字符序列。
“howdoyoudo.”,“CHINA"
,"
a"
,123.45"
所占字节数为字符个数+1,在每个字符串的末尾都隐含一格‘\0’符号,表示字符串结束标志。
2.6算术运算符和算术表达式
1.算术运算符+-*/%
2.关系运算符><==>=<=!
=
3.逻辑运算符!
&
&
||
4.位运算符<
>
~|∧&
5.赋值运算符=及其扩展赋值运算符
6.条件运算符?
:
7.逗号运算符,
8.指针运算符*和&
9.求字节数运算符sizeof
10.强制类型转换运算符(类型)
11.分量运算符.->
12.下标运算符[]
2.6.1算术运算符和算术表达式
1.基本的算术运算符
+(加法运算符,或正值运算符。
如3+5、+3)
-(减法运算符,或负值运算符。
如5-2、-3)
*(乘法运算符。
如3*5)
/(除法运算符。
如5/3)
%(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。
算术运算符的结合方向为“自左至右”,又称“左结合性”,
有些运算符的结合方向为“自右至左”,即右结合性
2.强制类型转换运算符
可以利用强制类型转换运算符将一个表达式转换成所需类型。
(double)a(将a转换成double类型)
(int)(x+y)(将x+y的值转换成整型)
(float)(5%3)(将5%3的值转换成float型)
其一般形式为(类型名)(表达式)
例强制类型转换。
{floata=2.2,b=9.4;
floatc;
c=(int)b%(int)a;
3.自增、自减运算符(只能对变量进行运算,常量不可使用该运算符)
++i,--i(在使用i之前,先使i的值加(减)1)
i++,i-- (在使用i之后,使i的值加(减)1)
注意:
自增运算符(++)和自减运算符(--),只能用于变量,而不能用于常量或表达式
例如
{inta=1;
intb;
b=a++;
cout<
b=++a;
若单独使用时,如:
a++;
和++a;
都相当于a=a+1;
2.7赋值运算符和赋值表达式
1.赋值运算符=如:
a=1;
将数据1存入变量a对应的内存中。
2复合的赋值运算符
在赋值符“=”之前加上其他运算符,可以构成复合的运算符。
如果在“=”前加一个“+”运算符就成了复合运算符“+=”。
1a+=b(其中a为变量,b为表达式)
等价于a=a+b
注意,如果b是包含若干项的表达式,则相当于它有括号。
如:
①x%=y+3等价于x=x%(y+3)(不要错写成x=x%y+3)
可以使用10种复合赋值运算符。
即:
+=,-=,*=,/=,%=,<
=,>
=,&
=,∧=,|=
3.赋值表达式的值
由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。
它的一般形式为<
变量>
赋值运算符>
表达式>
比如:
a=1是一个赋值表达式,该式子的值为被赋值的值。
b=a=1;
由于a=1是一个赋值表达式,其值为1,从而使得b=a=1;
转换为b=1;
2.8逗号运算符和逗号表达式
用逗号将两个表达式连接起来。
3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。
逗号表达式的一般形式为表达式1,表达式2
逗号表达式的求解过程是:
先求解表达式1,再求解表达式2。
整个逗号表达式的值是表达式2的值。
请注意并不是任何地方出现的逗号都是作为逗号运算符。
第3章顺序程序设计
3.1C++语句概述
C++语句可以分为以下5类:
(1)控制语句,完成一定的控制功能。
c只有9种控制语句,它们是:
①if()~else~ (条件语句)
②for()~(循环语句)
③while()~(循环语句)
④do~while()(循环语句)
⑤continue(结束本次循环语句)
⑥break(中止执行switch或循环语句)
⑦switch(多分支选择语句)
⑧goto(转向语句)
⑨return(从函数返回语句)
(2)函数调用语句。
由一次函数调用加一个分号构成一个语句;
(3)表达式语句。
(4)空语句。
下面是一个空语句:
;
(5)可以用{}把一些语句括起来成为复合语句,又称分程序。
3.2程序的三种基本结构
(1)顺序结构。
(2)选择结构。
(3)循环结构
顺序结构就是按照语句的书写顺序执行。
3.3顺序结构程序设计举例
例输入三角形的三边长,求三角形面积。
math.h>
main()
{floata,b,c,s,area;
b>
c;
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
a="
endl
b="
c="
area="
area<
例从键盘输入一个大写字母,要求改用小写字母输出。
c1;
c2=c1+32;
转换为小写字母为:
例求ax2+bx+c=0方程的根。
{doublea,b,c,x1,x2,delta;
delta=b*b-4*a*c;
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
方程根x1="
x1<
<
方程根x2="
x2<
}
第4章选择结构程序设计
选择结构,是三种基本结构之一。
4.1关系运算符和关系表达式
所谓“关系运算”实际上是“比较运算”。
将两个值进行比较,判断其比较的结果是否符合给定的条件。
6种关系运算符:
优先级相同(高):
①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于)
优先级相同(低):
⑤==(等于) ⑥!
=(不等于)
关于优先次序:
(1)前4种关系运算符(<,<=,>,>=)的优先级别相同,后两种也相同。
(2)关系运算符的优先级低于算术运算符。
(3)关系运算符的优先级高于赋值运算符。
4.2关系表达式
用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称关系表达式。
关系表达式的值是一个逻辑值,即“真”或“假”。
关系表达式“a>b”的值为“真”,表达式的值为1。
关系表达式“b+c<a”的值为“假”,表达式的值为0。
4.2.1逻辑运算符及其优先次序
三种逻辑运算符:
(1)&
逻辑与
(2)||逻辑或(3)!
逻辑非
(1)!
(非)→&
(与)→(或),即“!
”为三者中最高的。
(2)逻辑运算符中的“&
”和“||”低于关系运算符,“!
”高于算术运算符。
4.2.2逻辑表达式
逻辑表达式的值应该是一个逻辑量“真”或“假”。
编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。
即将一个非零的数值认作为“真”。
例如,要判别某一年year是否闰年。
闰年的条件是符合下面二者之一:
①能被4整除,但不能被100整除。
②能被4整除,又能被400整除。
可以用一个逻辑表达式来表示:
(year%4==0 &
year%100!
=0)||year%400==0
4.3if语句
if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。
4.3.1if语句的三种形式
1.if(表达式) 语句
2.if(表达式)语句1else语句2
3.if(表达式1)语句1
elseif(表达式2)语句2
elseif(表达式3) 语句3
…
elseif(表达式m) 语句m
else语句n
(1)三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。
(2)第二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有分号。
(3)在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。
4.3.2if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套。
一般形式如下:
if()
if()语句1
else语句2内嵌if
else
if()语句3
else语句4内嵌if
应当注意if与else的配对关系。
else总是与它上面的最近的if配对。
4.3.3条件运算符
若if语句中,在表达式为“真”和“假”时,且都只执行一个赋值语句给同一个变量赋值时,可以用简单的条件运算符来处理。
例如,若有以下if语句:
if (a>b) max=a;
else max=b;
可以用下面的条件运算符来处理:
max=(a>b)?
a∶b;
其中“(a>b)?
a∶b”是一个“条件表达式”。
它是这样执行的:
如果(a>b)条件为真,则条件表达式取值a,否则取值b。
条件运算符要求有3个操作对象,称三目(元)运算符,它是c++语言中唯一的一个三目运算符。
条件表达式的一般形式为表达式1?
表达式2∶表达式3。
(1)条件运算符的执行顺序:
先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
(2)条件运算符优先于赋值运算符,因此上面赋值表达式max=(a>b)?
的求解过程是先求解条件表达式,再将它的值赋给max。
条件运算符的优先级别比关系运算符和算术运算符都低。
(