(完整版)期末复习C语言知识点归纳,推荐文档

(完整版)期末复习C语言知识点归纳,推荐文档
(完整版)期末复习C语言知识点归纳,推荐文档

期末复习 C 语言知识点归纳

一、概述

1.一个C 语言源程序可以由一个或多个函数组成,有且只有1 个main()函数,可以放在程序中的任何位置.

2.一个C 程序不论有几个函数,都是从main()函数开始执行.

3.标识符

按照 C 语言所定义的规则来命名的符号。

规则: 由字母、数字、下划线组成,但第一个字符必须是字母或下划线。

例如: area、a234、_1234 为合法标识符

456P、a-b、a+b 为非法标识符

注意: 标识符区分大小写。

例如: PAGE 和page 是两个不同的标识符。

4.c 语言有32 个关键字,关键字不能用作用户标识符。

5.C 源程序文件的扩展名".c" 。

6.VC++6.0 下c 语言程序的完整实现过程包括4 个基本步骤:

●编辑源程序

●编译源程序

●构建(链接)形成可执行文件(.exe)

●运行可执行文件.

二、数据类型、表达式

1.c 语言中,整型、字符型、实型是最基本的数据类型.

2. 常量

指在程序运行中,其值不能被改变。

分为整型常量、实型常量、字符常量、字符串常量。

●整型常量

C 语言中主要有十进制、八进制、十六进制等。

十进制例如12、-3、32767 等。

八进制用数字0 开头,由0-7 这8 个数字组成。

例如010、016 为合法八进制数

127、018 为非法八进制数

十六进制用数字0 和字母x 或X 开头,用0-9 表示前10 个数字,字母A-F(可小写)表示后 6 个数字。

例如0xAF、0x10、0x34 为合法十六进制数

100、ABC、0xAFH 为非法十六进制数

注意: C 语言中只有十进制数可以为负数。

●实型常量

表示方式有两种: 小数形式和指数形式。

小数形式

例如: 0.123、.123、123. 都是合法形式。

指数形式

例如: 2.3026 可用以下任何一种指数表示

0.23026E1、2.3026e0、23.026E-1

但下面的指数形式为非法

E3、.5e3.6、2.3e -2(e 和-2 间有空格)

●符号常量

用符号名来表示一个常量。

格式: #define 符号名常量值

例:已知圆的半径为 5.0,计算圆的面积(圆周率取 3.14)。

#include

#define PI 3.14

main()

{ double r, s;

r=5.0;

s=PI*r*r;

printf(“s=%f\n”,s);

}

C 语言中整型常量的3 种表示: 8 进制以0 引导,16 进制以

0x 或0X 引导,十进制不能以0 开头.

●实型(float 或double 型)常量在程序中只能用十进制数,

不能用其他进制表示。2 种表示形式,普通的和指数形式, 如3e5 或者3E5, 三者不可省略任何一部分.

●一个字符常量占一个字节存储空间.用单引号限定,如: ’A’

’\0x41’ (为转义字符,表示以十六进制数41 为ASCII 码值的字符,即’A’的转义字符形式).

‘\0’ (表示空字符,在字符串中用作字符串的结束标志)

11.字符串常量用英文双引号括起来. 如:”hello\n”

●字符串中的字符个数称为字符串的长度.空字符串长度为

0.

●字符串存储中每个字符占一个字节,字符串结尾自动加一

个结束标志符’\0’,所以字符串存储的时候,占用的空

间长度要比串的实际长度多1.

如:char ch[ ]={“Hello”}; 实际串的长度为5,但数组空间

长度为6。

●变量

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

变量的命名必须符合标识符的命名规则,且不能和C 语言

中关键字同名。(例如: main 是关键字)

例如: a、b、ab 为合法变量

define、printf 为非法变量

注意: ab 是一个整体,含义不同于a 乘以b。

●有符号整型变量用英文singned 表示,存储时最高一位是

符号位,无符号整型变量用英文unsigned 表示.

●字符型变量的数据类型标识符是符号char,每个字符型变

量只能存储一个字符.

例如: ‘A’、’c’、’5‘都是合法的字符常

量。”A”、’abc’都是非法的字符常

量。

●常见的转义字符:

\n 回车换行\\ 反斜杠

\’单引号\”双引号

\ddd 三位八进制\xhh 二位十六进制

\0 空值

例1:‘\n’表示回车换行‘\’’表示一个单引号

例2:‘\101’表示字符’A’‘\x41’表示字符’A’

●字符变量

用关键字char 定义,可以同时赋初值。

例1 定义两个字符变量ch1 和ch2。

char ch1,ch2;

例2 定义两个字符变量a 和b,初值分别为’1’和’2’。

char a=’1’,b=’2’;

●getchar 函数和putchar 函数

分别用来输入字符和输出字符。

●字符的输入和输出

使用scanf 和printf 时,格式符均为%c。

例1 从键盘上输入一个字符保存在ch 中。

char ch;

ch=getchar();

例2 char c1=’A’, c2;

c2=c1+1;

putchar(c2);

输出结果是’B’。

例3 输出一个回车换行符。

putchar(‘\n’);

例: 从键盘上输入一串字符,最后以’!’为结束标志。分别统计大写字母,小写字母、数字出现的次数。

#include

main()

{

char ch;

int n1=0,n2=0,n3=0;

printf(“请输入一串字符以!结束:\n”);

ch=getchar();

while(ch!='!')

{

if(ch>='A' && ch<='Z')

n1++;

if(ch>='a' && ch<='z')

n2++;

if(ch>='0' && ch<='9')

n3++;

ch=getchar();

}

printf("大写字母出现次数是%d\n",n1);

printf("小写字母出现次数是%d\n",n2);

printf(“数字出现次数是%d\n",n3);

}

●VC++ 6.0 下,int 型数据占4 个字节,float 型数据占4 个

字节,double 型数据占8 个字节,.char 型数据占1 个字节.

●算术运算符

+、-、*、/、%(求余数)

例如: 3+2 1.2*3.2 5%3 1/2

求余运算符%只能用于整型数据的相除求余数,结果为整数. 如:7%2.0 为非法表达式,7/2 结果为3,7%2 结果为1

运算规则

1) 如果运算数类型一致,则结果为运算数的类型。所有实数运算都是以双精度进行.

2) 如果运算数类型不一致,则系统自动转换,使运算符

两边类型一致后再进行运算。

char 和short 参与运算先转换成同int .

赋值运算中,赋值号右侧量的类型将转换成左侧的类型.

例1 1.0/2.0 结果为0.5

例2 1/2 结果为0

例3 15/3.0 结果为5.0

●强制类型转换

格式: (类型名)(表达式)

例4 (int)3.234 结果为3

例5 (float)(10%3)结果为1.000000

●关系运算符

>,>=,<,<=的优先级相同且高于==,!=的优先级.

关系运算符的优先级低于算术运算符高于赋值运算符.

关系运算符是左结合性.

●关系表达式的值为真则是1,假为0.

●逻辑运算符!高于&&,和||,高于算术运算符.&&和||是左结

合的,!是右结合的.

●注意&&及||运算的短路现象。

&& 的短路运算:

(表达式1)&& (表达式2),若(表达式1)的值为0,则表达式2 将不被计算,整个&&的结果为0。

|| 的短路运算:

(表达式1)|| (表达式2),若(表达式1)的值为1,则表达式2 将不被计算,整个||的结果为1。

●数学关系式0

(0

●赋值表达式

格式: 变量名=表达式

例如: a=10 a=a+1 a=b=7+1 为合法表达式

a+b=8 a=7+1=b 为非法表达式

整个表达式的值等于最左边变量的值。

例如: a=b=c=8*8 整个表达式最后的值为64

●复合赋值表达式

复合运算符: +=、-=、*=、/=、%=

例如: n=n+1 表达式可写成n+=1

n=n%3 表达式可写成n%=3

n*=m+3 表达式可写成n=n*(m+3)

例1 假设变量a 初值为9,计算下列表达式。

a+=a-=a+a

解答:

1) 计算a+a,结果为18,a 值未变。

2) 计算a-=18,即a=a-18,结果为-9,a 值变为-9。

3) 计算a+=-9,即a=a+(-9),结果为-18,a 值变为-18。

整个表达式最后结果为-18,a 最后值为-18。

注意: a=a+1 为赋值表达式,而a=a+1; 为赋值语句。

●自加和自减运算符

自加和自减只适用于整型变量.

例如: a++和++a 等价于a=a+1

b--和--b 等价于b=b-1

a++和++a 的区别:

假设a 的初值为5

表达式a++值为5,最后a 值为6。

表达式++a 值为6,最后a 值为6。

●逗号表达式

格式: 表达式1,表达式2,…..,表达式n

从左至右依次计算每个表达式,最后一个表达式的值即为整个逗号表达式的值。

例如: 表达式i=3,++i,i+5 最后结果为9,i 最后值为4。

●条件运算由"?"和":"构成,它是根据条件从两个表达式中

选择一个进行计算取值的操作,优先级高于赋值运算符,低于算术运算和关系运算.

三、输入输出函数

●数据输出printf

格式: printf(格式符,输出项1,输出项2,….)

格式符功能

%c 输出一个字符

%d 输出十进制整数

%f 输出小数形式浮点数

%e 输出指数形式浮点数

%s 输出一个字符串

数据宽度说明:

1) 在%和格式字符之间插入一个整数来指定输出宽度。

例如: %4d、%5c

2) 对于float 和double 类型的实数,可以用n1.n2 形式n1 指定输出数据的宽度(包括小数点),n2 指定小数点后小数的位数。

例如: %12.3f、%12.0f

例1 输出整型变量a 和b 的值,数据宽度均为

4。printf(“%4d%4d”,a,b);

例2 输出单精度变量k 的值,保留2 位小数。

printf(“%.2f”,k);

●数据输入scanf

格式: scanf(格式符,输入项1,输入项2,…)

格式符功能

%c 输入一个字符

%d 输入十进制整数

%f 输入单精度数

%lf 输入双精度数

%s 输入一个字符串

例1 从键盘上输入两个整数,保存在变量a 和b 中。

scanf(“%d%d”,&a,&b);

例2 从键盘上输入一个双精度数,保存在变量data 中。

scanf(“%lf”,&data);

此处两例中&是 C 语言运算符,表示取变量地址。

●复合语句

格式: {语句1 语句2 ….语句n}

例1 用复合语句将变量a,b,c 依次赋值为最小素数。

{ a=2; b=3; c=5; }

例2 用复合语句实现变量a 和b 的值的交换。

{ k=a; a=b; b=k; }

●不带参数的宏#define PI 3.14159 意思是用符号常

量PI(宏名)代替3.14159(宏体),注意:宏定义不是c 语句, 后面不加分号.

●带参数的宏. #define m(x) x*x*x*x

意思是m(x)代替x 的4 次方,x 不用定义,可以在使用中换成需要的字母.

带参数的宏的展开,如:

#define m(x) x*x*x*x

printf("%d", m(1+1));

m(1+1)的宏展开式为:1+1*1+1*1+1*1+1 计算结果为5

再如:

#define m(x) (x)*(x)*(x)*(x)

printf("%d", m(1+1));

m(1+1)的宏展开式为:(1+1)*(1+1)*(1+1)*(1+1)计算结果为16

●include 命令是编译预处理的文件包含命令,形式为了

#include <文件名>或者#include"文件名",调用标准函数中的输入输出函数,#include "stdio.h" ,如果调用数学函数(如sqrt 函数、fabs 函数等),则应加上#include

"math.h " 或者#include

四、分支结构

●关系运算符

>、<、>=、<=、==、!=

关系运算的结果只有两种: 真或假

C 语言中用1 表示真,用0 表示假。

例1 6>=6 ‘a’>’A’‘5’>’‘结果均为真,值为1 例2 6!=6 ‘D’==’d’‘9’>’F’结果均为假,值为0

●逻辑运算符

&&(与) ||(或) !(非)

优先级: 非运算>与运算>或运算

非运算规则

操作数结果

真假

假真

与运算规则

操作数1 操作数2 结果

真真真

真假假

假真假

假假假

或运算规则

操作数1 操作数2 结果

真真真

真假真

假真真

假假假

例1 若变量a 值为10,变量b 值为16,计算表达式。

a>b || a>sqrt(b) && b>=16

最后结果为真,表达式的值为 1

●if 语句的一般形式:

单分支结构:

if(表达式) 语句

若表达式为真,则执行语句;否则if 语句结束。

二选一结构:

if(表达式)

{语句组1}

else

{语句组2}

表达式的值非0 才执行语句组1,否则执行语句组2.

例1 从键盘上输入两个整数,输出较大的数。

#include

main()

{

int x,y;

printf(“请输入两个整数:\n”);

scanf(“%d%d”,&x,&y);

if (x>y)

printf(“%d”,x);

else

printf(“%d”,y);

}

●条件运算符

格式: 表达式1? 表达式2: 表达式3

若表达式1 为真,结果为表达式2;否则为表达式3。例如: x 的初值为5,执行以下语句

y=++x>6?100:200; 最后y 的值为200

●if 语句可嵌套,在花括号里继续使用.

多选一结构:

if(表达式1)

{语句组1}

else if(表达式2)

{语句组2}

else if(表达式3)

{语句组3}

else

{语句组n}

例1 根据输入的学生成绩,大于或等于90 分为A,60 分以下等级为E,其余每10 分一个等级。

#include

main()

{

int g;

printf(“请输入一个整数:\n”);

scanf(“%d”,&g);

if (g>=90) printf(“A\n”);

else if(g>=80) printf(“B\n”);

else if(g>=70) printf(“C\n”);

else if(g>=60) printf(“D\n”);

else printf(“E\n”);

}

●switch(表达式) // switch 表达式通常为整型或字符型值 {

case 常量1:语句组1 //case 后面必须是常量

case 常量2:语句组2

.........

default:语句组//也可省略该语句

}

可以使用中break 来中止后面语句的执行.

相关主题
相关文档
最新文档