C笔试重点.docx

上传人:b****6 文档编号:12958787 上传时间:2023-06-09 格式:DOCX 页数:18 大小:80.84KB
下载 相关 举报
C笔试重点.docx_第1页
第1页 / 共18页
C笔试重点.docx_第2页
第2页 / 共18页
C笔试重点.docx_第3页
第3页 / 共18页
C笔试重点.docx_第4页
第4页 / 共18页
C笔试重点.docx_第5页
第5页 / 共18页
C笔试重点.docx_第6页
第6页 / 共18页
C笔试重点.docx_第7页
第7页 / 共18页
C笔试重点.docx_第8页
第8页 / 共18页
C笔试重点.docx_第9页
第9页 / 共18页
C笔试重点.docx_第10页
第10页 / 共18页
C笔试重点.docx_第11页
第11页 / 共18页
C笔试重点.docx_第12页
第12页 / 共18页
C笔试重点.docx_第13页
第13页 / 共18页
C笔试重点.docx_第14页
第14页 / 共18页
C笔试重点.docx_第15页
第15页 / 共18页
C笔试重点.docx_第16页
第16页 / 共18页
C笔试重点.docx_第17页
第17页 / 共18页
C笔试重点.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C笔试重点.docx

《C笔试重点.docx》由会员分享,可在线阅读,更多相关《C笔试重点.docx(18页珍藏版)》请在冰点文库上搜索。

C笔试重点.docx

C笔试重点

第一章程序设计基本概念

1)源文件后缀.c

编译

目标文件后缀.obj

连接

可执行文件后缀.exe

2)算法的概念和特点p2

3)结构化程序有哪三种基本结构?

P3

第二章c程序设计的初步知识

1)基本概念p7

每个c程序都必须有且只能有一个主函数。

主函数名必须是main,一个程序总是从主函数开始执行,在主函数中结束.

程序的基本组成单位是函数

分号是c语句的一部分,不是语句之间的分隔符.

“/**/”为注释,必须成对出现,不能嵌套,且“/”和“*”中间不可以有空格,可以出现在程序中任意合适的地方

2)标识符p8

只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线。

注:

1、用户标识符不能使用关键字,如:

int等。

define、include、printf等是预定义标识符不是关键字可作为用户标识符。

2、区分大小写,if是关键字但大写后的If就不再是了。

3)常量p9

1、符号常量:

用标识符代表常量p9定义格式:

#define符号常量常量

2、整形常量p10

①三中表示形式:

十进制、八进制、十六进制

注:

八进制数由数字0开头,后跟数字0~7表示,不能出现8和9。

十六进制整数:

由0x开头,后跟0~9,a~f(A~F)表示.

只有十进制数可以是负数、小数,而八进制和十六进制数只能是正整数!

不能是负数也不能是小数。

②类型:

p11(int、short、long、unsigned)

基本整型、长整型占四个字节,短整型占两个字节

默认为有符号基本整型,在整常量后加字母l或L,认为它是longint型常量

在c语言中,合法的长整型常数是(A)

A)0L    B)4962710 C)0.054838743 D)2.1869e10

③内存中的单位p12

位(bite)------内存中的最小存储单位字节(byte)------8个二进制位组成一个字节

通常把一个字节中的最右边一位为最低位,最左边一位为最高位.

对于一个有符号整数,其中最高位(左)用来存放整数的符号,称为符号位.正整数最高位为0,负整数为1.

3、实型常量p13

表示形式:

小数形式:

(必须有小数点)

如0.123,.123,123.0,0.0,123.

指数形式:

12.34=1.234×101=123.4×10-1

在c语言中可表示为1.234e1或123.4e-1(e或E)

e前e后必须有数字,且e后(指数)必须为整数如12.3e3,123E2,1.23e4,e-5,1.2E-3.5(×)

4)变量:

程序中所有的变量都必须先定义后使用变量定义位置:

一般放在函数开头(定义部分)

变量初始化:

定义的同时给变量赋值(赋初值)

例:

intx=1,y=1,z=1;

intx=y=z=1;(×)intx,y,z;x=y=z=1;(√)

整型变量只能存放整型数值

例inta=5.5;此时a只能得到5(没语法错误,精度损失)

实型变量

float:

占4字节,提供7位有效数字

double:

占8字节,提供15~16位有效数字

实型变量只能存放实型数值

例floata=5;(√)a接收5以后,自动按5.0实数形式存放

字符型变量

字符变量存放字符ASCII码

char与int数据间可进行算术运算

大写转小写:

ch-‘A’+’a’或ch+32小写转大写:

ch-‘a’+’A’或ch-32

5)算术运算符p14

两整数相除,结果为整数,有一方是实数形式,结果保留小数

“%”求余运算符要求两侧均为整型数据,数值取余,符号与被除数一致

例:

floati=3;floata=5;intb=5;

i%3(错)a/2=2.5b/2=2b/2.0=2.5

例:

5%2=1-5%2=-11%-10=1

5%1=0-3%-10=-35.5%2()

6)运算转换规则:

不同类型数据运算时先自动转换成同一类型

7)强制类型转换

形式:

(类型名)(表达式)

括号必须括住类型名注:

本身类型不变,只是得到个中间值

例:

x=1.1;y=2.2;则(int)(x+y)=3(int)x+y=3.2

(double)(3/2)=1.0(int)3.6=3

例:

x=5.2;y=(int)x/2;x=5.2y=2

8)赋值表达式p16

必须赋给变量“=”左边不可以是常量或表达式

++,--也是赋值运算(不能对常量或表达式进行自增自减)

例:

-a=1.3(-x)++b=-c=3错

a=1a+=a-=a+a则a=-2自右向左运算

赋值转换规则:

使赋值号右边表达式值自动转换成其左边变量的类型(以接收方为主)p18

例:

inti;i=2.2;则i只能得到2floata;a=6;则自动转换为6.0存放

9)自增、自减运算符p18(注:

一定要看书!

++i前置先使i增1再参与运算

i++后置先参与运算再使i增1

(i在前就先用i++在前就先加)

++--不能用于常量和表达式,如5++,(a+b)++,(-i)++

a=3;b=5;c=(++a)*b;c=20,a=4

a=3;b=5;c=(a++)*b;c=15,a=4

10)逗号运算符

表达式1,表达式2,……,表达式n

逗号表达式的值:

等于表达式n的值自左向右依次进行运算优先级最低

与赋值号混合运算时,没括号的情况下先赋值,再逗号

例:

a=(b=3,++b),a+ba=4b=4表达式值为:

8

a=b=3,++b,a+ba=3b=4表达式值为:

7

第三章顺序结构

1)赋值语句

赋值表达式+分号构成语句一定要有分号表达式一定没分号

2)#include预处理命令(提前告诉系统要调用stdio.h文件里的函数)

格式:

printf(“格式控制串”,输出项表)

输出项必须要有格式控制符控制着才可输出p27

例:

a=1;b=2;c=3;

若printf(“%d,%d”,a,b,c);则只能输出1,2c的值无法输出

若printf(“%d,%d,%d”,a,b);则输出1,2,2367460(乱码)

双引号中除了格式控制符,其他字符全部原样输出

格式控制符控制着后面对应的输出项按指定格式输出

例:

a=1,b=2;printf(“b=%d,a=%d”,a,b);输出结果:

b=1,a=2

3)指定宽度

printf(“%6.4f”,1234.56789);输出结果为:

1234.5679

先满足小数位数(四舍五入)整数位全输出

若整数位数+小数位数+1(小数点)大于要求输出的总位数

则自动突破

4)两个%输出一个%a=3;printf(“%%d”,a);输出结果为:

%d

5)scanf函数的几个知识点

格式:

scanf(“格式控制串”,输入项列)

特点:

“格式控制串”中与printf的“原样输出”对应的有个“原样输入”

双引号内除格式控制符,间隔符外,其他字符要按原样输入

要输入double型数据,格式控制必须用%lf(或%le)

输入分隔符的指定:

例:

想要给a,b,c分别赋值1,2,3

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

不可以直接输入123?

中间应用分隔符隔开如:

123

例:

要给a输入1,给b输入1.5。

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

可输入a=1,b=1.5

若想输入空格、回车或TAB键这样的分隔符,可在“%d”和“%f”前加这些字符

如:

a=1,b=1.5(此处为加空格的形式,个数不限,也可加回车,tab)

例:

1、scanf(“%7.2f”,&a);不合法,不能企图用这样的scanf函数并输入

1234567而使a的值为12345.67

2、inta,b,c;

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

若输入123456789则a=123b=456c=789

若输入123456789则a=123b=4c=56

输入数据时,遇以下情况认为该数据结束:

1、遇空格、TAB、或回车

2、遇宽度结束

3、遇非法输入

例:

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

若输入1234a123o.26?

(把1230.26错打成123o.26认为此数据遇到字母o结束)

a=1234b=ac=123

抑制符“*”,指定输入项读入后不赋给变量

例:

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

输入1234567

则12-->a,67-->b

第四章选择结构

1、关系运算符

a=1,b=2,c=3m=a

2、逻辑运算符的短路特征

例a=1;b=2;c=3;d=4;m=1;n=1;

(m=a>b)&&(n=c>d)

3、if(x)⇔if(x!

=0)

if(!

x)⇔if(x==0)

4、if~else配对原则:

缺省{}时,else总是和它上面离它最近的未配对的if配对

例:

inta=1,b=2,c=3,m=0,n=0;

if(a==b)

if(b==c)

m++;

else

n++;

5、条件运算符

a>b?

a:

c>d?

c:

d⇔a>b?

a:

(c>d?

c:

d)

x>y?

1:

1.5//x>y,值为1.0;x

6、switch语句

例switch(score)

{case5:

printf(“Verygood!

”);

case4:

printf(“Good!

”);

default:

printf(“dataerror!

”);

case3:

case2:

printf(“Pass!

”);

case1:

printf(“Fail!

”);

}

当score的值是5时,结果是:

Verygood!

Good!

dataerror!

Pass!

Fail!

当score的值是3时,结果是:

Pass!

Fail!

当score的值是0时,结果是:

dataerror!

Pass!

Fail!

switch的执行流程:

一、计算二、找case三、从找到的case开始,往下全部执行

四、若没找到case,则从default开始往下全部执行,若没default则结束switch语句。

第五章循环结构

三种循环是如何循环的?

(必须知道)

1、break语句

跳出一层

break只能终止并跳出最近一层的结构

break只能用于循环语句和switch语句

2、continue语句

跳出一次

只能用于循环语句

第六章字符型数据

字符常量的概念:

用单引号引起来的单个不同字符和转义字符。

1、‘A’-------‘\101’(‘\0101’)-------‘\x41’--------65

'\\''%%'都为一个字符

2、特殊格式控制符“%c”

例:

scanf(“%c%c%c”,&c1,&c2,&c3);

若输入abc则‘a’->c1,‘’->c2,‘b’->c3(此时空格给了c2)应直接输入:

abc

scanf(“%c%c%c”,&c1,&c2,&c3);

可输入:

abc也可输入:

abc

例:

scanf(“%3c%2c”,&c1,&c2);输入abcde则‘a’->c1,‘d’->c2

例:

scanf(“%d%c%d%c”,&c1,&c2,&c3,&c4);此时在%d前可加空格等间隔符,%c前不可

可输入:

1a2b则1->c1,‘a’->c2,2->c3,‘b’->c4

也可输入:

1a2b

如输入:

1a2b则1->c1,‘’->c2c3本来应接受整型数据却遇到’a’非法输入

第七章函数

1、自定义函数的定义:

一种方法:

intfun(inta,intb){循环体;}

注意:

在小括号里每个变量前必须要有数据类型。

也就是a和b前。

二种方法:

intfun(a,b)

inta,b;

{循环体;}

注意:

两种定义的区别。

函数调用有三种:

1)函数调用语句:

max(a,b);

2)函数调用表达式:

c=max(a,b);

3)函数作为函数参数:

printf(“%d”,max(a,b));

注意:

在这三个函数调用中,第一种是不需要函数的返回值。

在后两种里需要有return的返回值。

2、参数传递:

参数传递时,实参向形参传递,形参在使用时开辟内存单元,在调用完后释放内存单元。

第八章指针

1、指针变量

2、&:

取变量的地址*:

取指针所指向变量的内容

优先级:

自右向左

p=&i=&(*p)

*p=i=*(&i)

p-----指针变量,它的内容是地址量

*p----指针的目标变量,它的内容是数据

&p---指针变量占用内存的地址

4、地址传递:

inta=1,b=2,*p1=&a,*p2=&b;

值传递f(a,b)f(*p1,*p2)

接受方f(intx,inty)

无论f函数里的变量如何改变都不影响主函数中的值

地址传递f(&a,&b)f(p1,p2)

接受方f(int*q1,inr*q2)

地址传递也不一定会改变主函数中的值,必须与‘*’结合,才可改变,而且改变的是它们所指向的变量(如a,b)改变不了p1,p2

第九章数组

1、一维数组

数组名是表示数组首地址的地址常量

初始化:

可不指定数组长度,但必须赋初值

2、一维数组与指针

①[]变址运算符a[i]*(a+i)

②inta[10],*p=a;则:

a[i]p[i]*(p+i)*(a+i)

3、一级指针变量与一维数组的关系

int*p与intq[10]

①数组名是指针(地址)常量

②p=q;p+i是q[i]的地址

③数组元素的表示方法:

下标法和指针法,即若p=q,

则p[i]q[i]*(p+i)*(q+i)

④形参数组实质上是指针变量,即intq[]int*q

⑤在定义指针变量(不是形参)时,不能把int*p写成intp[];

5、二维数组

定义:

inta[3][2]

6、二维数组与指针

对二维数组inta[3][4],有

a-----二维数组的首地址,即第0行的首地址

a+i-----第i行的首地址

a[i]*(a+i)------第i行第0列的元素地址

a[i]+j*(a+i)+j-----第i行第j列的元素地址

*(a[i]+j)*(*(a+i)+j)a[i][j]

7、二维数组与一维数组指针变量的关系

如inta[5][10]与int(*p)[10];

●p=a+i使p指向二维数组的第i行

●*(*(p+i)+j)a[i][j]

●即intx[][10]int(*x)[10]变量定义(不是形参)时两者不等价

第十章字符串

chara[6]=”hello”;

chara[6]={”hello”}

char*p=”hello”;

char*p;p=”hello”;

chara[6];a=”hello”;

 

2、字符串函数p148

◆字符串拷贝函数strcpy

字符串比较函数strcmp

◆字符串长度函数strlen

◆字符串连接函数strcat

第十一章函数二

1、传给main函数的参数(参照题一起来做,例如:

课后题和卷子上的题)

2、指针与函数

指向函数的指针变量

定义形式:

数据类型(*指针变量名)();

如int(*p)();

3、递归函数(必须会,多做题)

第十二章标识符

1、局部变量与全局变量

局部变量---内部变量定义:

在函数内定义,只在本函数内有效

说明:

●不同函数中同名变量,占不同内存单元

●可定义在复合语句中有效的变量

全局变量---外部变量定义:

在函数外定义,可为本文件所有函数共用

有效范围:

从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件

外部变量说明:

extern数据类型变量表;

若外部变量与局部变量同名,则外部变量被屏蔽

第十三章编译预处理

1、定义

种类

宏定义#define文件包含#include

格式:

“#”开头占单独书写行语句尾不加分号

2、不带参数的宏定义

例#defineWIDTH80

#defineLENGTHWIDTH+40

var=LENGTH*2;

宏展开:

var=80+40*2;结果是:

160

3、带参数的宏定义

例#definePOWER(x)x*x

x=4;y=6;

z=POWER(x+y);

宏展开:

z=x+y*x+y;

一般写成:

#definePOWER(x)((x)*(x))

宏展开:

z=((x+y)*(x+y));

注意:

在参数后面的参数有小括号在做的时候加上小括号,没有的话一定不要加,多做多练习,课后题和卷子都有类似的题。

第十四章结构体与共用体

1、三种定义形式:

1)structstudent

{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];

};

structstudentstu1,stu2;

2)structstudent

{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];

}stu1,stu2;

3)struct

{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];

}stu1,stu2;

上面三种定义的变量名是stu1和stu2,定义形式是一样的。

2、typedef的使用

typedefintM;写Ma;等价于inta;

同理:

typedefstructstudent

{intnum;

charname[20];

charsex;

intage;

floatscore;

charaddr[30];

}stu1,stu2;

那么在这里stu1和stu2不在是变量名,而是已经变成已有的数据类型,写stu1a;就等价于structstudenta;

3、同理数组也有三种定义方式是类似的,大家看课本就可以了,现在给大家分析一个题:

#include

main()

{structcmplx{intx;inty;}cnum[2]={1,3,2,7};

printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x);}

一起分析:

现在在结构体中定义了一个数组,数组名是cnum,那么这个数组包含两个元素,分别是cnum[0],和cnum[1],那么在这两个元素中,每个元素包含两个成员,cnum[0]的成员是x和y,而cnum[1]的成员也是x和y,现在1和3这两个数的值是不是就是cnum[0]中两个成员x和y的值呢,2和7的两个值就是cnum[1]中两个成员x和y的值,现在式子就变成了3/1*2,结果是不是就是6了.

4、成员运算符的引用p190

(1)结构体变量名.成员名

(2)指针变量名->成员名(3)(*指针变量名).成员名

数组的引用:

数组名[下标].成员名

注意:

数组引用必须会

第十五章位运算

看课本明白六种运算符的使用,会运算就可以了。

第十六章文件

1、打开文件fopen

函数调用:

FILE*fp

fp=fopen(char*name,char*mode)

2、文件的读写

fputc函数调用:

fputc(ch,fp)

功能:

把一字节代码c写入fp指向的文件中

fgetc函数调用:

ch=fgetc(fp)

功能:

从fp指向的文件中读取一字节代码

3、数据块I/Ofreadfwrite

fread(buffer,size,count,*fp)

fwrite(buffer,size,count,*fp)

说明:

buffer:

指向要输入/输出数据块的首地址的指针

size:

每个要读/写的数据块的大小(字节数)

count:

要读/写的数据块的个数

fp:

要读/写的文件指针

fread与fwrite一般用于二进制文件的输入/输出

4、格式化I/O:

fprintffscanf

例fprintf(fp,“%d,%6.2f”,i,t);//将i和t按%d,%6.2f格式输出到fp文件

fscanf(fp,“%d,%f”,&i,&t);//若文件中有3,4.5,则将3送入i,4.5送入t

5、字符串的I/Ofgetsfputs

功能:

从fp指向的文件读/写一个字符串

fgets(s,n,fp)

fgets从fp所指文件读n-1个字符送入s指向的内存区,并在最后加一个‘\0’

fputs(s,fp)fputs把s指向的字符串写入fp指向的文件

6、fseek函数函数调用:

fseek(fp,offset,whence)

fp:

文件指针offset:

位移量whence:

起始点

功能:

改变文件位置指针的位置(见课本上的表)

7、ftell函数

函数调用:

ftell(fp)

功能:

返回位置指针当前位置(用相对文件开头的位移量表示)

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2