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

下载本文档

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

文档简介

1、c语言第一至八章总结第一章第一章 c语言概述语言概述总结总结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;*/51c语言第一至八章总结例1.3 求两个数中的较大者/* exa

2、mple1.3*/#include /*包含头文件*/void main()/*主函数*/int max(int x,int y); /*对调用函数max的声明,x,y为形参、整型*/int a,b,c;/*定义变量a、b、c*/scanf(%d,%d,&a,&b);/*输入变量a,b的值*/c=max(a,b);/*调用max函数,将得到的值赋给c,x、y为实参*/printf(max=%dn,c);/*输出c的值*/int max(int x, int y)/*定义max函数,函数值为整型,x、y为形参,整型*/int z;/*定义内部变量z*/if (xy) z=x;/*比较x,y的大小

3、,如果x大于y,则执行z=x*/else z=y;/*否则执行z=y*/return (z);/*将z的值返回,通过max带回调用处*/10,7max=10c语言第一至八章总结2. c语言的结构特点语言的结构特点1、函数函数是组成是组成c程序的基本构件;程序的基本构件;2、一个函数由两部分组成;、一个函数由两部分组成;函数的说明部分函数的说明部分函数体函数体函数体:函数体: 说明语句;说明语句;执行语句;执行语句; 3、一个、一个c程序总是程序总是从从main函数开始函数开始;4、语句以分号、语句以分号“;”结束;结束;5、书写格式自由。、书写格式自由。/* example1.4 */#inc

4、lude /* the main program */main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* this function */int add(int x,int y) int z; z=x+y; return(z);c语言第一至八章总结 开 始 编 辑 编 译 连 接 执 行 有错?结果正确? 结 束有源程序 file.c目标程序file.obj库函数和其它目标程序可执行目标程序file.exe无正确不正确1编辑3链接2编译4执行1、程序代码的录入,生成源程序*.c(*.cpp)2、语法分析查

5、错,翻译生成目标程序*.obj3、与其它目标程序或库链接装配,生成可执行程序*.exe4、执行程序,得到结果3. c程序的上机步骤程序的上机步骤源程序目标程序可执行程序内容程序设计语言机器语言机器语言可执行不可以不可以可以文件名后缀.c.obj.exec语言第一至八章总结第二章第二章 数据类型、运算符与表达式数据类型、运算符与表达式总结总结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的补码求法(的补码求法( -5的二进制:的二进制:1

6、000000000000101 ) 1、取绝对值取绝对值:0000000000000101 2、取反:取反: 1111111111111010 3、加加“1” : 1111111111111011补码的求法:补码的求法:1、正数正数的补码与原码相同。的补码与原码相同。2、负数的补码:、负数的补码:取绝对值取绝对值,取反取反,加加“1”。二进制:二进制:c语言第一至八章总结常量的表示方法:常量的表示方法:十进制十进制:09,还有正、负号;,还有正、负号;八进制八进制:07,以,以 0开头;开头;十六进制十六进制:09,af/af,以,以 0 x或或 0x 开头。开头。例、例、整数整数-35在机内

7、的补码表示为在机内的补码表示为 。如:如:-35的补码求法(的补码求法( -35的二进制:的二进制: 1000000000100011 ) 1、取绝对值取绝对值:0000000000100011 2、取反:取反: 1111111111011100 3、加加“1” : 1111111111011101c语言第一至八章总结2 基本数据类型基本数据类型1、整型、整型 2、实型、实型 3、字符型、字符型实型实型 小数形式小数形式 :3.14指数形式:指数形式:3.14*103 =3.14e003字符字符对应对应ascii表表标准化指数形式:标准化指数形式:3.14*103 只有一个大于只有一个大于0的

8、整数的整数例:以下选项中例:以下选项中,不能作为合法常量的是(不能作为合法常量的是( ) a) 1.234e04 b)1.234e0.4 c) 1.234e+4 d)1.234e0bc语言第一至八章总结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) 8 c) 10 d) 12 bc语

9、言第一至八章总结变量:变量:int a=510;标识符的构成规则标识符的构成规则:以字母和下划线以字母和下划线开头开头;随后可跟数个或零个随后可跟数个或零个字母、数字和下划线字母、数字和下划线;标识符的长度标识符的长度由系统决定由系统决定,最好不要超过,最好不要超过8个字符。个字符。例如:例如:y,y,year, year3,_day,a_to_b,这些都合法这些都合法6x,int,re-write,the room,#hour,这些不合法,这些不合法注意区分大小写注意区分大小写:sum和和sum是两个不同的标识符。是两个不同的标识符。变量必须变量必须“先定义后使用先定义后使用”c语言第一至八

10、章总结变量的变量的定义、赋初值和引用定义、赋初值和引用1、整型、整型 2、实型、实型 3、字符型、字符型int a;long a;unsigned u;%d;%ld;%ufloat f=3.14;double f=1.1e003;%f;double输入输入%lfchar c=a;%c字符串用字符串用%s1、整型、整型 : int:16bit=2byte ;long: 4byte 2、实型、实型:float:4byte;double:8byte 3、字符型、字符型:char:8bit实型数有效位数:实型数有效位数: float:7位位有效数字有效数字 double:1516位位有效数字有效数字c

11、语言第一至八章总结转义字符常量转义字符常量反斜杆反斜杆 与与可视字符可视字符组合,例如组合,例如(p24表表2.3)00字符串结束标志字符串结束标志n换行换行t跳到下一个输出位置跳到下一个输出位置双引号字符双引号字符ddd ddd为为1到到3位八进制数所代表的字符位八进制数所代表的字符xhh hh为为1到到2位十六进制数所代表的字符位十六进制数所代表的字符c语言第一至八章总结#includevoid main() char c1,c2; c1=a; c2=b; printf(%d,%dn,c1,c2); printf(%c,%cn,c1,c2); c1=c1-32; c2=c2-32; pri

12、ntf(%c,%cn,c1,c2);例例2.7 大小写字母的转换。大小写字母的转换。结果:结果:97,98a,ba,b字符型能与整型一起运算字符型能与整型一起运算c语言第一至八章总结 用用双引号双引号括起的一个字符序列括起的一个字符序列 例如:例如:abc、123、a、 nt ngood morning 字符串常量的字符串常量的长度长度 : 所包含的字符个数所包含的字符个数 字符串常量的存储方式:字符串常量的存储方式: n g o o dm orni n g 0a0字符串字符串结束标记结束标记 字符串常量字符串常量 c语言第一至八章总结9、以下程序的输出结果是(、以下程序的输出结果是( )。)

13、。 char str15=”hello!”;printf(“%dn”,strlen(str); a. 15 b. 14 c. 7 d. 6str1=?数组数组str有多少个元素?有多少个元素?15个,个,str6开始都是开始都是0str1=edc语言第一至八章总结4 运算符和表达式运算符和表达式表达式表达式运算符运算符优先级优先级结合性结合性表达式:表达式:y+=i+; a=3; a&41、表达式的值表达式的值是多少?是多少?2、运算对象的值运算对象的值是多少?是多少?运算符:运算符:按运算按运算对象对象分:分:单目、双目、三目单目、双目、三目按按功能功能分:分:算术、赋值、关系、逻辑算术、赋

14、值、关系、逻辑条件、逗号、位、其他条件、逗号、位、其他c语言第一至八章总结c运算符的运算符的“优先级口决优先级口决”(必须认识所有的(必须认识所有的c的运算符)。的运算符)。优先级优先级:括号成员第一括号成员第一; /括号运算符括号运算符 () ,成员运算符成员运算符. -全体单目第二全体单目第二; /所有的单目运算符比如所有的单目运算符比如+ - +(正正) -(负负) /指针运算指针运算*&乘除余三乘除余三,加减四加减四; /这个这个余余是指取余运算即是指取余运算即%移位五,关系六移位五,关系六; /移位运算符:移位运算符: 关系:关系: = b? i+:-i;(3)a+=a-=a*a;

15、(4)a&b; (&和和|有屏蔽功能有屏蔽功能)(5)b%a和和b/a;(;(%要求要求int%int;int/int=int直接去掉小数部分直接去掉小数部分)(6)mnk如何表示?如何表示?#在在c语言中语言中,要求运算数必须是整型的运算符是(要求运算数必须是整型的运算符是( )a)% b)/c)d)!c语言第一至八章总结#以下程序输出结果:以下程序输出结果: #includevoid main()int a=1,b=2,c=3,d=4,m=2,n=2;printf(%d,%d,(m=ab)&(n=cd),n);#判断判断char型变量型变量ch是否为大写字母的正确表达式是是否为大写字母的正

16、确表达式是 。a) a=ch=a)&(ch=a)&(ch=z) d) (a= ch) 0,2cc语言第一至八章总结#以下程序的运行结果是以下程序的运行结果是 。#includevoid main() int a,b,d=241; a=d/100%9; b=(-1)&(-1); printf(%d,%d,a,b);#、int a=3; a+=(a1)?a:1; printf(“%d”,a); 结果是结果是 。2,14c语言第一至八章总结(6)以下程序运行后的输出结果是)以下程序运行后的输出结果是 main() int a,b,c; a=10;b=20;c=(a%b1); printf(%dn,

17、c);0c语言第一至八章总结各种类型数据的混合运算:要求自动转换类型各种类型数据的混合运算:要求自动转换类型doublefloatlongintchar,shortunsigned高高低低 整型、实型、字符型整型、实型、字符型数据可以混合运算,数据可以混合运算,不同不同类型的数据要类型的数据要先转换成同一类型。先转换成同一类型。从从左向右左向右扫描,根据扫描,根据优先级优先级决定运算顺序。决定运算顺序。注意注意:每一步运算都要先:每一步运算都要先转换为同一类型转换为同一类型例:例:int a=3,b=4;float c=3.0/4,d=b/a;printf(%f,%f,c,d);c语言第一至八

18、章总结数据类型的强制转换数据类型的强制转换 例例2.8强制类型转换强制类型转换#includevoid main() double x; int i; x=3.6; i=(int)x; printf(x=%6.2f;i=%d,x,i);x= 3.60;i=3c语言第一至八章总结逗号运算符和逗号表达式逗号运算符和逗号表达式 逗号表达式的一般形式逗号表达式的一般形式 表达式表达式1,表达式,表达式2,表达式,表达式n 逗号表达式的逗号表达式的值值 从从左向右左向右,依次对表达式求值依次对表达式求值,最后最后得到得到表达表达式式n 的值的值就是逗号表达式的值就是逗号表达式的值 a=5, a+, a*

19、 3 t=1, t+5, t+ x=(a=3*5, a*4 )c语言第一至八章总结第三章第三章 顺序程序设计顺序程序设计总结总结c语言第一至八章总结一、一、算法1966年提出三种基本结构:年提出三种基本结构:顺序、选择和循环。顺序、选择和循环。(1)顺序结构顺序结构abab(2)选择结构选择结构a=3;b=a;ynabp成立成立? p t f a bif(a!=0) b=sin(a)/a;else b=1;结构化程序的结构化程序的三种基本结构三种基本结构c语言第一至八章总结(3)循环结构循环结构:根据根据条件条件p决定是否执行循环体中的操作决定是否执行循环体中的操作nyp成立成立?a当当p成立

20、时成立时 a a当p成立时ynap成立成立?while(i10) s=s+3; i+; do s=s+3; i+; while(i10); 当型循环当型循环直到型循环直到型循环c语言第一至八章总结c语句分为两大类:语句分为两大类:可执行语句可执行语句1、说明性语句;、说明性语句;2、可执行语句。、可执行语句。二、二、c语句语句语句语句格式格式执行步骤执行步骤(流程图流程图)c语言第一至八章总结可执行语句分为可执行语句分为5类:类:(1)控制控制语句:语句:9种(种(p54-55)(2)函数调用函数调用语句语句(3)表达式表达式语句语句(4)空空语句语句 “;”(5)复合复合语句语句 .c语言第

21、一至八章总结(1)控制控制语句:语句:9种种9种控制语句: if( )else for( ) while( ) dowhile( ); continue /结束本次循环 break /终止循环或switch语句 switch goto return c语言第一至八章总结赋值表达式赋值表达式将将表达式的值表达式的值存入存入变量对应的内存单元变量对应的内存单元中中 m=12 b=(+a)-2 m%=3+n 等价于等价于 m=m%(3+n) x *= (x = 5) a+=a-=a*a 等价于等价于a+=(a-=(a*a)赋值表达式和赋值语句赋值表达式和赋值语句如果如果a=3,a+=a-=a*a结果

22、是结果是-12c语言第一至八章总结赋值号赋值号左边左边必须是变量必须是变量,右边右边可以是可以是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=aint=float或或int=double,对实数取整,舍去小数部分,对实数取整,舍去小数部分c语言第一至八章总结三、数据输入三、数据输入/出出#include1、字符数据字符

23、数据的输入输出的输入输出putchar(c); /字符输出函数,字符输出函数,如:输出到显示器如:输出到显示器getchar( ); /字符输入函数,字符输入函数,如:在键盘输入如:在键盘输入#includevoid main() char c; c=getchar(); putchar(c); putchar(c); putchar(99);结果:结果:a acc注意:注意:#只是输出只是输出/入入一个字符一个字符#getchar()没有参数没有参数 可以直接赋给字符变量可以直接赋给字符变量#putchar()有参数有参数 可以是字符和整型常量可以是字符和整型常量 和变量和变量c语言第一至八

24、章总结2、格式输入输出、格式输入输出scanf(“格式控制格式控制”,地址地址列表列表);printf(“格式控制格式控制”,参数参数列表列表);格式控制包括:格式控制包括:1.格式说明格式说明 由由%开头开头和和格式字符格式字符组成。它的作用是将输入组成。它的作用是将输入/出的数据转出的数据转换为换为指定的格式指定的格式输入输入/出。出。2.普通字符普通字符 即需要原样输出的字符。即需要原样输出的字符。c语言第一至八章总结 例如:例如: %ld 输出十进制输出十进制长整型数长整型数 %m.nf 右对齐,右对齐,m位域宽位域宽,n位小数位小数或或n个字符个字符 %-m.ne e为指数形式,为指

25、数形式,-为左对齐为左对齐 %m.ns截取字符串左边截取字符串左边n个字符个字符 %+d输出带符号整型数输出带符号整型数 %*3d表示表示读入读入3位整数但不赋给任何变量位整数但不赋给任何变量c语言第一至八章总结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, &x,

26、&y);printf(%d, x/y);3x=1 y=2* sum * =310 squared is : 100c语言第一至八章总结第四章第四章 选择结构程序设计选择结构程序设计总结总结c语言第一至八章总结1、关系关系和和逻辑逻辑表达式表达式结果结果是一个逻辑值:是一个逻辑值:“真真”和和“假假”;即;即“0”或或“1”关系运算符关系运算符 (左结合左结合) = bc等价于等价于ab&bc!为单目运算符为单目运算符!非!非算术运算符算术运算符关系运算符关系运算符&与与|或或赋值运算符赋值运算符高高低低c语言第一至八章总结2、if语句语句语句语句格式格式执行步骤执行步骤(流程图流程图) if语

27、句的三种格式:语句的三种格式:1 if(表达式表达式)语句语句2 if(表达式表达式) 语句语句1 else 语句语句23. if(表达式表达式1) 语句语句1 else if(表达式表达式2) 语句语句2 else if(表达式表达式m)语句语句m else 语句语句n注:注:1、其中内嵌语句要是多条其中内嵌语句要是多条要用符合语句要用符合语句;2、表达式是、表达式是c合法的表达合法的表达式;式;3、else不能单独使用。不能单独使用。c语言第一至八章总结1 if(表达式表达式)语句语句2 if(表达式表达式) 语句语句1 else 语句语句2c语言第一至八章总结3. if(表达式表达式1)

28、 语句语句1 else if(表达式表达式2) 语句语句2 else if(表达式表达式3)语句语句3 else if(表达式表达式4)语句语句4 else 语句语句5c语言第一至八章总结3、嵌套的、嵌套的if语句语句 在在if语句中又包含语句中又包含一个或多个一个或多个if语句语句称为称为if语句的嵌套语句的嵌套。一般形式如下:一般形式如下:if() if() 语句语句1 else 语句语句2内嵌一个内嵌一个if语句语句else if() 语句语句3 else 语句语句4内嵌一个内嵌一个if语句语句c语言第一至八章总结注意注意:if与与else的的配对关系配对关系。else总是与它总是与它上

29、面最近的上面最近的未未配对的配对的if配对。配对。if() if() 语句语句1else if() 语句语句2else 语句语句3内嵌内嵌if语句语句例如:以下例如:以下if与与else的配对关系的配对关系(p101)可以可以加加 来确定配对关系来确定配对关系if() if() 语句语句1else if() 语句语句2else 语句语句3c语言第一至八章总结1. 三个整数三个整数a、b、c,由键盘输入,输出其中最大的一个数。,由键盘输入,输出其中最大的一个数。解法解法1、#includevoid main( )int a,b,c,max;scanf(%d%d%d,&a,&b,&c);if(am

30、ax)max=a;if(bmax)max=b;if(cmax)max=c;printf(max=%dn,max);解法解法2、#includevoid main( )int a,b,c,max;scanf(%d%d%d,&a,&b,&c);if(ab&ac)max=a;else if(ba&bc)max=b;else max=c;printf(max=%dn,max);c语言第一至八章总结4.3多分支选择结构多分支选择结构 由选择结构派生出来的一种结构,由选择结构派生出来的一种结构,它也是一种基本结构(它也是一种基本结构(满足满足3个特征个特征)ka1a2ank=k1k=k2k=knswitc

31、h(k) /k为为任何表达式任何表达式case k1:a1; break;case k2:a2; break; case kn:an; break; default ; /k1kn为为常量表达式常量表达式c语言第一至八章总结switch语句说明:语句说明:(1) switch后面括弧内的后面括弧内的“表达式表达式” 允许为允许为任何类型任何类型。(2) 当当表达式的值表达式的值与某一个与某一个case后面的后面的常量表达式常量表达式的的值相等值相等时,就执行时,就执行此此case后面的语句后面的语句,若所有的若所有的case中的常量表达式的值都没有与表达式的值匹配中的常量表达式的值都没有与表达

32、式的值匹配的,就执行的,就执行default后面的语句。后面的语句。(3) 每一个每一个case的的常量表达式的值必须常量表达式的值必须互不相同互不相同,(4) 各个各个case和和default的的出现次序不影响执行结果。出现次序不影响执行结果。例如,可以先出现例如,可以先出现“default:”,再出现,再出现“case d:”,然后是,然后是“case a:”。(5) 执行完一个执行完一个case后面的语句后,后面的语句后,流程控制转移到下一个流程控制转移到下一个case继续执行,直到继续执行,直到switch结束。结束。(6) 多个多个case可以可以共用一组执行语句共用一组执行语句。

33、c语言第一至八章总结例:从键盘上输入一个成绩等级例:从键盘上输入一个成绩等级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,& grade); switch (grade)case a:

34、 printf(85-100n); break; case b: printf(70-84n); break;case c: printf(60-69n); break;case d: printf(60n); break;default: printf(errorn); break; c语言第一至八章总结第五章第五章 循环结构程序设计循环结构程序设计总结总结c语言第一至八章总结1、while()、dowhile(); 、for(1;2;3)三种语句三种语句当表达式为真当表达式为真 语句语句表达式非表达式非0?语句语句while语句格式:语句格式:while(表达式表达式) 语句语句c语言第一

35、至八章总结 do-while语句语句 do-while语句是语句是先执行循环体先执行循环体,然后判断循环条件是然后判断循环条件是否成立否成立。 一般形式为:一般形式为: do 循环体语句循环体语句 while(表达式表达式);ny循环体循环体表达式非表达式非0?流程图流程图注意:注意:do-while是是一条语句一条语句,所以所以最后要加一个最后要加一个分号分号。c语言第一至八章总结 for语句的一般格式:语句的一般格式:for(表达式表达式1;表达式表达式2;表达式表达式3) 语句;语句;c语言第一至八章总结n-s结构图结构图for (表达式表达式1;表达式表达式2;表达式表达式3) 语句语

36、句ny流程图流程图计算表达式计算表达式1 语句语句计算表达式计算表达式3表达式表达式2为真为真?for语句的算法描述:语句的算法描述:c语言第一至八章总结break语句的语句的一般形式为一般形式为: break;注意:注意:break语句语句不能用于不能用于循环语句循环语句和和switch语句语句之外的之外的任何任何其他语句中。其他语句中。后续语句后续语句后续语句后续语句后续语句后续语句c语言第一至八章总结后续语句后续语句 后续语句后续语句后续语句后续语句continue语句的语句的一般形式为一般形式为: continue;c语言第一至八章总结3break语句只是结束本次循环体的执行,语句只是

37、结束本次循环体的执行, 不会结束整个循环语句。不会结束整个循环语句。 ( )4、for (a=1,b=1;a=20) break; if(b%3=1) b+=3; continue; b-=5; printf(“%d”,b); 程序的输出结果程序的输出结果b的值为的值为 。22c语言第一至八章总结 一个循环体内又包含另一个完整的循环结构,称为循环的一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。嵌套。 三种循环三种循环(while循环、循环、dowhile循环和循环和for循环循环)可以互相嵌可以互相嵌套套。for(int i;in;i+) for(int j;jm;j+) 语句;语句

38、;c语言第一至八章总结1、从键盘上输入、从键盘上输入10个数,求其平均值。个数,求其平均值。 main()int i;float f,sum;for(i=1,sum=0.0;i11;i+) ; ; printf(“average=%fn”,sum/10); 1、scanf(“%d”,&f);2、sum+=f;c语言第一至八章总结(7)下面程序的功能是:计算)下面程序的功能是:计算“1+2+3+100”之之和,请填空:和,请填空:#include main() int i=1, sum; 1 ;while ( 2)sum += i+; printf(1100之和之和 = %dn, sum); 1

39、、sum=0;2、i=100;c语言第一至八章总结五、编程求出五、编程求出“1/5 + 1/10 + 1/15+ + 1/90”的值的值并输出到屏幕上。并输出到屏幕上。#includevoid main()double sum=0;for(int i=5;i=90;i=i+5)sum+=1.0/i;printf(sum=%fn,sum);c语言第一至八章总结第六章第六章 数组数组总结总结c语言第一至八章总结1变量变量2数组数组3指针指针变变量的量的定义、赋初值、引用和定义、赋初值、引用和作为函数参数作为函数参数数组的数组的定义、初始化、引用和定义、初始化、引用和作为函数参数作为函数参数指针的指

40、针的定义、初始化、引用和定义、初始化、引用和作为函数参数作为函数参数考虑考虑c语言第一至八章总结1、定义和引用一维数组、定义和引用一维数组数据类型数据类型 数组名数组名常量表达式常量表达式;注意:注意:1 格式格式2 元素个数元素个数 c语言第一至八章总结数组数组元素元素的形式:的形式: 注意:注意:1 下标下标可以是可以是整型常量或整型表达式整型常量或整型表达式,从从0开始。开始。2 只能只能逐个引用逐个引用数组元素数组元素而不能一次引用整个数组而不能一次引用整个数组3 数组名数组名代表数组的代表数组的首地址首地址,即即score的值的值与与score0 的的地址值地址值相同。相同。c语言第

41、一至八章总结区别:数组区别:数组定义定义和和引用引用时时” ”中内容中内容定义时定义时:常量表达式常量表达式;引用时引用时:下标下标; float score5; 5代表代表scroe数组有数组有5个元素个元素。 下标下标可以是可以是整型常量或整型表达式;整型常量或整型表达式; 下标下标从从0开始。开始。 float a= score4 ; /score4为为第第5个个元素元素 a= score5 ;/错误,只能错误,只能0到到4c语言第一至八章总结一维数组初始化一维数组初始化初始化:在定义数组时给数组元素赋初值。初始化:在定义数组时给数组元素赋初值。 (也可以用一个赋值语句来实现也可以用一个

42、赋值语句来实现)1.在定义数组时,对全部数组元素赋初值在定义数组时,对全部数组元素赋初值 例如:例如:int a5=0,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; /出错出错c语言第一至八章总结2 二维数组的定义和引用二维数组的定义和引用数

43、据类型数据类型 数组名常量表达式数组名常量表达式1常量表达式常量表达式2; 例如: float x23; /各个元素为float型c语言第一至八章总结c c中,二维数组中元素的排列的顺序是中,二维数组中元素的排列的顺序是按行存放的按行存放的例如:float x23; x00 x01 x02x10 x11 x12元素元素x00 x01x02x10 x11x12c语言第一至八章总结x0是数组名,是元素是数组名,是元素x00的地址的地址x1是数组名,是数组名, 是元素是元素x10的地址的地址二维数组可看作是一种特殊的一维数组二维数组可看作是一种特殊的一维数组c语言第一至八章总结引用二维数组的元素引用

44、二维数组的元素注意:注意:1 下标表达式下标表达式可以是可以是整型常量或整型表达式整型常量或整型表达式2 下标的值下标的值必须在已经定义的数组大小范围内。必须在已经定义的数组大小范围内。a34=3; /* 下标越界下标越界 */a1,2=1; /* 应写成应写成 a12=1; */例:例:int a34; a00=3; a01=a00+10; c语言第一至八章总结例:int a23=1,2,3,4,5,6; 例:例:int a23=1,2,3,4,5,6;例:例:int a23=1,4;初始化后结果:初始化后结果: 1 0 0 4 0 0二维数组的初始化二维数组的初始化c语言第一至八章总结初始

45、化结果:初始化结果:例如:例如:int a3=1,2,3,4,5,6,7;int a3=1,2,3,4,5,6,7; int b4=1,4,5; int b4=1,4,5;4 4数组初始化时,数组初始化时,行长度可省行长度可省,列长度列长度不能不能省省c语言第一至八章总结下面对二维数组的下面对二维数组的定义定义都是都是错误错误的:的: 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,7,8,9; / 编译编译出错出错,初值个数多于数组元素的个数,初值个数多于数组元素的个数 c语言第一至八章总结3 3

46、字符数组字符数组: :, ,。 例如例如: s数组是一维字符数组,它可以存放数组是一维字符数组,它可以存放10个字符个字符或一个长或一个长度度不大于不大于9的字符串的字符串。不是字符串不是字符串c语言第一至八章总结c语言第一至八章总结再例如:再例如: char a310=basic,pascal,c;c语言第一至八章总结char c = china; printf(, ); chinac是数组首地址是数组首地址输出时遇输出时遇 0 为止为止 字符数组的输入字符数组的输入/ /输出输出(1)(1)逐个字符逐个字符输入输出,用格式符输入输出,用格式符: :%c %c ;(2)(2)整个字符串整个字

47、符串一次输入输出一次输入输出, ,用格式符用格式符: :%s %s 。c语言第一至八章总结注意:不可以为数组整体赋值,例如:注意:不可以为数组整体赋值,例如: c语言第一至八章总结。从键盘读入一个字符串存入从键盘读入一个字符串存入str数组中,并且得到数组中,并且得到一个函数值,该函数值是一个函数值,该函数值是str数组的首地址。数组的首地址。把把str2str2中的字符串中的字符串连接到连接到str1str1字符串的后面字符串的后面,结,结果放在果放在str1str1数组中,函数值是数组中,函数值是str1str1的值。的值。测试字符串长度。函数值就是测试字符串长度。函数值就是strstr中

48、字符的个数。中字符的个数。 不包括不包括00字符串处理函数字符串处理函数( (表表6.1)6.1)c语言第一至八章总结:将:将strstr字符串中的字符串中的大写大写字母字母转换成转换成小写小写字母字母将将strstr字符串中的字符串中的小写小写字母字母转换成转换成大写大写 字母。字母。字符串比较字符串比较介绍的介绍的8个字符串处理函数,在程序的开始应该写个字符串处理函数,在程序的开始应该写: #include stdio.h 或或 #include string.h c语言第一至八章总结82abcde0str1abcde0str2abcabcde0bcd0abcde0str1str2str1

49、str2自左向右逐个比较自左向右逐个比较asciiascii码值,直到出现不同字符或码值,直到出现不同字符或00为止为止c语言第一至八章总结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. xycdbcdc语言第一至八章总结第七章第七章 函数函数总结总结c语言第一至八章总结1、c程序必须程序必须有一个,且只有一个有一个,且只有一个main函数函数2、

50、函数名要遵守、函数名要遵守标识符的命名规则标识符的命名规则,函数名是函数,函数名是函数的入口地址。的入口地址。3、函数的声明和定义的区别是:、函数的声明和定义的区别是: 定义定义时有函数的时有函数的功能功能,声明声明没有没有4、定义和声明时叫、定义和声明时叫形参形参,调用时叫,调用时叫实参实参 形参与实参的个数相等,对应,类型相匹配形参与实参的个数相等,对应,类型相匹配5、函数调用、函数调用调用调用传递参数传递参数(单向值单向值传递传递)返回主调函数返回主调函数释释放形参放形参c语言第一至八章总结(10)若程序中定义了以下函数)若程序中定义了以下函数double myadd(double a,

51、double b) return (a+b);并将其放在调用语句之后,则在调用之前应该对该函数进行并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项说明,以下选项中错误的说明是(中错误的说明是()a)double myadd(double a,b); b)double myadd(double,double);c)double myadd(double b,double a); d)double myadd(double x,double y);c语言第一至八章总结2、有一个一维数组,内放、有一个一维数组,内放10个学生成绩,写一个个学生成绩,写一个函数函数(主函数调用该函数主

52、函数调用该函数),求出平,求出平 均分。均分。#includefloat 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,&scorei); ave=average(score,10); printf(%fn,ave); c语言第一至八章总结6、函数的嵌套和递归、函数的嵌套和递归嵌套调用:嵌套调用:就是

53、在定义一个函数时,其函数体内就是在定义一个函数时,其函数体内 又包含又包含另一个函数另一个函数。递归调用:递归调用:在调用一个函数的过程中又出现在调用一个函数的过程中又出现直接或间接地直接或间接地 调用该调用该函数本身函数本身。1、递归、递归结束条件结束条件2、一般用到、一般用到if语句结构语句结构 if(结束条件结束条件)语句)语句 else 语句语句(该语句调用本函数,规模越来越小该语句调用本函数,规模越来越小)3、递归可以分为、递归可以分为函数调用过程和返回过程函数调用过程和返回过程c语言第一至八章总结3用递归的方法求用递归的方法求n!(修改程序修改程序)#includefloat fa

54、c(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”, &n); y=fac(n); printf (“%d!=%15.0f n”, n, y);改正改正1:float fac(int n)改正改正2:else if (n=0 | n=1) f=1; 改正改正3:else f=fac(n-1)*n; 错误错误1:错误错误2:错误错误3:c语言第一至八章总结7 7、变量的

55、作用域和生存期、变量的作用域和生存期变量的作用域变量的作用域-局部变量和全局变量局部变量和全局变量按按作作用用域域局部局部变量变量全局全局变量变量自动自动(auto):离开函数,值就消失离开函数,值就消失静态静态(static)局部:离开函数,值仍保留局部:离开函数,值仍保留寄存器寄存器(register):离开函数,值消失离开函数,值消失外部变量:外部变量:允许其他文件引用允许其他文件引用静态静态(static)外部:外部:只限本文件引用只限本文件引用(形参可以定义为形参可以定义为auto或或register)c语言第一至八章总结按按变变量量存存在在的的时时间间动态动态存储存储静态静态存储存

56、储自动自动(auto):本函数内有效本函数内有效静态静态(static)局部:局部:本函数内有效本函数内有效寄存器寄存器(register):本函数内有效本函数内有效外部变量:用外部变量:用extern声明后,声明后,允允 许其他文件引用许其他文件引用静态静态(static)外部:外部:本文件有效本文件有效形参形参(可以定义为可以定义为auto或或register)本函数内有效本函数内有效c语言第一至八章总结按按变变量量值值存存放放的的位位置置内存内存动态动态存储存储内存内存静态静态存储存储自动自动(auto):本函数内有效本函数内有效静态静态(static)局部:局部:本函数内有效本函数内有

57、效寄存器寄存器(register):本函数内有效本函数内有效外部变量:用外部变量:用extern声明后,声明后,允允 许其他文件引用许其他文件引用静态静态(static)外部:外部:本文件有效本文件有效形参形参(可以定义为可以定义为auto或或register)本函数内有效本函数内有效cpucpu寄存器寄存器c语言第一至八章总结(8)以下程序输出的最后一个值是)以下程序输出的最后一个值是 。 #includeint fun(int n) static int f = 1; f *= n; return f;void main() int i; for(i=1; i=3; i+) printf(

58、%dn, fun(i); c语言第一至八章总结第第8章章 指针指针总结总结c语言第一至八章总结1、认识一下指针的相关内容:、认识一下指针的相关内容:int int * *p p; /定义一个指针变量定义一个指针变量p p/“/“* *”是指向(单目运算符)是指向(单目运算符)/* *p p是一个变量是一个变量/p/p叫做叫做指针变量。它存放的是地址指针变量。它存放的是地址 指针指针=地址地址* *p p存放的值存放的值指向一个地址指向一个地址中存放的值中存放的值c语言第一至八章总结int i=3;int *i_pointer=&i;int i=3;int *i_pointer;i_pointe

59、r=&i;定义的同时初始化定义的同时初始化1、*和和&都是单目运算符都是单目运算符2、*i_pointer的值就是的值就是i的值的值3、指针变量、指针变量i_pointer的类型和变量的类型和变量i的的类型要相同类型要相同4、指针变量只存放地址、指针变量只存放地址c语言第一至八章总结2 2、通过指针引用数组元素、通过指针引用数组元素引用一个数组元素,可以用:引用一个数组元素,可以用:()() 下标法,如形式;下标法,如形式;()() 指针法,如指针法,如*()或()或*()()。 其中是数组名,是指向数组元素的指针变量,其中是数组名,是指向数组元素的指针变量,其初值。其初值。注意:注意:这里的这里的i代表代表i个地址单元个地址单元c语言第一至八章总结3 3、用、用数组名和指针变量数组名和指针变量作函数参数作函数参数如:如: void main()() i(int arr,int ); int array; (array,); void (int arr,int ) /编译时,形参编译时,形参arr按指针变量处理,相当于按指针变量处理,相当于void f(int *arr,int n)c语言第一至八章总结调用函数时数

温馨提示

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

最新文档

评论

0/150

提交评论