C语言复习提纲.docx

上传人:b****5 文档编号:14792608 上传时间:2023-06-27 格式:DOCX 页数:22 大小:25.47KB
下载 相关 举报
C语言复习提纲.docx_第1页
第1页 / 共22页
C语言复习提纲.docx_第2页
第2页 / 共22页
C语言复习提纲.docx_第3页
第3页 / 共22页
C语言复习提纲.docx_第4页
第4页 / 共22页
C语言复习提纲.docx_第5页
第5页 / 共22页
C语言复习提纲.docx_第6页
第6页 / 共22页
C语言复习提纲.docx_第7页
第7页 / 共22页
C语言复习提纲.docx_第8页
第8页 / 共22页
C语言复习提纲.docx_第9页
第9页 / 共22页
C语言复习提纲.docx_第10页
第10页 / 共22页
C语言复习提纲.docx_第11页
第11页 / 共22页
C语言复习提纲.docx_第12页
第12页 / 共22页
C语言复习提纲.docx_第13页
第13页 / 共22页
C语言复习提纲.docx_第14页
第14页 / 共22页
C语言复习提纲.docx_第15页
第15页 / 共22页
C语言复习提纲.docx_第16页
第16页 / 共22页
C语言复习提纲.docx_第17页
第17页 / 共22页
C语言复习提纲.docx_第18页
第18页 / 共22页
C语言复习提纲.docx_第19页
第19页 / 共22页
C语言复习提纲.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言复习提纲.docx

《C语言复习提纲.docx》由会员分享,可在线阅读,更多相关《C语言复习提纲.docx(22页珍藏版)》请在冰点文库上搜索。

C语言复习提纲.docx

C语言复习提纲

数据与运算

1.一.数据类型:

1.整型(int),短整型(short),长整型(long)

表示形式:

①十进制形式:

(0-9)

     ②八进制形式:

整常数以0作为前缀(0-7)

     ③十六进制形式:

整常数以0X或0x作为前缀(0-9,A-F或a-f)

如:

158L:

表示十进制长整常数

2.实型(浮点型):

包括单精度型(float)和双精度型(double)

表示形式:

①十进制数形式:

如:

0.0;300.;0.13;-267.8230;(必须有小数点)

       ②指数形式:

aEn或aen(a为十进制数,n为十进制整数,等于) 

       如:

2.1E5(等于)

3.字符型(char)

字符书写形式是用单引号括起来的单个字符,如‘a’

字符串书写形式是用双引号括起来的一串字符,如:

“a”

常用转义字符:

\n表示回车换行

        \t表示向右走8列

        \b表示退格

4.各种类型数据占用储存空间情况:

long:

4字节int:

4字节short:

2字节char:

1字节float:

4字节double:

8字节

(可用sizeof测试,求值结果是字节数)

二.标识符,常量,变量

1.标识符:

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

且大小写敏感,不能使用关键字。

2.常量:

①整型常量

    ②实型常量

③字符常量:

一般一个字符常量的值是该字符集中对应的ASCLL码值。

如:

‘0’~‘9’的ASCLL码值是48~57;‘A’~‘Z’的ASCLL码值是65~90,‘a’~‘z’的ASCLL码值是97~122,小写—大写=32;‘\0’(字符串结束标记)的ASCLL码值是0,显然字符‘0’与数字0是不同的。

     

④字符串常量:

字符常量由单引号括起来,字符串常量由双引号括起来;字符串常量在内存中储存时有串尾结束标记‘\0’,所以字符串常量占的内存字节数等于字符串中字符所占的字节数加1;不能把一个字符串常量赋给一个字符变量。

⑤符号常量(宏定义):

用一个指定的标识符(宏名)来代表一个字符串(内容)。

不带参数的宏定义:

如:

#define PI 3.1415926(注意,该语句后不能加分号,否则会连分号一起置换)

   S=PI*R*R;(展开后,该语句为:

S=3.1415926*R*R;)

带参数的宏定义:

如:

#define S(l,w) 1.0/2*l*w

area=S(5,4);(展开后该语句为:

area=1.0/2*5*4;)

3.变量:

①定义:

如:

int n,m;

              char ch1,ch2;

              float x,y;

②赋值:

如:

⑴inta=5;

        ⑵inta,b,c;

           a=2;b=5;c=10;

        ⑶inta=b=c=10;(错误,变量不能连续赋初值)

注意:

必须保证赋值符号右边的常量和赋值符号左边的变量类型一致。

三.运算符与表达式

1.算术运算符:

①“+”;②“-”;③“*”;

④“/”;参与运算量均为整型时,结果也为整型,舍去小数,如果运算量中有一个是实型,则结果为实型。

如:

7/2=3。

⑤“%”;要求参与运算的量均为整型,结果等于两数相除后的余数

2.自加自减运算符:

n=i++或i--;(i先参与运算,后自加)

n=++i或--i;(i先自加,后参与运算)

例:

下面程序的输出结果是   12   。

main()

{

intx=3,y=5;

printf(“%d\n”,x=(x--)*(--y));   

}

3.复合赋值运算符:

如:

a+=10等价于a=a+10

a*=b+10等价于a=a*(b+10)

a%=10等价于a=a%10

4.关系运算符:

< ;> ;<=;>=;==;!

=.

5.逻辑运算符:

①&&与 (短路性)如:

a&&b,若a为假,则表达式为假,b不用参与运算。

②||或 (短路性)如:

a||b,若a为真,则表达式为真,b不用参与运算。

例:

下面程序的输出结果是 3,3,3   。

#include

voidmain()

{inti=2,j=2,k=3;

  if((j++||k++)&&i++)

  printf(“%d,%d,%d\n”,i,j,k);}

③!

6.条件运算符:

(表达式1?

表达式2:

表达式3)

如果表达式1非0(真),执行表达式2;否则,执行表达式3。

例:

若w=1,x=2,y=3,z=4,则条件表达式w

w:

y

y:

z的值是(A  )。

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

7.逗号运算符:

(表达式1,表达式2)

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

注:

常见的条件运算符和自加自减运算符是右结合性,其余的基本是左结合性。

优先级排序:

单目(++,--,!

)>算术(*,/,%,+,-)>关系(>,>=,<,<=,==,!

=)>逻辑(&&,||)>条件(?

)>赋值(=)>逗号(,)

一,二,三,赋值,逗号;算术,关系,逻辑。

四.数据类型转换

①类型自动转换:

(此类型题答案多为double型)

例:

进行下列变量定义后,表达式a*b+d-c的类型是   double  。

chara;

intb;

floatc;

doubled;

②赋值转换:

如⑴floatf;

           f=4;   /*内存中变量f的值为4.000000*/

⑵intx;

 x=4.35; /*内存中变量x的值为4*/

⑶intx;

 x=‘a’; /*内存中变量x的值为65*/

③强制类型转换:

(强制类型名)(表达式)

如:

(int)(a+b)  /*将表达式a+b结果的类型强制转换成int型*/

(int)a+b   /*将变量a的类型强制转换成int型后,再进行运算*/

重要语句:

1.C程序由函数构成的,一个C程序有且只有一个mian函数,一个C程序总是从main函数开始执行,在main函数中结束整个程序。

main函数的位置可以任意。

一个函数由函数首部和函数体组成。

2.一个C源程序要经过编辑,编译,连接,运行,这几个步骤才能进行上机运行。

3.C语言程序的执行:

编辑源程序(.c)—>目标程序(.obj)—>可执行程序(.exe)。

4.C语言编译系统在表示逻辑运算结果时,以数值1代表真,以数值0代表假;在判断一个量是否为真时,以非0代表真,以0代表假。

5.C语言是计算机高级语言,它适合作为系统描述语言,它既可以用来写系统软件,也可以用来写应用软件。

      C程序的基本控制结构

一.顺序结构

1.printf函数:

调用的一般形式printf(“格式控制字符串”,输出表列);

如:

printf(“%d,%d\n”,a,b);%后面跟有各种格式字符,以说明输出数据的类型,长度,小数位数等等,非格式字符则原样输出。

%d(十进制整型)%c(字符型)%f(实型,小数点后6位)%e(指数型)

%m.nf(表示指定输出宽度为m,精度即小数点后n位)

例:

以下程序的运行结果是 11.50   。

   #include

voidmain()

{inti=5,j=9;

   floatx=2.3,y=4.5;

   printf("%8.2f\n",i%(int)(x+y)*j/2/3+y);

  }

若实际位数多余定义的宽度,按实际位数输出;若实际位数少于定义宽度则在前面补以空格。

1.scanf函数:

调用的一般形式scanf(“格式控制字符串”,地址表列);

如:

scanf(“%d,%d”,&a,&b);非格式字符原样输入。

scanf函数没有精度控制,如scanf(“%5.2f”,&a)是非法的。

例:

若定义floata;,现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用(A  )。

A)scanf("%6f",&a);          B)scanf("%5.2f",a);

C)scanf("%6.2f",&a);        D)scanf("%f",a);

scanf(“%d%*d%d”,&a,&b);表示当输入123时,把1赋予a,2被跳过,3赋予b。

scanf(“%4d%4d”,&a,&b);输入12345678.表示将1234赋予a,5678赋予b。

scanf(“%c%c%c”,&a,&b,&c);输入xyz时,把‘x’赋予a,‘’赋予b,‘y’赋予c。

3.putchar函数:

单个字符输出函数。

 调用一般形式:

putchar(字符变量)

 getchar函数:

单个字符输入函数。

 调用一般形式:

getchar()

二.选择结构

1.if语句:

①if(表达式)语句;

如果表达式的值为真,则执行其后的语句,否则不执行。

②if(表达式)

    语句1;

 else

    语句2;

如果表达式的值为真,则执行语句1,否则执行语句2。

③if(表达式1)

     语句1;

elseif(表达式2)

   语句2;

elseif(表达式3)

    语句3;

else

    语句n;

依次判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个if语句之外继续执行程序,如果所有表达式均为假,则执行语句n。

注:

if语句的嵌套,C语言规定else总是与它前面最近的未配对的if配对。

2.switc语句:

switch(表达式)

{

case常量表达式1:

语句1;

case常量表达式2:

语句2;

case常量表达式n:

语句n;

default:

语句n+1;

}

计算表达式的值,逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有语句。

如表达式的值与所有case后的常量表达式均不相同时,则执行defalut后的语句。

break语句用于跳出switch语句,避免输出不应该有的结果。

例:

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

#include

voidmain()

{inta=55,b=50,c=60,d;

d=a>20?

b:

c;

switch(d)

{case40:

printf(“%d,”,a);

     case50:

printf(“%d,”,b);

     case60:

printf(“%d,”,c); 

     default:

printf(“$\n”);}}

A)50,60      B)50,$   C)60,$    D)50,60,$

三.循环结构:

1.while语句:

while(表达式)循环体(注:

表达式后没有分号)

如:

while(i<=10)

  {f=f*i;

i++;

}

例:

下面的程序中:

inti=9;

while(i=0)i=i-1; 

则下列描述正确的是(C )

A)while循环执行9次     B)循环体语句执行一次   

C)循环体语句一次也不执行     D)循环是无限循环

2.do-while语句:

do

循环体

while(表达式);

如:

do

{f=f*i;

i++;

}

while(i<=10);

注:

至少执行一次循环体。

例:

下面的程序运行结果是(B )

#include

voidmain()

{

intx=10;

do

x--;

while(--x);

printf("%d\n",x--);

}

A)-1        B)0    C)1          D)8

1.for语句:

for(循环变量赋初值,循环条件,循环变量增值)循环体

如:

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

f=f*i;

例:

设n为整型变量,则for(n=10;n>=0;n--)循环次数为(C )

A)9       B)10   C)11     D)12

例:

输出如下方阵。

1  2  3  4

5  6  7  8

9  10 11 12

13 14 15 16

#include

voidmain( )

{inti,j,x;

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

 {for(j=1;j<=4;j++)

   { x=(i-1)*4+j;

   printf("%4d",x); } 

printf("\n");

}

其余知识点:

1.常用循环嵌套:

如:

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

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

             {

              }

2.求平方根:

intm,n=4;

       m=sqrt(n);

3.分离出整数的每一位数字:

如:

S=4321;2=S/10%10;3=S/100%10

1.break语句只能用于循环语句和switch语句,break语句是结束整个循环,不再判断循环条件是否成立,而continu语句只结束本次循环,继续进行下一次循环。

2.goto语句的用法不符合结构化原则,一般主张限制使用。

数组

一.一维数组

1.定义:

如:

inta[5];

C语言的数组元素下标从0开始,注意下标不能过界;

      定义的数组长度不能是变量;

例:

以下能正确定义一维数组的选项是( B )。

A)intnum[];    B)#defineN100  intnum[N];(宏定义,符号常量)

C)intnum[0..100];  D)intN=100;  intnum[N];

      可以一次同时定义多个同类型数组。

1.引用:

必须使用循环语句逐个输出数组里的各元素,如:

       for(i=0;i<5;i++)printf(“%d”,a[i]);

3.初始化:

对数组的全部元素赋初值时,可以不指定数组长度。

       只对数组的部分元素赋初值,未赋值元素自动取零值。

二.二维数组

1.定义:

如:

inta[5][5];(定义了a为5行5列的二维数组)

     同一维数组一样,数组元素下标从0开始,注意下标不能过界;

2.引用:

同样只能逐个引用数组元素,如:

     inta[2][3];

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

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

       scanf(“%d”,&a[i][j]);

1.初始化:

对二维数组全部元素赋初值,则数组的第一维长度可以省略,但第二维长度不

       能省略。

       同一维数组一样,可以只对二维数组的部分元素赋初值,未赋值元素自动取零值。

三.字符数组:

1.定义:

如:

charc[5];

2.初始化:

逐个给数组中的各元素赋初值

       如:

charstr[10]={‘c’,‘h’,‘i’,‘n’,‘e’,‘s’,‘e’}

       用字符串直接给字符数组赋初值

       如:

charstr[]=“chinese”   

3.字符数组的输入输出:

①用循环语句实现逐个字符输入,输出:

如:

charstr[10]=“chinese”;

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

   printf(“%c”,str[i]);

②使用“%s”实现字符串的整体输入输出:

如:

charstr[10]

scanf(“%s”,str);(注意没有“&”,字符数组名已经表示数组首地址)

4.其余知识点:

①C语言规定:

字符‘\0’作为字符串结束标志,占用储存空间,但不计入串的实际长度。

因此用字符串常量对字符数组初始化时,数组的长度至少要比字符串实际长度大1。

注意字符数组与字符串的区别。

如:

char:

c[]=“chinese”系统设字符数组长度为8(内存占8字节),字符串长为7。

   char:

c[]={‘c’,‘h’,‘i’,‘n’,‘e’,‘s’,‘e’}字符数组长度为7。

②字符串处理函数:

字符串输入函数:

调用形式:

gets(字符数组)

字符串输出函数:

调用形式:

puts(字符数组)

字符串连接函数:

调用形式:

strcat(字符数组1,字符数组2)

字符串复制函数:

调用形式:

strcpy(字符数组1,字符串2)

字符串比较函数:

调用形式:

strcmp(字符串1,字符串2)

字符串长度函数:

调用形式:

strlen(字符数组)

函数

1.定义函数:

无参函数定义:

如:

print-1()   /*print-1函数的定义*/

            {printf(“hello\n”);}

有参函数定义:

如:

intmax(intn1,intn2)

             {intn;

              n=n1>n2?

n1:

n2;

              return(n);

              }         /*定义一个函数max()*/

2.函数返回值:

return语句的一般形式:

return(表达式);或return表达式;或return;

函数值的类型和return语句中表达式值不一致,以函数类型为准。

3.调用函数:

一般形式:

函数名(实际参数表)

实参在类型上按顺序与形参一一对应和匹配。

1.对被调用函数的原型声明:

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

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

被调函数在主调函数前进行定义就不用声明。

5.函数的递归调用(掌握用递归法计算n!

详见程序题第10题)

例:

阅读下面程序段,则执行后的结果是(A )。

#include“stdio.h”

longfun(intn)

{if(n>2)

return(fun(n-1)+fun(n-2));

elsereturn

(2);}

main()

{printf(“%ld﹨n”,fun(5));}

A)10     B)15     C)20      D)以上3个答案都不正确

6.数组作为函数参数:

①数组元素用作实参,作用与普通变量相同,发生函数调用时,把数组元素的值传给形参,实现单向值传递。

②函数的形参和实参为数组名。

注意用二维数组名作形参数组定义时,可以省略第一维的大小说明,但不能省略第二维的大小说明。

7.自动型变量auto:

(每次都重新初始化)

静态型变量static:

(只初始化一次)

例:

阅读下面程序段,则执行后的结果是(D  )。

#include“stdio.h” 

fun()

{staticintx=5;   

x++;

returnx;   }

main()

{inti,x;

for(i=0;i<3;i++)

x=fun();

printf(“%d\n”,x);   }

A)5      B)6       C)7      D)8

重要语句:

          

①一个C程序由一个或多个源程序文件组成,一个源程序文件由一个或多个函数组成,函数不能嵌套定义,但可以嵌套调用,但不能调用main函数。

②从用户使用角度看,函数有两种:

标准函数(库函数),用户自定义函数;从函数形式看,函数分两类:

无参函数,有参函数。

③在C语言中,实参向形参数据传递是值传递,单向传递只由实参传给形参,而不能由形参传回来给实参。

在内存中,实参单元与形参单元是不同单元。

④在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归 。

⑤在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。

这称为局部变量。

形参变量是被调用函数的局部变量,实参变量是调用函数的局部变量。

指针

一.基本概念:

假如让变量p存放整型变量a的地址,这样由变量p的值就可以找到变量a,因此称变量p就是指针变量,存放的地址称为指针,指针就是地址。

指针变量的一般定义形式:

类型名*标识符

如:

intm,&r;

r=&m;

m=*r; (r表示地址,*r表示内容)

又如:

(*p)++:

表示地址不变,内容加1;

    *p++:

  表示地址加1,内容不变;

例:

有以下程序。

#include

main()

{intarray[]={1,2,3,4,5,6,7};

int i,j,*pointer1,*pointer2;

pointer1=&array[1];

pointer2=&array[5];

i=*pointer1**pointer2;

j=*(pointer1+2)+*(pointer2+1);

printf("%d,%d\n",i,j);}

     程序执行后的输出结果是(C   )。

     A)5,9       B)9,5         C)12,11        D)11,12 

二.指针作为函数参数:

(值传递的是变量地址)

例:

有以下程序(假设从键盘输入数据1,2)。

#include

voidswap(int*p1,intp2)           

 {*p1=*p1+p2;

   p2=p2+*p1;}

voidmain()

{inta,b,*pointer1;

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

 pointer1=&a;

 swap(pointer1,b);             

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

     程序执行后的输出结果是( D  )。

     A)3,5       B)a=3,b=5      C)3,2       D)a=3,b=2 

三.指针与数组:

如:

inta[10],*p;

p=a;(或p=&a[0];)

表示:

数组的第0个元素a[0]的地址是a,(等价于p)

   数组的第1个元素a[1]的地址是a+1,(等价于p+1)

   ……

   数组的第i个元素a[i]的地址是a+i,(等价于p+i)

*(a+i)与a[i]等价;*(p+i)与a[i]等价。

四.指向字符串的指针变量:

例:

使用指针编写程序,按照正反两个顺序打印一个字符串。

     

#include

voidmain()

 {char*p_string1,*p_string2;

  p_string1="computerlanguage";   /*定

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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