C语言复习小结.docx

上传人:b****6 文档编号:7583127 上传时间:2023-01-25 格式:DOCX 页数:54 大小:64.28KB
下载 相关 举报
C语言复习小结.docx_第1页
第1页 / 共54页
C语言复习小结.docx_第2页
第2页 / 共54页
C语言复习小结.docx_第3页
第3页 / 共54页
C语言复习小结.docx_第4页
第4页 / 共54页
C语言复习小结.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

C语言复习小结.docx

《C语言复习小结.docx》由会员分享,可在线阅读,更多相关《C语言复习小结.docx(54页珍藏版)》请在冰豆网上搜索。

C语言复习小结.docx

C语言复习小结

C语言复习小结

第三章数据类型、运算符和表达式

常量包括直接常量(或称字面常量)和符号常量。

直接常量有整型常量,实型常量,字符常量与字符串常量。

整型常量有以下三种数制形式表示:

•十进制:

如123;-60;0

•八进制:

以0开始,如0123表示(123)8

•十六进制:

以0x开始,如0x123表示(123)16

实型常量有以下两种形式表示:

小数形式:

由数字、数符和小数点组成。

注意必须有小数点。

如123.0.1230.012.5

指数形式:

数字部分e指数部分。

字母E/e前必须有数字,字母E/e后

必须为整数(1-3位)。

如123e2123E2

字符常量是用单撇号括起来的一个字符。

例如:

'a','x','d','?

','['

•字符常量的值实际上是一个数字值。

存储的实际值为ASCII值。

所以字符常量可以象整数一样参与运算。

(注意:

转义字符)

字符串常量是用一对双引号括起来的字符序列。

如:

“CHINA”,“a”,“X+Y”。

字符串常量在内存中的存放:

每一个字符均以其ASCII码存放,且最后添加一个“\0”作为字符串的结束标志。

(注:

在表达一个字符串时要时刻记着尾部有个‘\0’字符结束整个字符串。

变量是指在程序运行过程中其值可以改变的量。

系统为程序中的每一个变量开辟一个存储单元。

变量有两个要素:

1)变量名:

每个变量都必须有一个名字,即变量名。

变量名由字母、数字和下划线组成,且第一个字符必须是字母或下划线。

如果是字母通常使用小写字母,不使用大写字母。

如:

name,no,x,_k,i,j,stu_name等。

变量名中不能含有运算符、括号等C中关键字。

命名遵循顾名思义原则,且不宜过长。

C区分大小写字母。

2)变量值:

每个变量都有特定的值,且可以改变。

在程序中,通过变量名来引用变量的值。

变量的定义

所有的变量必须在赋值使用之前定义。

定义变量的一般形式是:

typevariable_list;(变量定义语句)

注:

type为C语言中有效类型;

variable_list为变量列表,多个变量之间用,隔开。

如:

inti,j,k;floata;

整型变量

数据类型所占位数取值范围

int16-32768~32767

short16-32768~32767

long32-21亿~21亿

unsignedint160~65535

unsignedshort160~65535

unsignedlong320~42亿

实型变量

分类所占位数取值范围

float单精度32-3.4*10-38~3.4*1038

double双精度64-1.7*10-308~1.7*10308

longdouble长双精度128-1.2*10-4932~1.2*104932

字符变量

1、变量的定义

charc1,c2;/*指定c1,c2为字符型变量*/

2、字符型数据的存储

一个字符变量在内存中占一个字节,并以ASCII码存储,存储形式与整型一样,可以和整数进行运算。

3、字符数据与整型数据可互相赋值

C语言中的关键字:

(32个)

类型说明符:

chardoublefloatintlongshortsignedunsignedstruct(结构体)union(共同体)

结构化语句中用:

ifelseswitchcasebreakdefaultdowhileforcontinuegoto

存储类别用:

autostaticexternregister

函数定义用:

voidreturn

其他:

constsizeoftypedefenumvolatile

C运算符

C语言中有以下几类运算符:

1)算术运算:

+,-,/,*,%(模运算)

2)关系运算:

<,>,==,>=,<=,!

=

3)逻辑运算:

!

,&&,||

4)位运算:

<<,>>,~,|,^,&

基本算术运算符

+(加法运算或正号运算符)

-(减法运算或负号运算符)

*(乘法运算符)

/(除法运算符)

%(求余运算符,或称模运算符)

运算符的优先级和结合性

-(负号)→*/%→+-

注:

(1)两个整数相除结果为整数,多数机器采用“向零取整”方法。

如:

5/3=1;-5/3=-1

(2)参与+,-,*,/运算的两个数中有一个为实数,则结果为double型。

如:

6/2.0的结果为3.0

(3)模%运算符(或称求余运算符)两侧的运算量均为整型量。

如:

55%12

(4)三角函数的自变量使用弧度。

如sin50应写成sin(50*3.1415926/180)

例:

3x2+4xysin56-|x-y|e2.3的表达式为:

3*x*x+4*x*y*sin(56*3.14/180)-fabs(x-y)*exp(2.3)

在求表达式的值时,要按照优先级的高低依次计算

如果运算符两侧优先级相同,则按规定的结合方向(从左到右)进行。

自增、自减运算符

++i,--i在使用i前,使i的值加(减)1

i++,i--在使用i后,使i的值加(减)1

注意:

1)++,--运算符只适用于对整型变量操作,而不能

作用于常量或表达式,如5++或(a+b)--是错误的。

2)++,--的结合方向是自右到左。

如j=3;

printf(”%d”,-j++);则输出-3,后使j值增为4。

思考:

1、(i++)+(i++)+(i++)结果?

2、(++i)+(++i)+(++i)结果?

3、i+++j是(i++)+j还是i+(++j)?

4、printf(“%d,%d”,i,i++)结果

赋值运算符

简单的赋值就是把一个表达式的值赋给一个变量。

复合的赋值运算符

在赋值符“=”之前加上其它运算符,可以构成复合的运算符<变量>运算符=<表达式>等价于

<变量>=<变量>运算符<表达式>

如:

m+=n*3等价于m=m+(n*3)

赋值表达式

对赋值表达式求解的过程是:

将赋值运算符右侧的表达式的值赋给左侧的变量。

赋值表达式的值就是被赋值的变量的值。

设a的值为6,计算a+=a-=a*a

先进行a*a的计算,结果为36

再进行a-=36的计算,相当于a=a-36=-30

最后进行a+=-30的计算,相当于a=a-30=-60

问:

j=k+=32*k合法吗?

什么结果

printf(“%d”,i=20);又是如何呢?

★赋值时进行的类型转换

将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。

将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。

将一个double型数据赋给float变量时,截取其前面7位有效数字,存放到float变量的存储单元(32位)中。

将一个float型数据赋给double变量时,数值不变,有效位数扩展到16位,在内存中以64位存储。

字符型数据赋给整型变量时:

若系统将字符处理为无符号的量,则将字符的8位放到整型变量的低8位,高8位补0。

若系统将字符处理为带符号的量,如果字符最高位为0,则整型变量高8位补0;如果字符最高位为1,则整型变量高8位补1。

将一个int、short、long型数据赋给一个char型变量时,只将其低8位原封不动地送到char型变量(即截断)。

将带符号的整型数据赋给long型变量时,要进行符号扩展,将整型数的16位送到long型变量的低16位中,如果int型数据为正值,则long型变量的高16位补0;如果int型数据为负值,则long型变量的高16位补1。

以保持数值不变。

若将一个long型数据赋给一个int型变量,只将long型数据中的低16位原封不动地送到整型变量中(即截断)。

将unsignedint型数据赋给longint型变量时,不存在符号扩展问题,只需将高位补0。

将unsigned类型数据赋给一个占字节数相同的整型变量时,是将unsigned型变量的内容照原样送到非unsigned型变量中,但如果数据范围超过相应的整型范围,则会出现数据错误。

将非unsignedint型数据赋给长度相同的unsigned型变量时,也是原样照赋(连原有的符号位也作为数值一起传送)。

逗号是一种运算符

形式如下:

表达式1,表达式2

由逗号隔开的一对表达式从左向右进行计算,其求解过程为:

先求解表达式1,再求表达式2,整个逗号表达式的值是表达式2的值。

逗号运算符是所有运算符中级别最低的。

注:

一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:

(a=4*6,a+5),a+6整个表达式的值为30。

在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。

(转换规则见书)

C语言提供一种“强制类型转换”运算符,将一个类型的变

量强制转换为另一种类型。

一般形式为:

(类型标识符)(表达式)

若x原为实型变量且值为2.6,在执行

i=(int)x

后得到一个整数2,并把它赋给整型变量i,但x仍为实型,值为2.6。

C运算符的优先顺序:

(从上到下依次为由高到低,同一级的按各自的结合方向)

1.()、[]、→、.(从左到右)

2.!

、++、--、-、*、&、sizeof、(类型)(单目、从右到左)

3.*、/、%(从左到右)

4.+、-(从左到右)

5.<、>、<=、>=(从左到右)

6.==、!

=(从左到右)

7.&&(从左到右)

8.||(从左到右)

9.?

:

(条件运算符)(从右到左)

10.=、+=、-=、*=、/=、%=(从右到左)

11.,(逗号运算符)(从左到右)

复习作业题:

1.请编写程序,输入两个整数n和m,计算以下表达式的值:

sum=n+m

diff=n-m

prod=n*m

quot=n/m

并上机时调试完成。

main()

{intm,n,sum,diff,prod;

floatquot;

scanf("%d,%d",&n,&m);

sum=n+m;

diff=n-m;

prod=n*m;

if(m==0)printf("dataerror");

elsequot=1.0*n/m;

printf("%5d,%5d,%5d,%5f\n",sum,diff,prod,quot);

}

2.请编写程序,输入x,计算以下表达式的结果。

fun1(x)=

+

main()

{floatx,y;

printf("x=");

scanf("%f",&x);

y=2*x/(x+1.21)+2/(x-1.54);

printf("fun1(x)=%f\n",y);

}

3.请编写程序,输入x,计算以下表达式的结果。

y=

+

main()

{floatx;

doubley;

printf("x=");

scanf("%f",&x);

y=x*x/sin(x)+2*x/(exp

(2)+1);

printf("y=%10f\n",y);

}

4.请编写程序,输入两个自然数,求它们的商和余数。

main()

{intx,y,a,b;

scanf("%d,%d",&x,&y);

a=x/y;

b=x%y;

printf("%5d,%5d\n",a,b);

}

5.请编写程序,输入一个自然数,判断该数是否能够被3和7同时整除。

main()

{intx;

scanf("%d",&x);

if((x%3==0)&&(x%7==0))

printf("%5dcanbedevideby3and7\n",x);

elseprintf("%5dcannotbedevideby3and7\n",x);

}

 

第四章顺序程序设计

字符输出函数

–格式:

putchar(c)

–功能:

将c值所对应的字符输出到标准输出设备上(一般为显示器)。

c可以是整型或字符型。

一次只能输出一个字符,也可以输出控制符,如putchar('\n')输出一个换行符,即光标移到下一行。

putchar()函数也可以输出转义字符,如:

putchar(‘\101’)即输出字符‘A’。

字符输入函数

–格式:

getchar()、getch()或getche()

–功能:

从标准设备(一般是键盘)输入一个字符。

字符输入函数没有参数,函数值就是从设备输入的字符。

三个函数有一些差别:

–getchar()函数在由键盘键入一个字符后,必须按回车键,而getch()和getche()函数不需要。

–getche()函数和getchar()会显示出所输入的字符,而getch()函数不响应输入的字符。

格式输出函数

–格式:

printf(格式控制,输出表列)

–功能:

printf函数可以将任意类型的多个数据输出到标准输出设备上(一般为显示器)。

1.d格式字符有以下几种格式字符:

(1)%d按整型数据的实际长度输出。

(2)%mdm为要指定输出字段宽度,若m小于实际长度,则按实际长度输出。

(3)%ld输出长整型数据

2.(字母)o格式符以8进制形式输出整数

3.x格式符以16进制形式输出整数

4.u格式符

用来输出unsigned型数据,即无符号数,以10进制输出。

int型可用%u输出,而unsigned型,也可用%d输出。

5.c格式符用来输出一个字符

6.s格式符用来输出一个字符串,有几种用法:

(1)%s如printf(“%s”,“CHINA”);

输出结果CHINA(注意:

不包括双引号)

(2)%msm<串长,突破;否则按右对齐,左补空格。

(3)%-msm<串长,突破;否则按左对齐,右补空格。

(4)%m.ns输出占m个字符,取自左起n个字符,且向右对齐,左补空格。

(5)%-m.nsm,n含义同上,

不过是左对齐,右补空格。

7.f格式符用来输出实数,以小数形式输出,有以下几种

(1)%f系统指定输出整数部分,小数部分输出6位;

单精度实数有效位数一般为7位。

双精度数也可用%f格式输出,有效位数一般为16位。

(2)%m.nf指定输出占m个字符,小数位占n位,右对齐。

(3)%-m.nf指定输出占m个字符,小数位占n位,左对齐。

8.e格式符

(1)%e

不指定输出数据所占的宽度和数字部分小数的位数,由系统自动指定给出5位小数,指数部分占4位(如e+02),其中,e占1位,指数符号占1位,指数占2位。

数值按规范化指数形式输出(即小数点前必须有且只有1位非零数字)。

(2)%m.ne和%-m.ne

9.g格式符

根据数值输出自动选f格式或e格式(选输出时所占字符长度少的一种)。

注意:

在使用printf函数时,有以下几点要说明:

(1)除X,E,G外,其他格式字符必须用小写,如不能把%d写成%D。

(2)可在格式控制串中用‘转义字符’\n,\b,\377等。

(3)连续用两个%,可输出%字符,

如:

printf(“%f%%”,1.0/3);

输出结果为:

0.333333%

格式输入函数

–格式:

scanf(格式控制,地址表列)

–功能:

scanf函数可以从标准输入设备输入任意类型的多个数据(一般为显示器)。

–注意:

输入数不能规定精度。

当输入一串数据时,系统如何区分每个数据:

(1)根据格式字符的含义分隔字符

(2)系统按格式串指定的长度截取所需的数据

(3)用隐含的分隔符:

在输入数据中用空格或换行符分隔数据。

(4)用%后的“*”附加说明符来表示跳过它相应的数据

(5)使用显示分隔符:

在格式说明符中若还可以有其它字符,在输入字符时应输入与这些字符相同的字符。

(6)用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。

注意:

(1)输入时不能规定精度

如scanf(“%6.1f”,&a)是不合法的。

(2)格式控制之后是地址表列而不是变量表列

scanf(“%d,%d”,&a,&b);是正确的,而

scanf(“%d,%*d,%d”,a,b);是错误的。

复习作业题:

1.请编写程序

设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,输出计算结果时保留小数点后两位。

main()

{

floatpi,r,h,l,s,sq,vq,vz;

pi=3.1415926;

printf("pleaseinputtherandh:

\n");

scanf("%f,%f",&r,&h);

l=2*pi*r;

s=pi*r*r;

sq=4*pi*r*r;

vq=4*pi*r*r*r/3.0;

vz=pi*r*r*h;

printf("yuanzhouchangis:

l=%6.2f\n",l);

printf("yuanmianjiis:

s=%6.2f\n",s);

printf("yuanqiubiaomianjiis:

sq=%6.2f\n",sq);

printf("yuanqiutijiis:

vq=%6.2f\n",vq);

printf("yuanzhutijiis:

vz=%6.2f\n",vz);

}

2.请编写程序

输入一个华氏温度,要求输出摄氏温度。

(保留小数点后两位)。

计算公式如下:

c=

(F-32)

main()

{

floatc,f;

printf("pleaseinputahuashiwendu:

\n");

scanf("%f",&f);

c=(5.0/9.0)*(f-32);

printf("sheshiwenduis:

%5.2f\n",c);

}

3.用下面的scanf函数输入数据,问在键盘上应如何输入才能使a=10,b=20,c1=’A’,c2=’a’,x=1.5,y=-3.75,z=67.8

scanf("%5d%5d%c%c%f%f%*f,%f",

&a,&b,&c1,&c2,&x,&y,&z);

第五章选择结构程序设计

关系表达式

用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式或赋值表达式)连接起来的式子,称为关系表达式。

关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。

若a=5,b=3,c=1,则

•a>b>c的计算过程是:

先计算a>b,结果为真,值为1

再计算1>c,结果为假,值为0

•f=b>c!

=a的计算过程是:

先计算b>c,结果为真,值为1

再计算1!

=a结果为真,值为1

最后将1赋值给f

逻辑运算符

!

(逻辑非)

&&(逻辑与)

||(逻辑或)

1)&&和||是双元运算符

它要求有两个关系表达式做为操作数,

如:

(a>b)||(x>y)就是一个逻辑表达式。

2)!

是一元运算符

只要求有一个关系表达式做为操作数,

如:

(a>b)就是一个逻辑表达式。

请思考:

5>3&&2||8<4-!

0的值。

逻辑表达式

–逻辑表达式的值是一个逻辑量“真”或“假”。

–C语言编译系统在给出逻辑结果时,以数值1代表“真”,以0代表“假”;但是在判断一个量是否为“真”时,以非0代表“真”,以0代表“假”。

–例如:

若x=10,则!

x的值为0。

若a=3,b=2,则a&&b的值为1。

5&&0||8的值为1。

逻辑运算符特点

在逻辑表达式的求解中并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行下一个运算符。

–当a=5,b=3,c=2,d=1,x=1,y=1则表达式(x=a

而“y=c

条件运算符?

条件表达式的形式为:

表达式1?

表达式2:

表达式3

–先计算表达式1,若其值为非零,则结果为表达式2的值,否则就是表达式3的值。

结合性:

从右到左

例如:

设a=2,b=3,c=4,则:

计算m=a>b?

a:

b>c?

b:

c

先计算b>c?

b:

c,结果为4

再计算m=a>b?

a:

4,结果为4

则m的值为4,整个表达式的值也为4。

if语句的三种形式:

if形式:

–if(表达式)语句;

–例如:

if(x>y)printf(“%d”,x);

if-else形式:

–if(表达式)语句1;

–else语句2;

–例如:

–if(x>y)printf(“%d”,x);

–elseprintf(“%d”,y);

else-if形式

–if(表达式1)语句1;

–elseif(表达式2)语句2;

–……

–else语句n;

例如:

if(number>500)cost=0.15;

elseif(number>300)cost=0.10;

elseif(number>100)cost=0.075;

elseif(number>50)cost=0.05;

elsecost=0;

if语句中的书写问题:

(1)if语句中,在if后面都有“表达式”,一般为逻辑表达式或关系表达式。

执行if语句时先对表达式求解,若表达式的值为0,按“假”处理,为非0,按“真”处理。

(2)在每一个else前面要有一个分号(;),整个语句结束处也要有一个分号(;)。

(3)在if和else后面只能含有一个内嵌的操作语句,如果有多个语句,要用花括号“{}”将几个语句括起来成为一个复合语句。

嵌套的if语句

–在一个if语句中又包含了另一个if语句,称为if语句的嵌套。

C语言规定,else总是和它上面离它最近的if配对。

因此,最好使内嵌的if语句也包含else部分,如果遇到if和else的数目不匹配,可以通过加花括弧来确定配对关系。

例如:

if()

{if()语句1}

else语句2

switch语句的基本格式:

switch(表达式)

{case常量表达式1:

语句1;[break;]

case常量表达式2:

语句2;[break;]

……

case常量表达式n:

语句n;[break;]

default:

语句n+1;

}

注意:

–当表达式的值与某一个case后面的常量表达式的值相等时,就

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1