admin 管理员组

文章数量: 1184232


2024年2月23日发(作者:linux系统安装win软件)

全国计算机二级C语言(完整复习资料)

考试题型

(1)选择。——40(40个)

(2)程序填空。——18(1个)

(3)程序改错。——18(1个)

(4)程序编程。——24(1个)

考试时间3.30-4.3

120min 无纸化考试

进制之间的转换

二进制与八进制之间的联系:

二进制 八进制

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7 如00100000则000 100 000(二进制)

0 4 0(八进制)

十进制转二进制:除2取余法

二进制转十进制:2的幂次法

八进制转十进制:除8取余法

附录很重要!!尤其是红色字体的。

附录A 常用字符与ASCII代码对照表(这个记048,065,097三个就好)

ASCⅡ值

000

001

002

003

004

005

006

007

008

009

010

011

012

013

014

015

016

017

018

019

020

021

022

023

024

025

026

027

字符

NUL

SOH

STX

ETX

EOT

END

ACK

BEL

BS

HT

LF

VT

FF

CR

SO

SI

DLE

DC1

DC2

DC3

DC4

NAK

SYN

ETB

CAN

EM

SUB

ESC

ASCⅡ值

037

038

039

040

041

042

043

044

045

046

047

048

049

050

051

052

053

054

055

056

057

058

059

060

061

062

063

064

字符

%

&

(

)

*

+

-

/

0

1

2

3

4

5

6

7

8

9

<

=

>

?

@

ASCⅡ值

074

075

076

077

078

079

080

081

082

083

084

085

086

087

088

089

090

091

092

093

094

095

096

097

098

099

100

101

字符

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

[

]

^

_

,

a

b

c

d

e

ASCⅡ值

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

字符

O

p

q

r

s

t

u

v

w

x

y

z

{

|

}

~

ASCⅡ值

028

029

030

031

032

033

034

035

036

字符

FS

GS

RS

US

(space)

!

#

$

ASCⅡ值

065

066

067

068

069

070

071

072

073

字符

A

B

C

D

E

F

G

H

I

ASCⅡ值

102

103

104

105

106

107

108

109

110

字符

f

g

h

i

j

k

l

m

n

ASCⅡ值

字符

附录B C语言中的关键字

auto

continue

enum

if

short

switch

volatile

break

default

extern

int

signed

typedef

while

case

do

float

long

sizeof

union

char

double

for

register

static

unsigned

const

else

goto

return

struct

void

附录C 运算符和结合性

要 求 运 算

对象的个数

优先级 运 算 符

( )

[ ]

含 义

圆括号

下标运算符

指向结构体成员运算符

结构体成员运算符

逻辑非运算符

按位取反运算符

自增运算符

自减运算符

负号运算符

类型转换运算符

指针运算符

取地址运算符

结合方向

1

->

·

!

~

++

--

-

(类型)

*

&

自左至右

2

1

(单目运算符)

自右至左

优先级 运 算 符

sizeof

*

含 义

长度运算符

乘法运算符

除法运算符

求余运算符

加法运算符

减法运算符

左移运算符

右移运算符

关系运算符

等于运算符

不等于运算符

按位与运算符

按位异或运算符

按位或运算符

逻辑与运算符

逻辑或运算符

条件运算符

逗号运算符(顺序求值运算符)

要 求 运 算

对象的个数

结合方向

3 /

%

+

-

<<

>>

< <= > >=

==

!=

&

|

&&

| |

? :

,

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

2

(双目运算符)

3

(三目运算符)

自左至右

4

5

6

7

8

9

10

11

12

13

15

自左至右

自左至右

自左至右

自左至右

自左至右

自左至右

自左至右

自左至右

自左至右

自右至左

自左至右

说明:

(1) 同一优先级的运算符,运算次序由结合方向决定。例如*与/具有相同的优先级别,其结合方向为自左至右,因此3*5/4的运算次序是先乘后除。-和++为同一优先级,结合方向为自右至左,因此-i++相当于-(i++)。

(2) 不同的运算符要求有不同的运算对象个数,如+(加)和-(减)为双目运算符,要求在运算符两侧各有一个运算对象(如3+5、8-3等)。而++和-(负号)运算符是单目运算符,只能在运算符的一侧出现一个运算对象(如-a、i++、--i、(float) i、sizeof (int)、*p等)。条件运算符是C语言中惟一的一个三目运算符,如x?a:b。

(3) 从上表中可以大致归纳出各类运算符的优先级:

初等运算符 ( ) [ ] ->·

单目运算符

算术运算负 (先乘除,后加减)

关系运算符

逻辑运算符 (不包括!)

条件运算符

赋值运算符

逗号运算符

以上的优先级别由上到下递减。初等运算符优先级最高,逗号运算符优先级最低。位运算符的优先级比较分散(有的在算术运算符之前(如~),有的在关系运算符之前(如<<和>>),有的在关系运算符之后(如&、∧、¦))。为了容易记忆,使用位运算符时可加圆括号。

附录E C库函数

1. 数学函数

使用数学函数时,应该在该源文件中使用以下命令行:

# include 或# include "math.h"

函数名

abs

acos

asin

atan

atan2

cos

cosh

exp

fabs

floor

函数原型

int abs (int x);

double acos (double x);

double asin (double x);

double atan (double x);

功 能

求整数x的绝对值

计算cos-1(x)的值

计算sin-1(x)的值

计算tan-1(x)的值

返回值

计算结果

计算结果

计算结果

计算结果

计算结果

计算结果

计算结果

计算结果

计算结果

该整数的双精度实数

返回余数的双精度数

x应在-1到1范围内

x应在-1到1范围内

x的单位为弧度

说 明

double atan2 (double x,

计算tan-1(x/y)的值

double y);

double cos (double x);

double cosh (double x);

double exp (double x);

double fabs (double x);

double floor (double x);

计算cos(x)的值

计算x的双曲余弦cosh(x)的值

求ex的值

求x的绝对值

求出不大于x的最大整数

fmod

double fmod (double x,

求整除x/y的余数

double y);

把双精度数val分解为数字部分(尾double frexp(double val,

数)x和以2为底的int *eptr); 指数n,即val=x*2n,n存放在eptr指向的变量中

double log (double x);

求logex,即ln x

frexp

返回数字部分x

0.5≤x<1

log

计算结果

函数名

log10

函数原型

double log10 (double x);

功 能

求log10x

返回值

计算结果

说 明

modf

把双精度数val分解为整数部分和小double modf(double val,

数部分,把整数部int *iptr);

分存在iptr指向的单元

double pow (double x,

计算xy的值

double y);

int rand (void);

double sin (double x);

double sinh (double x);

double sqrt (double x);

double tan (double x);

double tanh (double x);

产生-90到32767间的随机整数

计算sinx的值

计算x的双曲正弦函数sinh(x)的值

计算x

计算tan(x)的值

计算x的双曲正切函数tanh(x)的值

val的小数部分

pow

rand

sin

sinh

sqrt

tan

tanh

计算结果

随机整数

计算结果

计算结果

计算结果

计算结果

计算结果

x的单位为弧度

x应≥0

x的单位为弧度

2. 字符函数和字符串函数

ANSI C标准要求在使用字符串函数时要包含头文件“string.h”,在使用字符函数时要包含头文件“ctype.h”。有的C编译不遵循ANSI C标准的规定,而用其他名称的头文件。请使用时查有关手册。

函数名

isalnum

isalpha

函数原型

int isalnum (int ch);

int isalpha (int ch);

功 能

检查ch是否是字母(alpha)或数字(numeric)

检查ch是否字母

检查ch是否控制字符(其ASCII码在0和0x1F之间)

检查ch是否数字(0~9)

检查ch是否可打印字符(其ASCII码在ox21到ox7E之间),不包括空格

检查ch是否小写字母(a~z)

返回值

是字母或数字返回1;否则返回0

是,返回1;不是,则返回0

是,返回1;不是,返回0

是,返回1;不是,返回0

是,返回1;不是,返回0

是,返回1;不是,返回0

包含文件

ctype.h

ctype.h

iscntrl int iscntrl (int ch); ctype.h

isdigit int isdigit (int ch); ctype.h

isgraph int isgraph (int ch); ctype.h

islower int islower (int ch); ctype.h

isprint

ispunct

int isprint (int ch);

int ispunct (int ch);

检查ch是否可打印字是,返回1;不符(包括空格),其ASCII是,返回0

码在ox20到ox7E之间

检查ch是否标点字符是,返回1;不ctype.h

ctype.h

函数名 函数原型 功 能

(不包括空格),即除字母、数字和空格以外的所有可打印字符

返回值

是,返回0

包含文件

isspace

isupper

int isspace (int ch);

int isupper (int ch);

检查ch是否空格、跳格符(制表符)或换行符

检查ch是否大写字母(A~Z)

是,返回1;不是,返回0

是,返回1;不是,返回0

ctype.h

ctype.h

isxdigit int isxdigit (int ch);

检查ch是否一个十六是,返回1;不进制数字字符(即0~9,是,返回0

或A到F,或a~f)

str1

返回指向该位置的指针,如找不到,则返回空指针

str1

str1=str2,返回0;

str1>str2,返回正数

返回str1

ctype.h

strcat

把字符串str2接到str1char * strcat (char *

后面,str1最后面的'0'str1, char * str2);

被取消

找出str指向的字符串char * strchr (char * str,

中第一次出现字符chint ch);

的位置

string.h

strchr string.h

strcmp

int strcmp (char * str1, 比较两个字符串str1,str2

char * str2);

string.h

strcpy

int strcpy (char * str1, 把str2指向的字符串复char * str2); 制到str1中去

统计字符串str中字符unsigned int strlen (char

的个数(不包括终止符* str);

'0')

找出str2字符串在str1int strstr (char * str1, 字符串中第一次出现的char * str2); 位置(不包括str2的串结束符)

int tolower (int ch);

int toupper (int ch);

将ch字符转换为小写字母

将ch字符转换成大写字母

string.h

strlen

返回字符个数

string.h

strstr

返回该位置的指针,如找不到,返回空指针

返回ch所代表的字符的小写字母

与ch相应的大写字母

string.h

tolower

toupper

ctype.h

ctype.h

3. 输入输出函数

凡用以下的输入输出函数,应该使用# include把stdio.h头文件包含到源程序文件中。

函数名

clearerr

close

函数原型 功 能 返回值

非ANSI标说明

使fp所指文件的错误,void clearerr (FILE *

标志和文件结束标志置无

fp);

0

int close (int fp);

关闭文件 关闭成功返回

函数名 函数原型 功 能 返回值

0;否则返回-1 准

说明

creat

int creat (char * filen- 以mode所指定的方式ame, int mode);

建立文件

Int eof (int fd);

检查文件是否结束

关闭fp所指的文件,释放文件缓冲区

检查文件是否结束

成功则返回正非ANSI标数;否则返回-1 准

遇文件结束,返回1;否则返回0

有错则返回非0;否则返回0

遇文件结束符返回非零值;否则返回0

返回所得到的字符,若读入出错,返回EOF

返回地址buf,若遇文件结束或出错,返回NULL

非ANSI标准

eof

fclose

int fclose (FILE * fp);

feof

int feof (FILE * fp);

fgetc

int fgetc (FILE * fp);

从fp所指定的文件中取得下一个字符

fgets

从fp指向的文件读取一char * fgets (char * bu- 个长度为(n-1)的字符f, int n, FILE * fp); 串,存入起始地址为buf的空间

fopen

成功,返回一个文件指针(文件FILE * fopen (char * f- 以mode指定的方式打信息区的起始ormat, args, ...);

开名为filename的文件

地址);否则返回0

把args的值以format指int fprintf (FILE * fp,

定的格式输出到fp所指char * format, args, ...);

定的文件中

int fputc (char ch, FILE

将字符ch输出到fp指* fp); 向的文件中

int fputs (char * str, 将str指向的字符串输FILE * fp); 出到fp所指定的文件

从fp所指定的文件中读int fread (char * pt,

取长度为size的n个数unsigned size, unsigne-

据项,存到pt所指向的d n, FILE * fp);

内存区

从fp指定的文件中按format给定的格式将输int fscanf (FILE * fp,

入数据送到args所指向char format, args, ...);

的内存单元(args是指针)

将fp所指向的文件的位int fseek (FILE * fp,

置指针移到以base所给long offset, int base);

出的位置为基准、以实际输出的字符数

成功,则返回该字符;否则返回非0

成功返回0;若出错返回非0

返回所读的数据项个数,如遇文件结束或出错返回0

fprintf

fputc

fputs

fread

fscanf

已输入的数据个数

fseek

返回当前位置;

否则,返回-1

函数名 函数原型 功 能

offset为位移量的位置

返回值

返回fp所指向的文件中的读写位置

写到fp文件中的数据项的个数

返回所读的字符,若文件结束或出错,返回EOF

说明

ftell

long ftell (FILE * fp);

返回fp所指向的文件中的读写位置

fwrite

int fwrite (char * ptr, 把ptr所指向的n * sizeunsigned size, unsigne-

个字节输出到fp所指向d n, FILE * fp); 的文件中

从fp所指向的文件中读入一个字符

getc

int getc (FILE * fp);

getchar int getchar (void);

从标准输入设备读取下一个字符

从fp所指向的文件读取下一个字(整数)

所读字符。若文件结束或出错,

则返回-1

输入的整数。如文件结束或出错,返回-1

返回文件号(正数);如打开失败,返回-1

输出字符的个数,若出错,返回负数

非ANSI标准函数

非ANSI标准函数

format可以是一个字符串,或字符数组的其实地址

getw

int getw (FILE * fp);

open

以mode指出的方式打int open (char * filena-

开已存在的名为me, int mode);

filename的文件

按format指向的格式字int printf (char * form- 符串所规定的格式,将at, args, ...);

输出表列args的值输出到标准输出设备

int putc (int ch, FILE * 把一个字符ch输出到fp);

fp所指的文件中

把字符ch输出到标准输出设备

把str指向的字符串输出到标准输出设备,将'0'转换为回车换行

printf

putc

输出的字符ch,若出错,返回

EOF

输出的字符ch,若出错,返回

EOF

返回换行符,若

失败,返回EOF

返回输出的整数,若出错,返回EOF

返回正真读入的字节个数,如遇文件结束返回0,出错返回-1

成功返回0;出非ANSI标准函数

putchar int putchar (char ch);

puts

int puts (char * str);

putw

将一个整数w(即一个int putw (int w, FILE *

字)写到fp指向的文件fp);

从文件号fd所指示的文int read (int fd, char *

件中读count个字节到buf, unsigned count);

由buf指示的缓冲区中

int rename (char * old- 把由oldname所指的文read

非ANSI标准函数

rename

函数名 函数原型 功 能 返回值

错返回-1

说明

name, char * newnam- 件名,改为由newnamee);

所指的文件名

将fp指示的文件中的位void rewind (FILE * 置指针置于文件开头位fp);

置,并清除文件结束标志和错误标志

rewind

scanf

读入并赋给args从标准输入设备按for-

的数据个数,遇int scanf (char * forma- mat指向的格式字符串文件结束返回t, args, ...);

所规定的格式,输入数EOF,出错返回据给args所指向的单元

0

从buf指示的缓冲区输int write (int fd, char *

出count个字符到fd所buf, unsigned count);

标志的文件中

返回实际输出的字节数,如出错返回-1

args为指针

write

非ANSI标准函数

4. 动态存储分配函数

ANSI标准建议设4个有关的动态存储分配的函数,即calloc( )、malloc( )、free( )、realloc( )。实际上,许多C编译系统实现时,往往增加了一些其他函数。ANSI标准建议在“stdlib.h”头文件中包含有关的信息,但许多C编译系统要求用“malloc.h”而不是“stdlib.h”。读者在使用时应查阅有关手册。

ANSI标准要求动态分配系统返回void指针。void指针具有一般性,它们可以指向任何类型的数据。但目前有的C编译所提供的这类函数返回char指针。无论以上两种情况的哪一种,都需要用强制类型转换的方法把void或char指针转换成所需的类型。

函数名

calloc

free

malloc

函数原型 功 能 返回值

分配内存单元的起始地址,如不成功,返回0

所分配的内存区起始地址,如内存不够,返回0

返回指向该内存区的指针

分配n个数据项的内存连void * calloc (unsigned n,

续空间,每个数据项的大unsign size);

小为size

void free (void * p); 释放p所指的内存区

void * malloc (unsigned

分配size字节的存储区

size);

将p所指出的已分配内存void * realloc (void * p, 区的大小改为size,sizeunsigned size);

可以比原来分配的空间大或小

realloc

◆ 基本要求

1.熟悉 Visual C++ 6.0 集成开发环境。

2.掌握结构化程序设计的方法,具有良好的程序设计风格。

3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4.在 Visual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力

◆ 考试内容

一、C语言程序的结构

1.程序的构成,main函数和其他函数。

2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。

3.源程序的书写格式。

4.C语言的风格。

二、数据类型及其运算

1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。

2.C运算符的种类、运算优先级和结合性。

3.不同类型数据间的转换与运算。

4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

三、基本语句

1.表达式语句,空语句,复合语句。

2.输入输出函数的调用,正确输入数据并正确设计输出格式。

四、选择结构程序设计

1.用if语句实现选择结构。

2.用switch语句实现多分支选择结构。

3.选择结构的嵌套。

五、循环结构程序设计

循环结构。

和do-while循环结构。

ue语句和break语句。

4.循环的嵌套。

六、数组的定义和引用

1.一维数组和二维数组的定义、初始化和数组元素的引用。

2.字符串与字符数组。

七、函数

1.库函数的正确调用。

2.函数的定义方法。

3.函数的类型和返回值。

4.形式参数与实在参数,参数值传递。

5.函数的正确调用,嵌套调用,递归调用。

6.局部变量和全局变量。

7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

八、编译预处理

1.宏定义和调用(不带参数的宏,带参数的宏)。

2.“文件包含”处理。

九、指针

1.地址与指针变量的概念,地址运算符与间址运算符。

2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结

构体的指针变量的定义。通过指针引用以上各类型数据。

3.用指针作函数参数。

4.返回地址值的函数。

5.指针数组,指向指针的指针。

十、结构体(即“结构”)与共同体(即“联合”)

1.用typedef说明一个新类型。

2.结构体和共用体类型数据的定义和成员的引用。

3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。

十一、位运算

1.位运算符的含义和使用。

2.简单的位运算。

十二、文件操作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。

1.

文件类型指针(FILE类型指针)

2.文件的打开与关闭(fopen,fclose)。

3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。

第一部分 C语言考试大纲知识复习资料

第一章 C语言基本知识

【考点1】C程序

用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数

又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。

【考点3】存储形式

计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。

【考点4】注释

是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

【考点5】书写格式

每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。

【考点6】标识符

是标识名字的有效字符序列,可以理解为C程序中的单词。

标识符的命名规则是:

(1)标识符只能由字母、数字和下划线组成,字母区分大小写。

(2)标识符的第一个字符必须是字母或下划线,不能为数字。

C语言标识符分如下3类

(1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。

(2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。

(3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。

【考点7】常量与变量

常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。

【考点8】整型数据

整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。

整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。

【考点9】实型数据

实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。

口诀:E前E后必有数,E后必须为整数。

实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。

【考点10】算术运算

算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。

【考点11】强制类型转换

将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。

【考点12】赋值

赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

复合赋值运算符是将算术运算符或位运算符与赋值运算符组合在一起组成的运算符,掌握复合赋值表达式转化为赋值表达式的方法。如n+=100可转化为n=n+100。

【考点13】自加自减运算

自加运算符“++”与自减运算符“--”是单目运算符,运算对象必须是变量。自增自减运算分前缀运算和后缀运算,它们所对应的表达式的值是有区别的,如j=i++;等价于j=i;i=i+1;而j=++i;等价于i=i+1;j=i;。

口诀:加加在前先加后用,加加在后先用后加。

【考点14】逗号运算

逗号运算符运算优先级最低,可将多个表达式构成一个新的表达式。

第二章 顺序结构

【考点1】运算符、表达式、语句

运算对象加运算符构成表达式,表达式加分号构成表达式语句,运算对象可以是表达式、常量、变量。如赋值运算符加运算对象构成赋值表达式,赋值表达式加分号又可构成赋值语句。

【考点2】运算符的优先级和结合顺序

运算符按参加运算的对象数目可分为单目运算符、双目运算符和三目运算符。初等运算符的优先级别最高,然后依次是单目运算符、算术运算符、关系运算符、逻辑运算符(除逻辑非!)、条件运算符、赋值运算符、逗号运算符。位运算符优先级介于算术运算符与逻辑运算符之间。结合顺序大多为自左向右,而自右向左的有三个:单目运算符、条件运算符和赋值运算符。

【考点3】printf函数

格式为:printf(输出控制,输出列表)。输出控制是用一对双引号括起来的,包含格式说明和原样信息。输出列表包含若干输出项。

【考点4】printf函数中格式说明

%d对应整型,%f对应单精度实型,%c对应字符型,%o对应八进制无符号整型,%x对应无符号十六进制整型,%u对应无符号整型,%e对应指数型,%s对应字符串型。可在%和格式字符之间加一个数来控制数据所占的宽度和小数位数。

【考点5】scanf函数

输入项要求带取地址符&。当用键盘输入多个数据时,数据之间用分隔符。

分隔符包括空格符、制表符和回车符,但不包括逗号。

【考点】6如何交换两个变量

要使用中间变量,语句为:t=x; x=y; x=t;。

第三章 选择结构

【考点1】关系运算

C语言用非0表示逻辑真,用0表示逻辑假。关系运算符有6个,分别是>,>=,<,<=,==,!=,前四种优先级高于后两种。关系表达式真时为1,假时为0。注意a

【考点2】逻辑运算

逻辑运算符共有3个:逻辑与(&&),逻辑或(||),逻辑非(!)。注意短路现象,例a++||b++,如果表达式a++的值非零,则表达式b++不再执行。

【考点3】if语句

可以单独出现,也可以与else匹配出现。if语句可以嵌套,这时else总是与离它最近的且没有与else匹配的if匹配。

【考点4】条件运算

是唯一的三目运算符,格式为:表达式1?表达式2:表达式3。表达式1值为非0时,整个表达式值为表达式2的值,表达式1值为0时,整个表达式值为表达式3的值。

口诀:真前假后

【考点5】switch语句

格式及执行过程详见教材P33,要注意每条case后有没有break语句的区别。还要注意switch后小括号里面的表达式不能为实型,case后表达式不能有变量。

口诀:switch表不为实,case表不为变。

第四章 循环结构

【考点1】三种循环结构

三种循环结构分别为:while,do-while,for,三种结构的格式及执行顺序详见教材第36、39、40页。注意for循环中的小括号中必须是两个分号;循环一定要有结束条件,否则成了死循环;do-while()循环最后的while();后一定要有分号。

【考点2】break与continue

break是终止所在整个循环,而continue是提前结束本轮循环。break语句可出现在循环结构与switch语句中,continue只出现在循环结构中。

【考点3】循环的嵌套

就是循环里面还有循环,计算要一层一层分析,一般只考查两层嵌套,循环嵌套通常是处理二维数组。

【考点4】循环结构的复习

循环结构是重点,笔试所占分值一般在13分左右,在上机考试中也是必考点,应用性很强。要求学员重点理解并多加练习,领会掌握。

第五章 字符型数据 位运算

【考点1】字符常量

一个字符常量用一对单引号括起来,字符常量只能包括一个字符,’ab’是非法的。空格常用’□’来表示。字符常量可用对应的ASCII码表示,需记住:’0’的ASCII码为48,’A’的ASCII码为65,’a’的ASCII码为97。

【考点2】转义字符

一对单引号中以一个反斜线后跟一个特定字符或八进制、十六进制数来构成转义字符。比如’n’表示换行,’101’或’x41’表示ASCII码为65的字符’A’。

【考点3】字符型数据可以和整型数据相互转换

如:’0’-0=48 ‘A’+32=’a’ char a=65;printf(“%d%c”,a,a);结果为65A

【考点4】位运算符

C语言提供6种位运算符:按位求反~,按位左移<<,按位右移>>,按位与&,按位异或|,按位或^。一般情况下需要先转化进制。异或运算的规则:0异或1得到1,0异或0得到0,1异或1得到0。可记为“相同为0,不同为1”。

【考点5】putchar与getchar函数

可用于输出或输入单个字符,这两个函数是stdio.h文件中的库函数,它们是printf与scanf函数的简化。

第六章 函数

【考点1】函数的定义

函数是具有一定功能的一个程序块。函数的首部为:函数类型 函数名(类型1 形参1,类型2 形参2,……)。在函数定义中不可以再定义函数,即不能嵌套定义函数。函数类型默认为int型。

【考点2】库函数

调用C语言标准库函数时要包含include命令,include命令行以#开头,后面是””或<>括起来的后缀为”.h”的头文件。以#开头的一行称为编译预处理命令行,编译预处理不是C语言语句,不加分号,不占运行时间。

【考点3】函数的返回值

函数通过return语句返回一个值,返回的值类型与函数类型一样。return语句只执行一次,执行完或函数体结束后退出函数。

【考点4】函数的声明

函数要“先定义后调用”,或“先声明再调用后定义”。函数的声明一定要有函数名、函数返回值类型、函数参数类型,但不一定要有形参的名称。

【考点5】函数的调用

程序从上往下执行,当碰到函数名后,把值传给调用函数,当程序得到了返回值或调用函数结束,再顺序往下执行。

【考点6】函数的参数及值传递

形式参数简称形参,是定义函数时函数名后面括号中的参数。实在参数简称实参,是调用函数时函数名后面括号中的参数。实参和形参分别占据不同的存储单元。实参向形参单向传递数值。

“传值”与“传址”的区别:传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就有可能改变实参所对应的量。

【考点7】函数的递归调用

函数直接或间接地调用自己称为函数的递归调用。递归调用必须有一个明确的结束递归的条件。在做递归题时可把递归的步骤一步步写下来,不要弄颠倒了。

【考点8】要求掌握的库函数

sqrt()算术平方根函数,fabs()绝对值函数,pow()幂函数,sin()正弦函数

第七章 指针

【考点1】指针变量

指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。

【考点2】指针变量的定义

格式为:类型名 *指针变量名。二维指针int **p;可以理解为基类型为(int

*)类型。

【考点3】指针变量的初始化

指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。

【考点4】指针变量的引用

&是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。

【考点5】指针的运算

*p++和(*p)++之间的差别:*p++是地址变化,(*p)++是指针变量所指的数据变化。一个指针变量加一个整数不是简单的数学相加,而是连续移动若干地址。当两个指针指向同一数组时,它们可以比较大小进行减法运算。

第八章 数组

【考点1】数组的定义

数组是一组具有相同类型的数据的集合,这些数据称为数组元素。格式为:类型名 数组名[常量表达式]。数组的所占字节数为元素个数与基类型所占字节数的乘积。

【考点2】数组的初始化

第一维长度可以不写,其它维必须写。int a[]={1,2};合法,int

a[][3]={2,3,4};合法,int a[2][]={2,3,4};非法。数组初始化元素值默认为0,没有初始化元素值为随机。如在int a[5]={0,1,2};中,元素a[4]值为0;而在int a[5];中,元素a[4]值为一个不确定的随机数。

【考点3】元素的引用

数组元素的下标从0开始,到数组长度减1结束。所以int a[5];中数组最后一个元素是a[4]。要把数组元素看作一个整体,可以把a[4]当作一个整型变量。

【考点4】二维数组

数组a[2][3]={1,2,3,4,5,6};中含6个元素,有2行3列。第一行为a[0]行,第2行为a[1]行,a[0]、a[1]叫行首地址,是地址常量。*(a[0]+1)是第一行第一个元素往后跳一列,即元素a[0][1]值为2,*(a[0]+3)是第一行第一个元素往后跳三个,即元素a[1][0]值为4。

【考点5】行指针

是一个指针变量,占四个字节,行指针指向一行连续数据,形式为:int

(*p)[2];,p只能存放含有两个整型元素的一维数组的首地址。注意(*p)两边的小括号不能省略,否则就成了指针数组,是若干指针元素的集合。

【考点6】数组名

数组名是数组的首地址。数组名不能单独引用,不能通过一个数组名代表全部元素。数组名是地址常量,不能对数组名赋值,所以a++是错误的。但数组名可以作为地址与一个整数相加得到一个新地址。

【考点7】元素形式的转换

助记:“脱衣服法则”a[2]变成*(a+2),a[2][3]变成*(a+2)[3]再可变成*(*(a+2)+3)。

第九章 字符串

【考点1】字符串常量及表示

字符串常量是由双引号括起来的一串字符,如”ABC”。在存储字符串时,系统会自动在其尾部加上一个空值’0’,空值也要占用一个字节,也就是字符串”ABC”需要占四个字节。

【考点2】字符数组

C语言没有字符串变量,只能采用字符数组来存储字符串。数组的大小应该比它将要实际存放的最长字符串多一个元素,从而存放’0’。

【考点3】字符串赋值

可以用下面的形式进行赋值:char str[]=”Hello!”;或char *p;p=”Hello!”;,但不能用下面的形式:char str[10];str=”Hello”;因为str是一个地址常量,不能进行赋值操作。

【考点4】字符串的输入与输出

可以用scanf和printf函数,如scanf(”%s”,str);,也可用专门处理字符串的两个函数gets和puts函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个’0’。使用gets函数可以接收空格,使用puts函数在最后输出一个换行。

【考点5】字符串函数

要掌握的四个字符串函数:字符串拷贝函数strcpy(),求字符串长度函数strlen(),字符串链接函数strcat(),字符串比较函数strcmp()。使用这些

函数需在预处理部分包含头文件”string.h”。

字符串长度要小于字符数组的长度,例:char str[10]=”Hello”;sizeof(str)的值为10(数组长度),strlen(str)的值为5(字符串长度)。这些函数是考试常用到的函数,大家一定要熟练应用这几个函数。

第十章 结构体与共用体

【考点1】结构体类型的说明

结构体是若干个类型数据的集合,结构体类型说明格式如下:struct 类型名 {类型1 成员名1;类型2 成员名2;……};,以上整个部分是一个数据类型,与整型的int是同样地位。可用typedef把结构体类型替换成一个只有几个字母的简短标识符。

【考点2】结构体变量的定义

结构体变量是用说明的结构体类型所定义的一个变量,与结构体类型不是一回事。一个结构体变量所占字节数为其所有成员所占字节数之和。如struct

stu{char name[10];int age;} a,b;则表明定义了两个结构体变量a,b,每个变量占14个字节。a,b与int i,j;中的变量i,j是同样地位。

【考点3】结构体成员的引用

引用成员可用以下3种方式:(1)结构体变量名.成员名;(2)指针变量名->成员名:(3)(*指针变量名).成员名。点(.)称为成员运算符,箭头(->)称为结构指向运算符。

【考点4】链表

链表是由一个个结点构成的,一个结点就是一个结构体变量。每个结点可以分为数据域与指针域两个部分,数据域用来存放要存储的数据,指针域用来指向

下一个结点。链表是考试中的难点,在C语言和公共基础部分都会考到,要领悟掌握。

【考点5】共用体

共用体的使用格式与结构体相似,共用体定义的关键字为union,共用体所占字节数是所有成员中字节数最大的那个。

第十一章 文件

【考点1】文件类型指针

文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。

【考点2】文本文件与二进制文件

文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就是存储’1’、 ’0’、 ’0’三个字符的ASCII码(00110001

00110000 00110000),如果是二进制形式就把100转化成二进制(01100100)。

【考点3】打开文件

文件的打开形式如下:FILE *fp; fp=fopen(“c:lab.c”,”rb”);。fopen函数的前面一部分为文件名,后面一部分为文件的使用方式。打开方式详见教材第127页,其中r代表读,w代表写,a代表添加,b代表二进制位的。

【考点4】文件函数

判断文件结束feof函数,移动文件指针位置fseek函数,获得文件位置ftell函数,文件位置移到开头rewind函数,文件字符输入输出fgetc函数和fputc函数,文件输入输出fscanf函数和fprintf函数,文件字符串输入输出fgets函数和fputs函数,读写二进制文件fread函数和fwrite函数。

以上函数要求知道格式会用,清楚是用于二进制文件还是文本文件,要把教材文件这章仔细复习下,不要在考试的时候把这些文件函数搞混了。

第十二章 深入讨论

【考点1】编译预处理

凡以#开头的这一行,都是编译预处理命令行,编译预处理不加分号,不占运行时间。宏替换仅是简单的文本替换,如#define f(x) (x)*(x)和#define

f(x) x*x替换f(2+2)时就有区别,前者展开为(2+2)*(2+2),后者为2+2*2+2。

如果源文件f2.c中有#include”f1.c”可以理解为把源文件f1.c原样包含到f2.c中,使f1.c和f2.c融合到一起成为一个C程序编译。所以一个C程序必有主函数,但一个C源文件未必有主函数。

【考点2】标识符作用域

局部变量是在函数内或复合语句内定义的变量,作用域为定义它的函数内。局部变量有三种类型:自动auto,寄存器register和静态static。

自动变量随着函数的使用与否创建消失;寄存器变量分配在cpu中,没有内存地址;静态变量占用固定存储单元,在程序执行过程不释放,直到程序运行结束。

全局变量是在函数外定义的变量,作用域从定义它的位置到整个源文件结束为止,生存期为整个程序运行期间。全局变量都是静态变量。

【考点3】动态存储分配

malloc(size)用来创建连续size个字节存储区,返回值类型为void *型。malloc函数常用于动态创建链表结点,如*)malloc(sizeof(int));。

int *p; p=(int

calloc(n,size)创建n个同一类型的存储空间,可以理解为n个malloc。

free(p)释放动态分配的存储单元。

总体上必须清楚的:

1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和

switch)

2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以 二进制的形式. 数据存放的位置就是 他的地址.

4)bit是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.

5)一定要记住 二进制 如何划成 十进制。

概念常考到的:

1、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

第一章

1)合法的用户标识符考查:

合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。

关键字不可以作为用户标识符号。main define scanf printf 都是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式:

2.333e-1 就是合法的,且数据是2.333×101

考试口诀:e前e后必有数,e后必为整数。.

3)字符数据的合法形式::

'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。

'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。

4) 整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:

考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。

5)转义字符的考查:

在程序中 int a = 0x6d,是把一个十六进制的数给变量a,注意这里的0x必须存在。

在程序中 int a = 06d, 是一个八进制的形式。

在转义字符中,’x6d’ 才是合法的,0不能写,并且x是小写。

‘141’ 是合法的。

‘108’是非法的,因为不可以出现8。

转义字符 意义 ASCII码值(十进制)

a 响铃(BEL) 007

b 退格(BS) 008

f 换页(FF) 012

n 换行(LF) 010

r 回车(CR) 013

t 水平制表(HT) 009

v 垂直制表(VT) 011

反斜杠 092

? 问号字符 063

' 单引号字符 039

" 双引号字符 034

0 空字符(NULL) 000

ddd 任意字符 三位八进制

xhh 任意字符 二位十六进制

6)算术运算符号的优先级别:

同级别的有的是从左到右,有的是从右到左。

7)强制类型转换:

一定是 (int)a 不是 int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。

8)表达式的考查:

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这

个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,

再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

9)位运算的考查:

会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。

例1: char a = 6, b;

b = a<<2; 这种题目的计算是先要把a的十进制6化成二进制,再做

位运算。

一定要记住, 在没有舍去数据的时候,<<左移一位表示乘以2;>>右移一位表示除以2。

10)018的数值是非法的,八进制是没有8的,逢8进1。

11)%符号两边要求是整数。不是整数就错了。

12) 两种取整丢小数的情况:

1、int a =1.6;

2、(int)a;

第二章

1)printf函数的格式考查:

%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。

%ld对应 long int;%lf 对应double。

2)scanf函数的格式考察:

注意该函数的第二个部分是&a 这样的地址,不是a;

Scanf(“%d%d%*d%d”,&a,&b,&c); 跳过输入的第三个数据。

3)putchar ,getchar 函数的考查:

char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。

putchar(‘y’)把字符y输出到屏幕中。

4)如何实现两个变量x ,y中数值的互换(要求背下来)

不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。

5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)

x=(int)(x*1000+0.5)/1000.0

这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。

第三章

特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。

1)关系表达式:

表达式的数值只能为1(表示为真),或0(表示假)

当关系的表达是为真的时候得到1。如 9>8这个是真的,所以表达式的数值就是1;

2)逻辑表达式:

只能为1(表示为真),或0(表示假)

a) 共有&& || ! 三种逻辑运算符号。

b) !>&&>|| 优先的级别。

c) 注意短路现象。考试比较喜欢考到。

d) 要表示 x 是比0大,比10小的方法。0

3)if 语句

else 是与最接近的if且没有else的相组合的。

4)条件表达式:

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

注意是当非0时候是表达式2的数值,当为0是就是表达式3的数值。

考试口诀:真前假后。

5)switch语句:

a)一定要注意 有break 和没有break的差别,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swich语句。

b)switch只可以和break一起用,不可以和continue用。

第四章

1)三种循环结构:

a)for() ; while(); do- while()三种。

b)for循环当中必须是两个分号,千万不要忘记。

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。

d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错)

2) break 和 continue的差别

记忆方法:

break:是打破的意思,(破了整个循环)所以看见break就退出整个一层循环。

continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。

3)嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。

4) while((c=getchar())!=’n’) 和 while(c=getchar() !=’n’)的差别

先看a = 3 != 2 和 (a=3)!=2 的区别:

(!=号的级别高于=号 所以第一个先计算 3!=2) 第一个a的数值是得到的1;第二个a的数值是3。

考试注意点: 括号在这里的重要性。

第五章

函数:是具有一定功能的一个程序块;

1) 函数的参数,返回数值(示意图):

main()

{

int a = 5,b=6,c;

c = add(a,b);

printf(“%d”,c);

}

调用函数

a,b是实参

整个函数得到一个数值就是

Add函数的返回数值。

int add ( int x, int y)

{

int z;

z=x+y;

return z;

}

被调用函数

x,y是形式参数

函数返回数值是整型

z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。

程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行

2)一定要注意参数之间的传递

实参和形参之间 传数值,和传地址的差别。(考试的重点)

传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就会有可能改变实参的变化。

3)函数声明的考查:

一定要有:函数名,函数的返回类型,函数的参数类型。

不一定要有:形参的名称。

第六章

指针变量的本质是用来放地址,而一般的变量是放数值的。

int *p 中 *p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p里面的数值

p是当作地址来使用。

*p++ 和 (*p)++的之间的差别:改错题目中很重要

*p++是 地址会变化。

(*p)++ 是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

第七章

1一维数组的重要概念:

对a[10]这个数组的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[0]的地址。

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。

对a[3][3]的讨论。

a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。

注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。

二维数组做题目的技巧:

如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。

步骤一:把他们写成: 第一列 第二列 第三列

a[0]à 1 2 3 ->第一行

a[1]à 4 5 6—>第二行

a[2]à 7 8 9 ->第三行

步骤二:这样作题目间很简单:

*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。

*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。

一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。

数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写

int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。 但int a[4][]={2,

3,4}非法。

二维数组中的行指针

int a[1][2];

其中a现在就是一个行指针,a+1跳一行数组元素。 搭配(*)p[2]指针

a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用

还有记住脱衣服法则:

a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再可以变成 *(*(a+2)+3)

这个思想很重要!

第一章C语言概述

一、选择题:

1、一个C程序的执行是从( A )。

A本程序的main函数开始,到main函数结束

B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C本程序的main函数开始,到本程序文件的最后一个函数结束

D本程序文件的第一个函数开始,到本程序main函数结束

2、 在 C 语言中,每个语句必须以( D )结束。

A. 回车符 B. 冒号 C. 逗号 D. 分号

3、C 语言规定:在一个源程序中,main函数的位置( C )。

A. 必须在最开始 B. 必须在系统调用的库函数的后面

C. 可以任意 D. 必须在最后

4、一个C 语言程序是由( B )。

A. 一个主程序和若干子程序组成 B. 函数组成

C. 若干过程组成 D. 若干子程序组成

5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体

B. 主函数可以调用任何非主函数的其他函数

C. 任何非主函数可以调用其他任何非主函数

D. 程序可以从任何非主函数开始执行

6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。

A. 生成可执行目标文件 B. 生成目标文件

C. 输出运行结果 D. 自动保存源文件

二、填空题:

1、C 语言只有 32 个关键字和 9 种控制语句。

2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 * 符号作为开始标记,以 */ 符号作为结束标记。

4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函

数 printf 完成的。

5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。

6、C 语言的标识符只能由字母、数字和 下划线 三种字符组成。

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

一、选择题:

1、以下选项中,不正确的 C 语言浮点型常量是( C )。

A. 160. B. 0.12 C. 2e4.2 D. 0.0

2、以下选项中,( D )是不正确的 C 语言字符型常量。

A. 'a' B. 'x41' C. '101' D. "a"

3、 在 C 语言中,字符型数据在计算机内存中,以字符的( C )形式存储。

A. 原码 B. 反码 C. ASCII 码 D. BCD码

4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是( C )。

x=(i=4,j=16,k=32)

A. 4 B. 16 C.32 D.52

5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( B )。

A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算

C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算

6、若有代数式3ae ,则不正确的C语言表达式是( C )。

bcA.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3

7、表达式!x||a==b 等效于( D )。

A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b)

8、设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是( A)。

A. 0,0 B. 0,1 C. 1,0 D. 1,1

9、 设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是( B )。

A. 3 B. 0 C. 9 D. -12

10、在以下一组运算符中,优先级最低的运算符是( D )。

A. * B. != C. + D. =

11、设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是( B )。

A. 6 B. 12 C. 15 D. 表达式出错

12、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是( C )。

A. 1 B. 2 C. 2.0 D. 2.5

13、sizeof (double)的结果值是( A )。

A. 8 B. 4 C. 2 D. 出错

14、设a=1,b=2,c=3,d=4,则表达式:a

A. 4 B. 3 C. 2 D. 1

15、设a 为整型变量,不能正确表达数学关系:10

A. 10

C. a>10 && a<15 D. !(a<=10) && !(a>=15)

16、设 f是实型变量,下列表达式中不是逗号表达式的是( D )。

A. f= 3.2, 1.0 B. f>0, f<10 C. f=2.0, f>0 D. f=(3.2, 1.0)

17、 表达式18/4*sqrt(4.0)/8值的数据类型是( C )。

A. int B. float C. double D. 不确定

18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句

C2=’A’+’6’-‘3’;后c2中的值是( A )。

A. D B. 68 C. 不确定的值 D. C

19、以下用户标识符中,合法的是( B )。

A. int B. nit C. 123 D. a+b

20、C 语言中,要求运算对象只能为整数的运算符是( A )。

A. % B. / C. > D. *

21、若有说明语句:char c='72';则变量c在内存占用的字节数是( A )。

A. 1 B. 2 C. 3 D. 4

22、字符串"ABC"在内存占用的字节数是( B )。

A. 3 B. 4 C. 6 D. 8

23、要为字符型变量 a赋初值,下列语句中哪一个是正确的( B )。

A. char a="3"; B. char a=’3’; C. char a=%; D. char a=*;

24、下列不正确的转义字符是( C )。

A. B. ' C. 074 D. 0

第二部分 公共基础知识资料

第一章 数据结构与算法

【考点1】算法的基本概念

算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。算法不等于程序,也不等于计算方法。

算法的基本特征:

确定性,算法中每一步骤都必须有明确定义,不允许有多义性;

有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;

可行性,算法原则上能够精确地执行;

拥有足够的情报。

算法的组成要素:一个算法由数据对象的运算和操作以及其控制结构这两部分组成。

算法的基本运算和操作:算术运算,逻辑运算,关系运算,数据传输。

算法的基本控制结构:顺序,选择,循环。

算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术。

【考点2】算法的复杂度

算法效率的度量——算法的复杂度:时间复杂度和空间复杂度。

算法时间复杂度:指执行算法所需要的计算工作量。通常,一个算法所用的时间包括编译时间和运行时间。

算法空间复杂度:指执行这个算法所需要的内存空间。包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。

空间复杂度和时间复杂度并不相关。

【考点3】数据结构的基本概念

数据:数据是客观事物的符号表示,是能输入到计算机中并被计算程序识别和处理的符号的总称,如文档,声音,视频等。

数据元素:数据元素是数据的基本单位。

数据对象:数据对象是性质相同的数据元素的集合。

数据结构:是指由某一数据对象中所有数据成员之间的关系组成的集合。

【考点4】逻辑结构和存储结构

数据结构可分为数据的逻辑结构和存储结构。

数据的逻辑结构是对数据元素之间的逻辑关系的描述,与数据的存储无关,是面向问题的,是独立于计算机的。它包括数据对象和数据对象之间的关系。

数据的存储结构也称为数据的物理结构,是数据在计算机中的存放的方式,是面向计算机的,它包括数据元素的存储方式和关系的存储方式。

数据结构和逻辑结构的关系:一种数据的逻辑结构可以表示成多种存储结构即数据的逻辑结构和存储结构不一定一一对应。

常见的存储结构有:顺序,链接,索引等。采用不同的存储结构其数据处理的效率是不同的。

【考点5】线性结构和非线性结构

线性结构的条件(一个非空数据结构):(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。

非线性结构:不满足线性结构条件的数据结构。

栈、队列、双向链表是线性结构,树、二叉树为非线性结构。

【考点6】线性表及其顺序存储结构

线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。

在复杂线性表中,由若干项数据元素组成的数据元素称为记录;由多个记录构成的线性表称为文件。

非空线性表的结构特征:

(1)有且只有一个根结点a1,它无前件;

(2)有且只有一个终端结点an,它无后件;

(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。

结点个数n称为线性表的长度,当n=0时,称为空表。

线性表的顺序存储结构具有以下两个基本特点:

(1)线性表中所有元素所占的存储空间是连续的;

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

元素ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)*k,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。

顺序表的运算:查找、插入、删除。

【考点7】线性链表

线性链表是线性表的链式存储结构,数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。结点由两部分组成:(1) 用于存储数据元素值,称为数据域;(2) 用于存放指针,称为指针域,用于指向前一个或后一个结点。

在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

链式存储方式既可用于表示线性结构,也可用于表示非线性结构。

线性单链表中,HEAD称为头指针,HEAD=NULL(或0)称为空表。

双向链表有两个指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后


本文标签: 函数 运算符 数据 文件 结构