C语言程序设计第1至8章复习知识点总结_第1页
C语言程序设计第1至8章复习知识点总结_第2页
C语言程序设计第1至8章复习知识点总结_第3页
C语言程序设计第1至8章复习知识点总结_第4页
C语言程序设计第1至8章复习知识点总结_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 c语言概述总结,1 简单的C语言程序介绍,例1.1 输出一行信息 /* example1.1 The first C Program*/ #include void main( ) printf(“Shantou Polytechnic.n”);,例:下面程序执行后,变量b的值为 ,变量c的值为 。 main() int a, b, c=1; a = 21; b = a%8; /*c = + +a;*/,例1.3 求两个数中的较大者,* example1.3*/ #include /*包含头文件*/ void main()/*主函数*/ int max(int x,int y); /*

2、对调用函数max的声明,x,y为形参、整型*/ int a,b,c;/*定义变量a、b、c*/ scanf(%d,%d,/*将z的值返回,通过max带回调用处*/,10,7 max=10,2. C语言的结构特点,1、函数是组成C程序的基本构件; 2、一个函数由两部分组成; 函数的说明部分函数体 函数体: 说明语句; 执行语句; 3、一个C程序总是从main函数开始; 4、语句以分号“;”结束; 5、书写格式自由,* example1.4 */ #include /* the main program */ main() int a,b,sum; a=10; b=24; sum=add(a,b)

3、; printf(”sum= %dn,sum); /* This function */ int add(int x,int y) int z; z=x+y; return(z);,1、程序代码的录入, 生成源程序*.c(*.cpp,2、语法分析查错,翻译 生成目标程序*.obj,3、与其它目标程序或库 链接装配,生成可执行 程序*.exe,4、执行程序,得到结果,3. C程序的上机步骤,第二章 数据类型、运算符与表达式总结,1 二进制和补码求法,anan-1a1a0=an*2n+an-1*2n-1+a1*21+a0*20,如:1010=1*23+0*22+1*21+0*20=10,如:-5的

4、补码求法( -5的二进制:1000000000000101 ) 1、取绝对值:0000000000000101 2、取反: 1111111111111010 3、加“1” : 1111111111111011,二进制,常量的表示方法: 十进制:09,还有正、负号; 八进制:07,以 0开头; 十六进制:09,AF/af,以 0 x或 0X 开头,例、整数-35在机内的补码表示为,如:-35的补码求法( -35的二进制: 1000000000100011 ) 1、取绝对值:0000000000100011 2、取反: 1111111111011100 3、加“1” : 1111111111011

5、101,2 基本数据类型,1、整型 2、实型 3、字符型,例:以下选项中,不能作为合法常量的是( ) A) 1.234e04 B)1.234e0.4 C) 1.234e+4 D)1.234e0,B,2 常量与变量,符号常量:#define N 3 /没有“;”,运行中N不可变 /N按原样3代入程序中,例:下列程序执行后的输出结果是( ) #define YC(x) x*(x-1) main() int a=1,b=2; printf(%d n, YC(1+a+b); A) 6 B) 8C) 10D) 12,B,变量:int a=510,标识符的构成规则: 以字母和下划线开头; 随后可跟数个或零

6、个字母、数字和下划线; 标识符的长度由系统决定,最好不要超过8个字符,例如: y,Y,year, year3,_day,a_to_B,这些都合法 6x,int,re-write,the room,#hour,这些不合法,注意区分大小写:sum和Sum是两个不同的标识符,变量必须“先定义后使用,变量的定义、赋初值和引用,1、整型 : int:16bit=2Byte ;long: 4Byte 2、实型:float:4Byte;double:8Byte 3、字符型:char:8bit,实型数有效位数: float:7位有效数字 double:1516位有效数字,转义字符常量 反斜杆 与可视字符组合,

7、例如(P24表2.3,include void main() char c1,c2; c1=a; c2=b; printf(%d,%dn,c1,c2); printf(%c,%cn,c1,c2); c1=c1-32; c2=c2-32; printf(%c,%cn,c1,c2);,例2.7 大小写字母的转换,结果: 97,98 a,b A,B,字符型能与整型一起运算,用双引号括起的一个字符序列 例如:ABC、123、a、 nt nGood morning 字符串常量的长度 : 所包含的字符个数 字符串常量的存储方式,所占存储单元数:串长度1 例如,字符串 结束标记,字符串常量,9、以下程序的输

8、出结果是( )。 char str15=”hello!”; printf(“%dn”,strlen(str); A. 15 B. 14 C. 7 D. 6 str1=? 数组str有多少个元素?15个,str6开始都是0,4 运算符和表达式,表达式:y+=i+; a=3; a /括号运算符 () ,成员运算符. - 全体单目第二; /所有的单目运算符比如+ - +(正) -(负) /指针运算* /注意顺序:优先级(|) 底于 优先级( (1)-i+; (2)c=ab? i+:-i; (3)a+=a-=a*a; (4)aint/int=int直接去掉小数部分) (6)mnk如何表示,在C语言中,

9、要求运算数必须是整型的运算符是( ) A)% B)/C)D),以下程序输出结果: #include void main() int a=1,b=2,c=3,d=4,m=2,n=2; printf(%d,%d,(m=ab) #判断char型变量ch是否为大写字母的正确表达式是 。 A) A=A) a=d/100%9; b=(-1) 结果是,6)以下程序运行后的输出结果是 main() int a,b,c; a=10; b=20; c=(a%b1); printf(%dn, c);,0,各种类型数据的混合运算:要求自动转换类型,整型、实型、字符型数据可以混合运算, 不同类型的数据要先转换成同一类型

10、,从左向右扫描,根据优先级 决定运算顺序。 注意:每一步运算都要先 转换为同一类型 例: int a=3,b=4; float c=3.0/4,d=b/a; printf(%f,%f,c,d,数据类型的强制转换,例2.8强制类型转换 #include void main() double x; int i; x=3.6; i=(int)x; printf(x=%6.2f;i=%d,x,i);,x= 3.60;i=3,逗号运算符和逗号表达式,逗号表达式的一般形式 表达式1,表达式2,表达式n 逗号表达式的值 从左向右,依次对表达式求值,最后得到表达式n 的值就是逗号表达式的值,例如: a=5,

11、a+, a* 3 表达式值为 18,且a=6 t=1, t+5, t+ 表达式值为 1,且t=2 x=(a=3*5, a*4 ) 赋值表达式的值为60,且x=60, a=15,第三章 顺序程序设计总结,一、算法,1966年提出三种基本结构:顺序、选择和循环,1)顺序结构,2)选择结构,a=3; b=a;,if(a!=0) b=sin(a)/a; else b=1;,结构化程序的三种基本结构,3)循环结构:根据条件P决定是否执行循环体中的操作,while(i10) s=s+3; i+;,do s=s+3; i+; while(i10);,当型循环,直到型循环,c语句分为两大类,C程序由函数组成。

12、函数的格式: 函数名(参数表) 说明部分; 执行部分;,数据类型说明语句,可执行语句,1、说明性语句; 2、可执行语句,二、C语句,可执行语句分为5类,1)控制语句:9种(P54-55) (2)函数调用语句 (3)表达式语句 (4)空语句 “;” (5)复合语句,1)控制语句:9种,9种控制语句: if( )else for( ) while( ) dowhile( ); continue /结束本次循环 break /终止循环或switch语句 switch goto return,赋值表达式 将表达式的值存入变量对应的内存单元中 m=12 b=(+a)-2 m%=3+n 等价于 m=m%(

13、3+n) x *= (x = 5) a+=a-=a*a 等价于a+=(a-=(a*a,赋值表达式和赋值语句,如果a=3,a+=a-=a*a结果是-12,赋值号左边必须是变量,右边可以是C语言任意合法的表达式 例如:n= t +2s ;(a=3*5)=4*3;合法 a+ b = 15 ;a=3*5=4*3 ;不合法,赋值号与数学中的等号含义不同 例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a,int=float或int=double,对实数取整,舍去小数部分,三、数据输入/出,include,1、字符数据的输入输出,putchar(c); /字符输出函数,如:输出到显示

14、器 getchar( ); /字符输入函数,如:在键盘输入,include void main() char c; c=getchar(); putchar(c); putchar(c); putchar(99);,结果:a acc,注意: #只是输出/入一个字符 #getchar()没有参数 可以直接赋给字符变量 #putchar()有参数 可以是字符和整型常量 和变量,2、格式输入输出,scanf(“格式控制”,地址列表); printf(“格式控制”,参数列表,格式控制包括,1.格式说明 由%开头和格式字符组成。它的作用是将输入/出的数据转换为指定的格式输入/出。 2.普通字符 即需要原

15、样输出的字符,例如: %ld 输出十进制长整型数 %m.nf 右对齐,m位域宽,n位小数或n个字符 %-m.ne e为指数形式,-为左对齐 %m.ns截取字符串左边n个字符 %+d输出带符号整型数 %*3d表示读入3位整数但不赋给任何变量,3 以下的输出结果是_。 main() int x=1,y=2; printf(“x=%d y=%d * sum * =%dn”,x,y,x+y); printf(“10 Squared is : %dn”,10*10);,例:输入2345678,结果是_ #include void main() int x, y; scanf(%2d%*2s%1d,第四章

16、 选择结构程序设计总结,1、关系和逻辑表达式,结果是一个逻辑值:“真”和“假”;即“0”或“1,关系运算符 (左结合) = = = != 较高 较低,逻辑运算符 scanf(%d%d%d,解法2、 #include void main( ) int a,b,c,max; scanf(%d%d%d,4.3多分支选择结构,由选择结构派生出来的一种结构, 它也是一种基本结构(满足3个特征,switch(k) /K为任何表达式 case k1:A1; break; case k2:A2; break; case kn:An; break; default ; /k1kn为常量表达式,Switch语句说

17、明: (1) switch后面括弧内的“表达式” 允许为任何类型。 (2) 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 (3) 每一个case的常量表达式的值必须互不相同, (4) 各个case和default的出现次序不影响执行结果。例如,可以先出现“default:”,再出现“case D:”,然后是“case a:”。 (5) 执行完一个case后面的语句后,流程控制转移到下一个case继续执行,直到switch结束。 (6) 多个case可以共用一组执行

18、语句,例:从键盘上输入一个成绩等级grade,按下列原则输出其对应的分数: grade为A,分数为85-100;grade为B,分数为70-84; grade为C,分数为60-69; grade为D,分数为60。 grade 为其他情况时,提示用户:输入有错,include void main() char grade; printf(Input a grade(A-D): ); scanf(%c,第五章 循环结构程序设计总结,1、while()、dowhile(); 、for(1;2;3)三种语句,while语句格式:While(表达式) 语句,do-while语句,do-while语句是先

19、执行循环体,然后判断循环条件是否成立。 一般形式为: do 循环体语句 while(表达式,注意:do-while是一条语句, 所以最后要加一个分号,功能: 计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句,表达式可以部分或全部省略,但“;”不可省略,for语句的算法描述,break语句的一般形式为: break,注意:break语句不能用于循环语句和Switch语句之外的任何其他语句中,while语句,do-while语句,for语句,while语句,do-while语句,for

20、语句,continue语句的一般形式为: continue,3break语句只是结束本次循环体的执行, 不会结束整个循环语句。 (,4、 for (a=1,b=1;a=20) break; if(b%3=1) b+=3; continue; b-=5; printf(“%d”,b); 程序的输出结果b的值为,22,循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。 三种循环(while循环、dowhile循环和for循环)可以互相嵌套,for(int i;in;i+) for(int j;jm;j+) 语句,1、从键盘上输入10个数,求其平均值。 main() int i;

21、float f,sum; for(i=1,sum=0.0;i11;i+) ; ; printf(“average=%fn”,sum/10);,1、scanf(“%d,7)下面程序的功能是:计算“1+2+3+100”之和,请填空: #include main() int i=1, sum; 1 ; while ( 2) sum += i+; printf(1100之和 = %dn, sum);,1、sum=0; 2、i=100,五、编程求出“1/5 + 1/10 + 1/15+ + 1/90”的值并输出到屏幕上,include void main() double sum=0; for(int

22、i=5;i=90;i=i+5) sum+=1.0/i; printf(sum=%fn,sum);,第六章 数组总结,1、定义和引用一维数组,一维数组的定义,数据类型 数组名常量表达式,例如: int a10; float score5,数据类型”: 是数组元素的数据类型。 “数组名”: 遵循C语言标识符规则。 “常量表达式”:表示数组中有多少个元素,即数组的长度。它可以是整型常量、整型常量表达式或符号常量,不可以包含变量,引用一维数组的元素,数组名下标,数组元素的形式,例如:输入学生成绩 float score5,a,b; for(int i=0;i5;i+) scanf(%f,注意: 1 下

23、标可以是整型常量或整型表达式,从0开始。 2 只能逐个引用数组元素而不能一次引用整个数组 3 数组名代表数组的首地址, 即score的值与score0 的地址值相同,区别:数组定义和引用时” ”中内容,定义时:常量表达式,引用时:下标,float score5; 5代表scroe数组有5个元素,下标可以是整型常量或整型表达式; 下标从0开始。 float a= score4 ; /score4为第5个元素 a= score5 ;/错误,只能0到4,一维数组初始化,初始化:在定义数组时给数组元素赋初值。 (也可以用一个赋值语句来实现,1.在定义数组时,对全部数组元素赋初值 例如:int a5=0

24、,1,2,3,4; 此时可以省略数组长度, 例如:int a =0,1,2,3,4; 2.在定义数组时,对部分数组元素赋初值 例如:int a5=1,2,3;系统为其余元素赋 0 。 3.当初值的个数多于数组元素的个数时,编译出错 例如: int a5=0,1,2,3,4,5; /出错,2 二维数组的定义和引用,数据类型 数组名常量表达式1常量表达式2,例如: float x23; /各个元素为float型,c中,二维数组中元素的排列的顺序是按行存放的,例如:float x23,元素,地址 值 数组元素,x0是数组名,是元素x00的地址,x1是数组名, 是元素x10的地址,二维数组可看作是一种

25、特殊的一维数组,x0- x00,x01,x02,x1- x10,x11,x12,例如,可以把x数组看作是包含二个元素的一维数组,每个元素又是一个含有三个元素一维数组,引用二维数组的元素,注意: 1 下标表达式可以是整型常量或整型表达式 2 下标的值必须在已经定义的数组大小范围内,a34=3; /* 下标越界 */ a1,2=1; /* 应写成 a12=1; *,例:int a34; a00=3; a01=a00+10,数组名行下标表达式列下标表达式,数组元素的表示形式,例:int a23=1,2,3,4,5,6,1按行赋初值,例:int a23=1,2,3,4,5,6; 初始化后结果: 1 2

26、 3 4 5 6,2按数组元素在内存中排列的顺序对各元素赋初值,3给部分元素赋初值,例:int a23=1,4; 初始化后结果: 1 0 0 4 0 0,二维数组的初始化,a 结果: a0: 1 2 3 a1: 4 5 6 a2: 7 0 0,b 结果: b0: 1 0 0 0 b1: 4 5 0 0,初始化结果,例如:int a3=1,2,3,4,5,6,7; int b4=1,4,5,4数组初始化时,行长度可省,列长度不能省,下面对二维数组的定义都是错误的,float x3 =1.0,2.0,3.0,4.0,5.0,6.0,int a ,b 2,c3,int m24=1,2,3,4,5,6

27、,7,8,9,编译出错,初值个数多于数组元素的个数,3 字符数组,字符数组:可以存放若干个字符,也可以存放字符串,例如: char s10; s数组是一维字符数组,它可以存放10个字符或一个长度不大于9的字符串,字符串: 字符串的末尾必须有0字符,它的ASCII码值为0,不是字符串,是字符串,再例如: char a35; a数组是一个二维的字符数组,可以存放15个字符或3个长度不大于4的字符串,注意:字符串只能存放在字符数组中,再例如: char a310=basic,pascal,c,用字符串常量赋初值,例如: char str10= a string; 或char str10= a str

28、ing,是字符串吗,输出字符串 例如:char c = China; printf(%s,c); 输出结果为:China,C是数组首地址,输出时遇 0 为止,再例如:char c =pascal0basic; printf(%s,c); 输出结果为:pascal,字符数组的输入/输出,1)逐个字符输入输出,用格式符:%c ; (2)整个字符串一次输入输出,用格式符:%s,输入字符串 例如: char c10; scanf(%s,c); 输入:beijing,三个字符串用空格隔开,分别赋给str1、str2、str3三个数组,再例如: char str110,str210,str310; sca

29、nf( %s%s%s,str1,str2,str3); 输入: pascal basic c,注意:不可以为数组整体赋值,例如: char c10; c=beijing ; 因为c是数组首地址,是常量,1、puts(str) 功能:输出一个字符串,输出后自动换行。 说明:str可以是字符数组名或字符串常量,2、gets(str) 功能:从键盘读入一个字符串存入str数组中,并且得到 一个函数值,该函数值是str数组的首地址。 说明:str是数组名,3、strcat(str1,str2) 功能:把str2中的字符串连接到str1字符串的后面,结果放在str1数组中,函数值是str1的值,4、st

30、rcpy(str1,str2) 功能:将str2中的字符串复制到str1数组中,5、strlen(str) 功能:测试字符串长度。函数值就是str中字符的个数。 不包括0,字符串处理函数(表6.1,6、strlwr(str) 功能:将str字符串中的大写字母转换成小写字母,7、strupr(str) 功能:将str字符串中的小写字母转换成大写 字母,8、strcmp(str1,str2) 功能:字符串比较,介绍的8个字符串处理函数,在程序的开始应该写: #include stdio.h 或 #include string.h,82,调用格式:strcmp(str1,str2,str1,str2

31、,str1,str2,str1,str2,strcmp(str1,str2)=0,strcmp(str1,str2)0,strcmp(str1,str2)0,自左向右逐个比较ASCII码值,直到出现不同字符或0为止,12、下列程序的输出结果是(D )。 char *p1=abcd, *p2=ABCD, str50=xyz; strcpy(str+2,strcat(p1+2,p2+1); printf(%s,str); A. xyabcAB B. abcABz C. ABabcz D. xycdBCD,第七章 函数总结,1、c程序必须有一个,且只有一个main函数,2、函数名要遵守标识符的命名规

32、则,函数名是函数的入口地址,3、函数的声明和定义的区别是: 定义时有函数的功能,声明没有,4、定义和声明时叫形参,调用时叫实参 形参与实参的个数相等,对应,类型相匹配,5、函数调用,调用传递参数(单向值传递)返回主调函数释放形参,10)若程序中定义了以下函数 doublemyadd(doublea,doubleb)return(a+b); 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项 中错误的说明是() A)doublemyadd(doublea,b); B)doublemyadd(double,double); C)doublemyadd(doubleb,doublea

33、); D)doublemyadd(doublex,doubley,2、有一个一维数组,内放10个学生成绩,写一个 函数(主函数调用该函数),求出平均分,include float average(float array ,int n) int i; float aver,sum=array0; for(i=1;in;i+) sum=sum+arrayi; aver=sum/n; return(aver); void main() float ave,score10; int i; for(i=0;i10;i+) scanf(%f,6、函数的嵌套和递归,嵌套调用:就是在定义一个函数时,其函数体内

34、 又包含另一个函数,递归调用:在调用一个函数的过程中又出现直接或间接地 调用该函数本身,1、递归结束条件 2、一般用到if语句结构 if(结束条件)语句 else 语句(该语句调用本函数,规模越来越小) 3、递归可以分为函数调用过程和返回过程,3用递归的方法求n!(修改程序) #include float fac(n) float f; if (n0) printf (“n0, data error!”); else if (n=0 | n=1) f=1; else f=(n-1)*n; return(f); void main( ) int n; float y; scanf (“%d”,改

35、正1:float fac(int n) 改正2:else if (n=0 | n=1) f=1; 改正3:else f=fac(n-1)*n,错误1: 错误2: 错误3,7、变量的作用域和生存期,变量的作用域-局部变量和全局变量,8)以下程序输出的最后一个值是 。 #include int fun(int n) static int f = 1; f *= n; return f; void main() int i; for(i=1; i=3; i+) printf(%dn, fun(i);,第8章 指针总结,1、认识一下指针的相关内容,int *p; /定义一个指针变量p /“*”是指向(单目运算符) /*p是一个变量 /p叫做指针变量。它存放的是地址,指针=地址,int i=3; int *i_pointer,int i=3; int *i_pointer; i_pointer,定义的同时初始化,1、*和 int array; (array,); void (int arr,int ),编译时,形参arr按指针变量处理,相当于 void f(int *arr,int n,调用函数时数组名和指针变量作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论