C语言复习纲要 2.docx

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

C语言复习纲要 2.docx

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

C语言复习纲要 2.docx

C语言复习纲要2

第一章C语言概述

一、C程序的主要结构特点如下:

(1)所有的c程序都是由一个或多个函数组成的程序模块构成的。

(2)必须有且仅有一个main()主函数。

c程序总是从主函数main()开始

执行,结束于主函数。

(3)c语言程序是由语句组成,使用“;”作为语句的中止符或分隔符。

(4)c语言程序中用{}将函数体括起来。

(5)c语言中注释的格式:

/*注释内容*/。

二、上机步骤:

第二章数据类型、运算符及表达式

一、关键字(会识别):

共32个:

autobreakcasecharconstcontinuedefaultdodouble

elseenumexternfloatforgotoifintlongregister

returnshortsignedstaticsizeofstructswitchtypedef

unionunsignedvoidvolatilewhile

例:

下列是C语言提供的合法的数据类型关键字()。

A)unsignB)defaultC)integerD)Char

二、自定义标识符:

是用户定义的用来标识语句中的成份。

如函数名、变量名、数组名等。

标识符定义的规则:

(1)第一个字符必须是字母或下划线_;

(2)后跟字母、下划线_或数字组成;

(3)标识符中的大小写字母有区别

(4)不能与c编译系统已经预定义的关键字同名。

例:

选出下列标识符中不是合法的标识符的是(    )。

  A.hot_do     B.int     

C._pri        D.2ab

三、常量:

在程序运行过程中,其值不能被改变的量。

(1)整型常量:

十进制、八进制(以0开头)、十六进制(以0x开头)

(2)字符常量:

用单撇号‘’括起来的一个字符,可以使用转义字符。

(3)实型常量(浮点型常量):

小数形式、指数形式(小数e指数)。

(4)字符串常量:

用双撇号括起来的字符序列。

(5)符号常量定义:

#define标识符名常量

例:

在C语言中,非法的八进制是:

(    )

 A.016   B.018   C.017   D.02

例:

不是C语言实型常量的是:

(    )

   A.55.0   B.0.0   C.5.5e-3   D.55e2.5

四、变量:

程序运行期间数据的值不确定。

1、变量的声明和定义:

类型名变量标识符名[,变量…,变量];

2、变量的操作:

(1)存数据:

初始化、赋值语句和键盘输入函数

(2)取数据:

用变量参与表达运算

例:

下面的变量说明中正确的是____________。

  A.int:

a,b,c;      B.int a;floatb;

  C.int a,floatb;   D.int 2;

五、数据类型:

常用基本类型的类型符及占用空间

基本型 所占字节   对应格式符

char    1      %c       

int     4     %d

float    4   %f、%e

double  8    %lf、%le

六、运算符:

告诉编译程序执行特定算术或逻辑操作的符号:

掌握常用的运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

()

圆括号

(表达式)/函数名(形参表)

.

成员选择(对象)

对象.成员名

->

成员选择(指针)

对象指针->成员名

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!

表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!

=

不等于

表达式!

=表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?

:

条件运算符

表达式1?

表达式2:

表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

/=

除后赋值

变量/=表达式

*=

乘后赋值

变量*=表达式

%=

取模后赋值

变量%=表达式

+=

加后赋值

变量+=表达式

-=

减后赋值

变量-=表达式

<<=

左移后赋值

变量<<=表达式

>>=

右移后赋值

变量>>=表达式

&=

按位与后赋值

变量&=表达式

^=

按位异或后赋值

变量^=表达式

|=

按位或后赋值

变量|=表达式

15

逗号运算符

表达式,表达式,…

左到右

从左向右顺序算

说明:

同一优先级的运算符,运算次序由结合方向所决定。

简单记就是:

>算术运算符>关系运算符>&&>||>赋值运算符

七表达式:

是用括号将常量、运算符、函数连接起来的有意义的式子。

表达式的运算顺序:

从左往右依次取出运算数据和运算符,不同运算符按优先级由高到低顺序进行,同级按运算符的结合性决定运算的先后。

例5、计算下列表达式的值:

(1)(a+b)/2+(int)x%(int)ya=4,b=3.x=8.6,y=3.5

(2)a+b>c&&c-1a=2,b=3,c=4

(3)!

(a

(4)b=a++b=3a=4;b=?

a=?

(5)a=2a*=a+2的值

(6)sizeof(char)的值

第三、四章顺序、选择、循环结构程序设计

一语句:

它由一个词或句法上有关连的一组词构成,表达计算机执行的一个动作或声明定义一个符号的名称。

语句

格式

功能

变量声明语句

[存储类型]数据类型变量名1,…变量名n;

声明程序中自定义的符号

赋值语句

变量名=表达式;

计算表达式的值并赋给变量

表达式语句

表达式;

实现数据的处理

输入输出语句

printf(“格式字符串”,[变量1,…变量n]);

常用格式符:

%d,%c,%f,%s,%lf

%m.n格式符

scanf(“格式字符串”,[地址1,…地址n]);

常用格式符:

%d,%c,%f,%s,%lf

实现往显示器上输出数据

从键盘上输入数据到内存

选择语句

(分支语句)

if(表达式)

语句1;

[else

语句2;]

嵌套if语句的规定是:

else总是与其之前最近的且尚未配对的if配对

根据表达式的值决定语句是否执行。

switch(表达式)

{

case值1:

语句;[break];

.

.

.

case值n:

语句n;[break];

[default:

语句n+1;[break];]

}

循环语句

while(表达式)

{

语句;

[break;]

[continue;]

}

重复执行语句;

do

{

语句;

[break;]

[continue;]

}while(表达式);

for(表达式1;表达式2;表达式3)

{

语句;

[break;]

[continue;]

}

赋值语句等号左边为变量

例:

下面不正确的赋值语句是_____________。

  A.a=a+1;      B、a+5=b ;  

 C、a+=b ;       D、a=1;

例:

下列程序的输出结果是()。

#include

voidmain()

{

inta=3,b=5;

printf("a=%d,b=%d",a,b);

}

(A)a=3,b=5(B)a=%3,b=%5

(C)a%%d,b=%%d(D)a=%d,b=%d

例:

for语句执行过程:

for(表达式1;表达式2;表达式3){循环体语句;}

表达式1判断表达式2执行循环体语句;表达式3;

结束循环,执行循环后续语句;

例:

循环语句:

for(i=1;i<4;i++)s=s+i;循环体执行的次数_________;

例:

多重循环(循环的嵌套),循环体中包含循环

inti,j;

for(i=1;i<5;i++)

{

printf(“i=%d”,i);

for(j=0;j<5;j++)

printf(“j=%d”,j);内层循环体外层循环体

printf(“\n”);

}

二、编程

程序结构:

按执行语句的次序:

顺序;选择;循环

编排语句的次序:

声明数据和输入数据;处理数据;输出数据;

例:

C程序设计时,当求解问题中出现条件判断时应该用选择结构,若出现连续重复时应该用循环结构,若出现功能上重复时可以设计函数来实现程序的模块化设计。

第五章数组

一.数组的概念

由相同数据类型的变量按照一定的次序组织起来,就是数组。

构成数组的变量称为数组元素。

用一个数组名和下标来唯一确定数组中的元素。

数组类型属于构造数据类型。

二.一维数组

1、定义

类型标识符数组名[常量表达式];例:

inta[5];

2、初始化

⑴对数组的全部元素赋初始值。

如:

intm[5]={1,21,35,4,58};

⑵对数组的部分元素赋初始值。

如:

intnum[5]={1,24,3};

⑶对数组的全部元素赋初始值时,可以将数组定义为一个不确定长度的数组。

如:

intnum[]={19,2,32,4,51};

3、引用:

数组名[下标]a[2]=3;

三.二维数组

1、定义

数据类型数组名[常量表达式1][常量表达式2];

例:

floata[3][4];

二维数组中元素的排列顺序是按行排列

2、初始化

(1)分行对二级数组初始化。

如:

inta[3][4]={{1,28,3,4},{15,62,7,8},{9,100,111,12}};

(2)按数组排列的顺序对各元素赋初值。

如:

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

(3)可以对部分元素赋初值。

如:

inta[3][4]={{1},{5},{9}};

(4)如果对全部元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。

如:

inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

3、引用:

数组名[行下标][列下标]a[2][3]

四、字符数组:

用来存放和处理字符数据的数组变量。

1、定义

char数组名[常量表达式];例charc[10];

2、初始化

⑴用字符逐个给字符数组中的元素赋值

如:

charc[5]={‘H’,’e’,’l’,’l’,’o’};

⑵用字符串常量给字符数组赋值。

如:

charc[6]=“Hello”;或charc[]=“Hello”

c这个数组总共分配6个字节的存贮空间,在c[5]中存入的是‘\0’。

3、字符串的输入输出

⑴在scanf中利用“%s”实现对字符串的整体输入

如:

charstr[20];scanf(“%s”,str);

⑵在printf中利用“%s”实现对字符串的整体输出

4、常用字符串处理函数

⑴字符串输入函数gets(字符数组名)

⑵字符串输出函数puts(字符数组名)

⑶字符串连接函数strcat(s1,s2)

⑷字符串比较函数strcmp(s1,s2)

⑸字符串复制函数strcpy(s1,s2)

⑹字符串求长度strlen(字符数组名)

例:

以下一维整型数组array的正确说明是()。

(A)inta(5);(B)intn=5,a[n];

(C)intn;(D)#defineSIZE10;

scanf("%d",&n);intarray[SIZE];

intarray[n];

例:

若有定义:

inta[2][3],则对数组a元素的正确引用是()。

(A)a[2][3](B)a[1,3](C)a

(1)(3)(D)a[1][2]

例:

下面是对s的初始化,其中不正确的是()。

(A)charstr[5]={“you”};(B)charstr[5]={‘y’,’o’,’u’};

(C)chars[5]=“”;(D)chars[5]=“abcdef”

例:

定义字符数组charstr[20];,则不能对字符数组正确输入的语句是( )。

(A)scanf("%s",str);

(B)gets(str);

(C)scanf("%c",str);

(D)for(i=0;i<20;i++)scanf("%c",&str[i]);

例:

定义字符数组charstr[10]={“string”};,则不能对字符数组正确输出的语句是( )。

(A)printf("%s\n",str);

(B)puts(str);

(C)printf("%c",str);

(D)for(i=0;i<10;i++)printf("%c",str[i]);

第六章函数

1、函数定义形式:

函数类型函数名(形参表列)

{函数体}

例:

intmax(intx,inty)

{intz;

z=x>y?

x:

y;

returnz;

}

2、函数的参数:

形参和实参,作用是实现数据传送

3、函数返回值与return语句

有参函数的返回值,是通过函数中的return语句来获得的。

return语句的一般格式:

return(返回值表达式);

4.函数类型

在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。

5、函数的调用

函数调用的一般形式为:

函数名([实际参数表])

(1)函数表达式。

如:

s=area(3,4,5);

(2)函数语句。

如:

printf(“WelcometoChina!

”);

(3)函数实参。

max(max(a,b),c);

在函数调用时,实参在次序、类型、个数上应用相应形参表中形参保持一致。

6、函数原型的一般形式为:

1.函数类型函数名(参数类型1,参数类型2……);

2.函数类型函数名(参数类型1参数名1,参数类型2参数名2……);

7、函数的嵌套调用

 

函数嵌套调用时执行的顺序:

main()->a()->b()->a()->main()

8、函数的递归调用

一个函数在它的函数体内,直接或间接地调用它自身。

 

需掌握典型程序:

1、交换两个变量的值

#include

voidmain()

{inta,b,t;

scanf("%d%d",&a,&b);

t=a;a=b;b=t;

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

}

2、累加(乘)

#include

voidmain()

{inti,sum=0;

for(i=1;i<=100;i++)

sum+=i;

printf(“sum=%d\n”,sum);

}

3、判断素数

#include

#include

voidmain()

{intm,i,k;

scanf("%d",&m);

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)break;

if(i>k)printf("%disaprimenumber\n",m);

elseprintf("%disnotaprimenumber\n",m);

}

4、求两个的最大公约数

#include

voidmain()

{intm,n,a;

printf(“请输入两个正整数:

\n”);

scanf(“%d%d”,&m,&n);

a=m%n;

while(a!

=0)

{m=n;n=a;a=m%n;}

printf(“最大公约数为%d\n”,n);

}

5、求10数中的最大值、最小值

#include

voidmain()

{inta,i,max,min;

scanf("%d",&a);

min=max=a;

for(i=1;i<=9;i++)

{

scanf("%d",&a);

if(max

if(min>a)min=a;

}

printf("Max=%d,Min=%d\n",max,min);

}

6、将一组数倒置存放(倒排)

#include

#defineN5

voidmain()

{inti,temp;

inta[N]={1,2,3,4,5};

for(i=0;i

{temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

for(i=0;i

printf("%d",a[i]);

}

7、选择法排序

#include

voidmain()

{inta[11],i,j,k,temp;

printf("Input10numbers:

\n");

for(i=1;i<11;i++)

scanf("%d",&a[i]);

for(i=1;i<10;i++)

{k=i;

for(j=i+1;j<11;j++)

if(a[j]

if(i!

=k)

{temp=a[i];a[i]=a[k];a[k]=temp;}

}

printf("Thesortednumbers:

\n");

for(i=1;i<11;i++)

printf("%d",a[i]);

}

8、冒泡法排序

#include

voidmain()

{inta[11],i,j,t;

printf("Input10numbers:

\n");

for(i=1;i<11;i++)

scanf("%d",&a[i]);

for(i=1;i<=9;i++)

for(j=1;j<=10-i;j++)

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

printf("Thesortednumbers:

\n");

for(i=1;i<11;i++)

printf("%d",a[i]);

}

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

当前位置:首页 > 表格模板 > 合同协议

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

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