天津工业大学it12c语言期末复习

上传人:壹****1 文档编号:569461960 上传时间:2024-07-29 格式:PPT 页数:139 大小:581.02KB
返回 下载 相关 举报
天津工业大学it12c语言期末复习_第1页
第1页 / 共139页
天津工业大学it12c语言期末复习_第2页
第2页 / 共139页
天津工业大学it12c语言期末复习_第3页
第3页 / 共139页
天津工业大学it12c语言期末复习_第4页
第4页 / 共139页
天津工业大学it12c语言期末复习_第5页
第5页 / 共139页
点击查看更多>>
资源描述

《天津工业大学it12c语言期末复习》由会员分享,可在线阅读,更多相关《天津工业大学it12c语言期末复习(139页珍藏版)》请在金锄头文库上搜索。

1、复习复习题型题型l单项选择题单项选择题l填空题填空题l看程序写结果看程序写结果l程序填空题程序填空题l编程题编程题第一章第一章数据类型、运算符、表达式数据类型、运算符、表达式l基本数据类型基本数据类型l运算符运算符l表达式表达式课本第三章课本第三章P3P39-789-781.数据类型数据类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型字符型字符型实型(浮点型)实型(浮点型)单精度型单精度型双精度型双精度型枚举类型枚举类型数组类型数组类型结构体类型结构体类型共同体类型共同体类型lC语言提供的整数类型语言提供的整数类型lshortint(short)luns

2、ignedshortint(unsignedshort)lintlunsignedint(unsigned)llongint(long)lunsignedlongint(unsignedlong)1.1基本数据类型基本数据类型整型整型1.1基本数据类型基本数据类型浮点类型浮点类型l浮点类型浮点类型lfloatldoublellongdouble1.1基本数据类型基本数据类型字符类型字符类型lcharlC语言中的语言中的字符常量字符常量是由是由单引号单引号括起来括起来的一个字符。的一个字符。l将一个字符常量存储到字符变量中,实将一个字符常量存储到字符变量中,实际上是把该字符的际上是把该字符的AS

3、CII代码存放到存代码存放到存储单元中。储单元中。charch;ch=x;ch=t;ch=x-32;1.1基本数据类型基本数据类型l各类数值型数据间的混合运算各类数值型数据间的混合运算P54 高高 double float long unsigned 低低 int char,shortfloati;doublef;10+A+i*fl变量变量l是程序执行过程中可以改变、可以赋值的量。是程序执行过程中可以改变、可以赋值的量。具体说,变量是用于存储程序的输入数据和计具体说,变量是用于存储程序的输入数据和计算结果的算结果的存储单元存储单元。l常量常量l是在程序运行过程中,其值不能被改变的量称是在程序运

4、行过程中,其值不能被改变的量称为常量。为常量。1.2变量和常量定义变量和常量定义变量声明与初始化变量声明与初始化l变量(变量(Variable)是一个值的存放处,它有三)是一个值的存放处,它有三个重要属性个重要属性l名称名称l值值l数据类型。数据类型。 radius变量名变量名变量值变量值存储单元存储单元数据类型数据类型5变量声明说明变量声明说明l使用变量必须使用变量必须“先定义后使用先定义后使用”l变量名是由用户定义的标识符,它的构成应符合以下变量名是由用户定义的标识符,它的构成应符合以下规则规则l名称必须以字母或下划线字符开头。名称必须以字母或下划线字符开头。l名称的其他字符必须是字母、数

5、字或下划线,不得使用空格名称的其他字符必须是字母、数字或下划线,不得使用空格和其他特殊符号和其他特殊符号l名称不可以是关键字。名称不可以是关键字。l变量名可以为任意长度,但变量名可以为任意长度,但C编译器只认为前编译器只认为前31个字符有意个字符有意义。义。l在在C语言中,变量名中出现的大写和小写字母被视为不同的语言中,变量名中出现的大写和小写字母被视为不同的字符。字符。l变量名应使读者易于明白其中存储的值是什么。变量名应使读者易于明白其中存储的值是什么。l选择题:下列属于选择题:下列属于C语言合法标识符的是(语言合法标识符的是()。lA)1sumlB)averagelC).day_night

6、lD)doublel答案:答案:B变量初始化变量初始化l在定义变量的同时可以为其赋初值,即在定义变量的同时可以为其赋初值,即C语言语言允许在定义变量的同时对变量进行初始化。允许在定义变量的同时对变量进行初始化。intsum=0;doublesource=87.3;chargrade=A;l定义但未赋初值的变量中,一般存放的是随机定义但未赋初值的变量中,一般存放的是随机数(静态变量除外)。数(静态变量除外)。 1.3运算符与表达式运算符与表达式lC语言中的表达式由项和运算符组成。语言中的表达式由项和运算符组成。l项:表示一个单独的数据值,如项:表示一个单独的数据值,如n1,n2l常量常量l变量变

7、量l函数调用函数调用l括号中的表达式括号中的表达式l运算符:一个表示运算的字符或一个字符序列,运算符:一个表示运算的字符或一个字符序列,如如+,-,*,/,+,-l表达式的求值表达式的求值l当程序运行时,执行表达式中每一个特定操作的当程序运行时,执行表达式中每一个特定操作的过程称为求值。过程称为求值。算术运算符与算术表达式算术运算符与算术表达式l算术运算符算术运算符l+l-l*l/l%(取余运算(取余运算,整型整型)l书写算术表达式书写算术表达式lx2x*xx3x*x*xl4*y/(1+x)5/6*x判断一个整数的位数,各判断一个整数的位数,各个位的数字个位的数字赋值运算符与赋值表达式赋值运算

8、符与赋值表达式l变量的值是用赋值表达式获得的。变量的值是用赋值表达式获得的。C语言中语言中的赋值表达式形式如下:的赋值表达式形式如下:l赋值运算符的左边可以是任何变量名,赋值运算符的左边可以是任何变量名,l右边可以是任何表达式。右边可以是任何表达式。l赋值表达式的值即赋值运算符左边变量的值赋值表达式的值即赋值运算符左边变量的值变量变量=表达式表达式赋值运算符与赋值表达式赋值运算符与赋值表达式l复合赋值运算符,即:复合赋值运算符,即:+=-=*=/=%=l优先级优先级l结合性结合性强制转换运算符强制转换运算符intn;doubled;d=(double)n/2;n=(int)5.5;(类型)表达

9、式(类型)表达式l填空题:若有定义填空题:若有定义:floatx=4.7;则则表达式表达式2/5+7%3*(int)(x)的值是的值是。l答案:答案:4l填空题:表达式填空题:表达式1+2/4+4%5的值是的值是。若有。若有定义:定义:floatx=2.8,y=4.7;则表达式则表达式x+(int)(x+y)%2/6的值是的值是。l答案:答案:5,2.8l假设有定义:假设有定义:intx=3,y=3;则复合赋值表达则复合赋值表达式式x/=1+y的值应该是的值应该是。l答案:答案:0 l一个三位数,求个位,十位,百位数字一个三位数,求个位,十位,百位数字自增和自减运算符自增和自减运算符l自增运算

10、符自增运算符+li+:在使用:在使用i之后,使之后,使i的值加的值加1l+i:在使用:在使用i之前,先使之前,先使i的值加的值加1intm;intn=3;m=n+;intm;intn=3;m=+n;l自自减减运算符运算符-li-:在使用:在使用i之后,使之后,使i的值减的值减1l-i:在使用:在使用i之前,先使之前,先使i的值减的值减1intm;intn=3;m=n-;intm;intn=3;m=-n;l看程序写结果#includeintmain()inti=3,j=4,k;k=-i;printf(k=%dn,k);printf(j=%dn,j+);printf(j=%dn,j-i);retu

11、rn0;k=2j=4j=3关系运算符和关系表达式关系运算符和关系表达式l关系表达式关系表达式l用关系运算符将两个表达式连接起来的式子。用关系运算符将两个表达式连接起来的式子。l被连接的表达式可以是:被连接的表达式可以是:l算术表达式算术表达式l关系表达式关系表达式l逻辑表达式逻辑表达式l赋值表达式等赋值表达式等l关系表达式的值是一个逻辑值关系表达式的值是一个逻辑值l表达式关系成立,值为表达式关系成立,值为“真真”,即,即1l表达式关系不成立,值为表达式关系不成立,值为“假假”,即,即0l关系运算符的结合性:从左至右关系运算符的结合性:从左至右l关系运算符的优先级关系运算符的优先级算术运算符关系

12、运算符: =关系运算符:= !=赋值运算符高低逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式l逻辑运算符逻辑运算符l&(逻辑与,双目运算符)(逻辑与,双目运算符)l|(逻辑或,双目运算符)(逻辑或,双目运算符)l!(逻辑非,单目运算符)(逻辑非,单目运算符)l逻辑表达式逻辑表达式l用逻辑运算符将关系表达式或逻辑量连接起来的用逻辑运算符将关系表达式或逻辑量连接起来的式子。式子。l逻辑表达式的值是一个逻辑量,真或假(逻辑表达式的值是一个逻辑量,真或假(1或或0)。)。注意:注意:在判断一个量是否为在判断一个量是否为“真真”时,以非时,以非0 0代代表表“真真”;以;以0 0代表代表“假假”。例:若变

13、量a值为4,则 !a 值为 若变量a值为4,变量b值为5,则 a & b 值为01l逻辑运算符的结合性:从左至右逻辑运算符的结合性:从左至右l逻辑运算符的优先级逻辑运算符的优先级!(非)关系运算符& |赋值运算符高低算术运算符填空题:已填空题:已知变量知变量n的值为的值为5,逻辑表,逻辑表达式达式(n1)值为(值为()。)。填空题:若有定义填空题:若有定义:inta=3,b=4;则表达式则表达式5a&2b的值为(的值为();表达式);表达式b!a&0|2的值为(的值为();表达式表达式a=b z & y z(2)age = 18 & age 15 | y -15 (4)even = ( n %

14、 2 = 0 ); (5)is_letter = ( A = ch & ch = Z ) | ( a = ch & ch = z ); 1)x与与y都大于都大于z2)18age213)y大大于于15或小于或小于-154)编写语句实现:在)编写语句实现:在n是偶数时给是偶数时给even(int类型)赋值类型)赋值1(true)。)。5)如果)如果ch是大写或小写字母,变量是大写或小写字母,变量is_letter为为1(true)。)。1.4printf()与与scanf()l输出输出printf()l输入输入scanf()printf()与()与scanf()类型转换()类型转换占位符占位符变量

15、量类型型函数使用函数使用%c char printf%d int printf%ffloatprintf%f double printfprintf()与()与scanf()类型转换()类型转换占位符占位符变量量类型型函数使用函数使用%c char scanf%d int scanf%ffloatscanf%lf double scanfl选择题:若有以下定义语句:选择题:若有以下定义语句:inta;doubleb;那么,以下输入语句正确的是那么,以下输入语句正确的是。lAscanf(%d%lf,a,b);lB.scanf(%lf%d,&a,&b);lCscanf(%d,%lf,&a,&b);

16、lD.scanf(%6.2f%6.2f,&a,&b);l答案:答案:Cl填空题:填空题:P76-77lscanf函数中的函数中的“格式控制格式控制”后面应当是()。后面应当是()。l使用使用scanf函数时,在输入数值数据时,如输函数时,在输入数值数据时,如输入(),(),()或遇非法字符,认为该数入(),(),()或遇非法字符,认为该数据结束。据结束。第二章第二章程序的控制结构程序的控制结构l顺序结构顺序结构l选择结构选择结构l循环结构循环结构程序的控制结构程序的控制结构l运行运行C程序的步骤(书程序的步骤(书P12-13)l编辑编辑(*.c)l编译编译(*.obj)l链接链接(*.exe)

17、l运行运行lC程序的基本结构(书程序的基本结构(书P10-12)l函数是函数是C程序的基本单位程序的基本单位l一个一个C程序至少且仅包含一个程序至少且仅包含一个main函数函数lmain函数是程序入口函数是程序入口/* *File:hello.c *This program prints the message Hello world *on the screen. */#include int main() printf(Hello,world.n); return 0;注释注释库包含库包含主函数主函数语句语句用于输出用于输出函数调用函数调用2.1顺序结构顺序结构2.2选择结构选择结构l选择

18、结构思想选择结构思想lif语句语句lswitch语句语句2.2.1if语句语句l单分支单分支l双分支双分支l多分支多分支lif嵌套嵌套l条件运算符条件运算符l执行流程执行流程单分支结构的单分支结构的ifif语句语句exprstatement非0=0l语法格式语法格式 if (expression) statementl执行流程执行流程双分支结构的双分支结构的ifif语句语句l语法格式语法格式if (expression) statement1 else statement2exprstatement1statement2非0=0l执行流程执行流程多分支结构的多分支结构的ifif语句(理解)语句

19、(理解)l语法格式语法格式expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statementn 注意问题注意问题l条件的书写条件的书写if(a=4)b=1000;if(a=4)b=1000;lintm=15,n=0;if(m)printf(“%d”,m);if(!m)printf(“%d”,n);if(m!=0).if(m=0).注意问题注意问题l复合

20、语句复合语句if(ab)temp=a-b;printf(“%d”,temp);if(ab)temp=a-b;printf(“%d”,temp);注意问题注意问题lIfelse配对问题配对问题lC语言将语言将else和最近一个不完整的和最近一个不完整的if关联。关联。y=-1;if(x!=0)if(x0)y=1;elsey=0;条件运算符条件运算符l一般形式:一般形式:expr1?expr2:expr3l执行过程执行过程expr1取expr2值取expr3值非0=0l例:例:max=(ab)?a:bl例:例: if (ab) printf(“%d”,a); else printf(“%d”,b)

21、;printf(“%d”,ab?a:b);2.2.2switch语句语句lswitch语句语句l执行流程执行流程A1A2AiAnk=k2k=k1k=knk=ki.kNext statementl语语法法格格式式switch( 表达式k) case k1: 语句组A1; break; case k2: 语句组A2; break; . case kn: 语句组An; break; default: 语句组 ; break; switch语句语句l说明说明l表达式表达式k的值可以为的值可以为int类型、类型、char类型、枚举类类型、枚举类型等。型等。l表达式表达式k1、k2等等是是常量表达式常量表

22、达式,且值必须互不相且值必须互不相同同l语句标号作用,必须用语句标号作用,必须用break跳出跳出lcase后可包含多个可执行语句,且不必加后可包含多个可执行语句,且不必加lswitch可嵌套可嵌套l多个多个case可共用一组执行语句可共用一组执行语句 char c; printf(Please input the character:); scanf(%c,&c); switch(c) case b: case B:printf(战列舰(battleship));break; case c: case C:printf(巡洋舰(Cruiser));break; case d: case D:

23、printf(驱逐舰(Destroger));break; case f: case F:printf(护卫舰(Frigate));break; default:printf(Error!); char c; printf(Please input the character:); scanf(%c,&c); switch(c) case b: case B:printf(战列舰(battleship));break; case c: case C:printf(巡洋舰(Cruiser)); case d: case D:printf(驱逐舰(Destroger));break; case f

24、: case F:printf(护卫舰(Frigate));break; default:printf(Error!); l看程序写结果#include int main() int a=2,b=3,c=1,d=0; if(ab) if(cd)a = c; elseb = d; printf(“a=%d, b=%d, c=%d, d=%d”, a,b,c,d);a=2, b=3, c=1, d=0 l下面的程序功能是:输出下面的程序功能是:输出x,y,z三个数中的最小三个数中的最小值,请填空使程序完整。值,请填空使程序完整。#includeintmain()intx=4,y=5,z=8;int

25、u,v;u=xy?(1);v=uz?(2);printf(%dn,v);(1)x:y(2)u:z 2.3循环结构循环结构l循环结构思想、分析循环结构思想、分析lwhile语句语句ldowhile语句语句lfor语句语句lBreak和和continuewhile语句语句l执行流程执行流程l语法格式语法格式表达式表达式循环体循环体假假(0)真真(非非0)whilewhile(表达式表达式) 循环体语句循环体语句while语句语句l特点:特点:l当型结构:先判断表达式,后当型结构:先判断表达式,后执行循环体执行循环体l说明:说明:l循环体有可能一次也不执行循环体有可能一次也不执行l循环体可为任意类型

26、语句循环体可为任意类型语句l循环体若包含多条语句应其组循环体若包含多条语句应其组织为复合语句织为复合语句表达式表达式循环体循环体假假(0)真真(非非0)whiledo 循环体语句循环体语句 while(表达式表达式); do循环体循环体表达式表达式假假(0)真真(非非0)whiledo-while语句语句l执行流程执行流程l语法格式语法格式表达式循环体假(0)真(非0)循环体While循环l特点:特点:l当型结构:先执行循环体,后判断表达式(直到型)当型结构:先执行循环体,后判断表达式(直到型)l说明:说明:l至少执行一次循环体至少执行一次循环体ldo-while可转化成可转化成while结构

27、结构for(表达式表达式1;表达式表达式2 ;表达式表达式3) 循环体语句循环体语句表达式表达式2循环体循环体假假(0)真真(非非0)for表达式表达式1表达式表达式3for语句语句l执执行行流流程程l语法格式语法格式for(表达式表达式1;表达式表达式2 ;表达式表达式3) 循环体语句循环体语句for语句语句lfor语句的语句的代表性代表性使用使用l表达式表达式1:循环控制变量初始化:循环控制变量初始化l表达式表达式2:循环重复条件测试:循环重复条件测试l表达式表达式3:循环控制变量更新:循环控制变量更新l语法格式语法格式for( 循环变量赋初值循环变量赋初值; 循环条件循环条件; 循环变量

28、增值循环变量增值) 循环体语句循环体语句 l例:用例:用for循环求循环求 见幻灯片分析循环结构循环控制变量循环条件循环控制变量在循环体内更新,以保证循环正常退出#include main() int i,sum; ; for(i=1;i=100;i+); printf(%d,sum); #include main() int i,sum; sum=0; for(i=1;i=100;i+)sum+=i; printf(%d,sum); 循环结束条件、循环次数已知循环控制变量循环控制变量更新 nbreak语句语句q一般形式:一般形式:break;q功能:在循环语句和功能:在循环语句和switch

29、语句中,终止并跳语句中,终止并跳出循环体或开关体出循环体或开关体q说明:说明:nbreak只能终止并跳出只能终止并跳出最近一层最近一层的结构的结构nbreak不能用于循环语句和不能用于循环语句和switch语句之外语句之外的任何其它语句之中的任何其它语句之中5.5 break语句和continue语句ncontinue语句语句q一般形式:一般形式:continue;q功能:结束本次循环,跳过循环体中尚未执行功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断的语句,进行下一次是否执行循环体的判断q说明:说明:n仅用于循环语句中仅用于循环语句中ncontinue语句仅结

30、束本次循环,但语句仅结束本次循环,但break语语句则是结束整个循环过程。句则是结束整个循环过程。5.5 break语句和continue语句例例5-7:顺序输出半径分别为顺序输出半径分别为1,2,3,10的各个圆的圆面积,面积大于的各个圆的圆面积,面积大于100时时停止。停止。#include #define PI 3.14159main() int i; double area; for(i=1; i100) break; printf(“radius=%d,area=%.2fn,i,area); 例例5.8 求输入的十个整数中正整数的个数及其和与平均值求输入的十个整数中正整数的个数及其和

31、与平均值#include main() int i,num=0,a; double sum=0; for(i=0; i10; i+) scanf(%d,&a);if(a=0) continue;num+;sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num);n单重循环为主单重循环为主n常见简单算法:累加、累乘、常见简单算法:累加、累乘、统计(平均值、最大值、最小统计(平均值、最大值、最小值值等等)、递推等、递推等n看程序写结果#include int main() int

32、i=10,j=0; doj=j+i;i-;while(i2); printf(%dn,j); return 0; 52n看程序写结果#include int main() int i = 5,sum = 0; do sum += 2 * i; i-; while(i 0); printf(i=%d,sum=%dn, i,sum);i=0,sum=30 n程序功能:计算输入整数的各位数字之和。例如整数1987各位数字之和是1+9+8+7,等于25。请填空。#include int main() int i,k=0,sum; printf(Enter a integer:); scanf(%d,&

33、i); (1) ; while(i!=0) (2) ; sum += k; (3) ; printf(sum is %dn,sum); return 0; sum = 0 k = i % 10 i = i / 10程序功能是:计算输入整数的各位数字之和。例如整数1987各位数字之和是1+9+8+7,等于25。请填空。 第三章第三章构造类型之数组构造类型之数组l一维数组一维数组l二维数组二维数组3.1一维数组一维数组l一维数组定义一维数组定义l一维数组元素的引用一维数组元素的引用l一维数组初始化一维数组初始化l一维数组应用一维数组应用一维数组的定义一维数组的定义数据类型数据类型 数组名数组名 常

34、量表达式常量表达式 ; 一维数组的声明语法的一般形式为: l数组名的命名规则遵循标识符命名规则l“常量表达式”用来表示元素的个数,即数组长度l“常量表达式”可以包括常量和符号常量,不能包含变量 int scores10;int scores10; float num30; float num30; 一维数组的引用一维数组的引用数组名数组名 下标下标 数组元素的表示形式为: l下标可以是常量或整型表达式l数组元素始终从0开始 l数组元素的使用和一个变量的使用相似scoresScores0Scores1Scores2Scores3Scores4Scores5Scores6 scores0=9.3;

35、printf(“Thescores0is”,scores0);scores0+=1;一维数组初始化一维数组初始化初始化是指在定义数组时为数组元素赋初值初始化是指在定义数组时为数组元素赋初值( (在编译阶段使之得到初值)在编译阶段使之得到初值) l数组不初始化,其元素值为随机数l对static数组元素不赋初值,系统会自动赋以0值l当全部数组元素赋初值时,可不指定数组长度l可以只给部分数组元素赋初值,其余的自动赋以0值int a5=1,2,3,4,5;等价于:a0=1; a1=2; a2=3; a3=4; a4=5;lstaticinta5;l相当于:相当于:inta5=0,0,0,0,0 int

36、 a=1,2,3,4,5,6;编译系统根据初值个数确定数组长度编译系统根据初值个数确定数组长度如 int a5=6,2,3;等价于: a0=6; a1=2;a2=3; a3=0; a4=0;如 int a3=6,2,3,5,1; ( )一维数组简单应用一维数组简单应用l数组与循环结构(见课程幻灯片)数组与循环结构(见课程幻灯片)l数组遍历、统计(累加、平均值、最大值、最数组遍历、统计(累加、平均值、最大值、最小值)等小值)等l对字符数组中的每个元素遍历对字符数组中的每个元素遍历#include #define SIZE 10int main()int xSIZE,i,max; printf(“

37、Input 10 integers:n); for(i=0;iSIZE;i+) printf(“第第%d个个:,i+1); scanf(%d,&xi); max=x0; for(i=1;iSIZE;i+) if(maxxi) max=xi; printf(Maximum value is %dn,max); return 0;二维数组二维数组l二维数组的定义二维数组的定义l二维数组元素的引用二维数组元素的引用l二维数组初始化二维数组初始化二维数组定义二维数组定义数据类型数据类型 数组名数组名 常量表达式常量表达式常量表达式常量表达式 ; 二维数组的声明语法的一般形式为: 例例 int a33;

38、 float b25; double m23; int c234; 二维数组定义二维数组定义int b23;b b为为为为2323(2 2行行行行3 3列)的数组,注意下标范围列)的数组,注意下标范围列)的数组,注意下标范围列)的数组,注意下标范围 b0 b1 b00 b01 b02 b10 b11 b12 b0 b1 b00 b01 b02 b10 b11 b12 b二维数组引用二维数组引用引用形式:引用形式: 数组名数组名 下标下标 下标下标 为了访问 i行j列 的元素,需要写成 mij 的形式 二维数组初始化二维数组初始化7.2.3二维数组初始化二维数组初始化 例 int a23=1,2

39、,3,4,5,6;a00a01a02a10a11a12123456全部初始化分行初始化分行初始化7.2.3二维数组初始化二维数组初始化 例 int a23=1,2,4;a00a01a02a10a11a12120400分行初始化分行初始化7.2.3二维数组初始化二维数组初始化 例 int a3=1,4,5;a00a01a02a10a11a12100450第一维长度省略初始化分行初始化分行初始化7.2.3二维数组初始化二维数组初始化 例 int a23=1,2,3,4,5,6;a00a01a02a10a11a12123456全部初始化按元素排列顺序初始化按元素排列顺序初始化7.2.3二维数组初始化

40、二维数组初始化 例例 int a23=1,2,4;a00a01a02a10a11a12124000部分初始化部分初始化按元素排列顺序初始化按元素排列顺序初始化7.2.3二维数组初始化二维数组初始化 例 int a3=1,2,3,4,5;a00a01a02a10a11a12123450第一维长度省略初始化按元素排列顺序初始化按元素排列顺序初始化第四章第四章函数函数l函数的定义函数的定义(*)l函数的调用函数的调用l函数值的返回函数值的返回l形式参数与实际参数形式参数与实际参数l函数声明函数声明l函数的嵌套调用与递归调用函数的嵌套调用与递归调用l变量的存储类型变量的存储类型l“返回值类型返回值类型

41、”是函数返回值的类型。是函数返回值的类型。l若函数没有返回值需要将返回值类型定义为若函数没有返回值需要将返回值类型定义为voidvoid类型。类型。l返回值类型与返回值类型与returnreturn语句配合语句配合l若函数返回值类型为若函数返回值类型为voidvoid,returnreturn语句之后不再需要任何表语句之后不再需要任何表达式达式l函数内部可以定义只能自己使用的变量,称内部变量。函数内部可以定义只能自己使用的变量,称内部变量。参数表里的变量也是内部变量参数表里的变量也是内部变量返回值类型返回值类型函数名函数名(形式参数表形式参数表)函数体函数体return表达式表达式;函数定义函

42、数定义函数调用函数调用l实参与形参个数相等,类型一致,按顺序一实参与形参个数相等,类型一致,按顺序一一对应一对应l实参表求值顺序,因系统而定。实参表求值顺序,因系统而定。函数名函数名(实参表实参表);函数调用函数调用l有返回值时有返回值时l放到一个数值表达式中,如放到一个数值表达式中,如c = max(a,b);l作为另一个函数调用的参数,如作为另一个函数调用的参数,如 c = max(max(a,b),c); printf(%dn, max(a,b);l无返回值时无返回值时l函数调用表达式,如函数调用表达式,如display(a,b);函数名函数名(实参表实参表);形式参数与实际参数形式参数

43、与实际参数l形式参数:定义函数时函数名后面括号中的形式参数:定义函数时函数名后面括号中的变量名变量名l实际参数:调用函数时函数名后面括号中的实际参数:调用函数时函数名后面括号中的表达式表达式lC语言允许在形式参数类型与实际参数类型语言允许在形式参数类型与实际参数类型不匹配的情况下进行函数调用。自动按形参不匹配的情况下进行函数调用。自动按形参类型转换类型转换。例例5_1a计算两个整数的平均数计算两个整数的平均数/*函数功能:函数功能:计算平均数计算平均数函数入口参数:函数入口参数:整型整型x,存储第一个运算数,存储第一个运算数整型整型y,存储第二个运算数,存储第二个运算数函数返回值:函数返回值:

44、平均数平均数*/intAverage(intx,inty)intresult;result=(x+y)/2;returnresult;例例5.1b使用了使用了Average函数的函数的main()main()inta=12;intb=24;intave;ave=Average(a,b);printf(Averageof%dand%dis%d.n,a,b,ave);int Average(int x, int y) int result; result = (x + y) / 2; return result;main() int a = 12; int b = 24; int ave; ave

45、 = Average(a, b); printf();数据传递执行顺序函数调用的过程函数调用的过程l函数的每次执行都会建立一个全新的独立的环境l在“栈”中为函数的每个变量(包括形式参数)分配内存l把实际参数的值复制给形式参数l开始执行函数内的第一条语句l函数内的代码在这个独立的环境内工作l函数退出时l求出返回值,将其存入一个可以被调用者访问的地方(x86中通常使用EAX寄存器)l收回分配给所有变量(包括形式参数)的内存l程序控制权交给调用者,调用者拿到返回值,将其作为函数调用表达式的结果函数调用的过程函数调用的过程l在在C语言中,实际参数是通过语言中,实际参数是通过值传递值传递的:调用的:调用

46、函数时,计算出每个实际参数的值并且把它赋函数时,计算出每个实际参数的值并且把它赋值给相应的形式参数。在函数执行过程中,对值给相应的形式参数。在函数执行过程中,对形式参数的改变不会影响实际参数的值。形式参数的改变不会影响实际参数的值。returen语句语句l功能:使程序控制从被调用函数返回到调用功能:使程序控制从被调用函数返回到调用函数中,同时把返函数中,同时把返回回值带给调用函数值带给调用函数l当函数执行到当函数执行到returnreturn语句时,就中止函数的执行,语句时,就中止函数的执行,返回到调用它的地方返回到调用它的地方 return(表达式);或 return 表达式;或 retur

47、n;returen语句语句l说明:说明:l函数中可有多个函数中可有多个return语句语句l若无若无return语句,遇语句,遇时,自动返回调用函数时,自动返回调用函数l若函数类型与若函数类型与return语句中表达式值的类型不语句中表达式值的类型不一致,一致,按前者为准按前者为准,自动转换,自动转换lvoid型函数型函数用来明确表明函数不带回任何值用来明确表明函数不带回任何值函数原型(函数原型(prototype)l告诉编译系统告诉编译系统函数类型、参数个数及类型,以函数类型、参数个数及类型,以便检验便检验函数类型函数类型函数名函数名(形参类型形参类型1形参名形参名1,.);例例5.1 5.

48、1 #include /* 函数功能:函数功能: 计算平均数计算平均数 函数入口参数:函数入口参数: 整型整型x,存储第一个运算数,存储第一个运算数 整型整型y,存储第二个运算数,存储第二个运算数 函数返回值:函数返回值: 平均数平均数*/int Average(int x, int y)int result;result = (x + y) / 2;return result;void main()int a = 12;int b = 24;int ave = Average(a, b);printf(Average of %d and %d is %d.n, a, b, ave);例例5.

49、1 5.1 #include int Average(int x, int y); /*声明声明Average()函数函数*/ main()int a = 12;int b = 24;int ave = Average(a, b);printf(Average of %d and %d is %d.n, a, b, ave);/* 函数功能:函数功能: 计算平均数计算平均数 函数入口参数:函数入口参数: 整型整型x,存储第一个运算数,存储第一个运算数 整型整型y,存储第二个运算数,存储第二个运算数 函数返回值:函数返回值: 平均数平均数*/int Average(int x, int y)in

50、t result;result = (x + y) / 2;return result;函数的嵌套调用函数的嵌套调用l嵌套调用嵌套调用l在被调函数中,又调用了函数在被调函数中,又调用了函数main().a 函数函数b函数函数函数的递归调用函数的递归调用l函数直接或间接调用自己为递归函数直接或间接调用自己为递归unsignedunsigned intintfunc(func(unsignedunsigned intintn)n) if if(n=0)(n=0)returnreturn1;1;elseelse returnreturnn*func(n-1);n*func(n-1); 变量的存储类型

51、变量的存储类型l auto(默认)(默认)l registerl staticl extern第第六六章章构造类型之指针类型构造类型之指针类型l指针变量定义指针变量定义l指针变量指向基本类型变量指针变量指向基本类型变量l指针变量指向数组指针变量指向数组指针变量定义指针变量定义l指针变量定义的一般形式:指针变量定义的一般形式:数据类型数据类型*指针名;指针名;l说明:说明:lC语言要求每个指针变量只能指向一种特定数语言要求每个指针变量只能指向一种特定数据类型的对象。至于数据类型具体是什么类型据类型的对象。至于数据类型具体是什么类型则没有限制。则没有限制。l指针变量只能指向定义时所规定类型的变量指

52、针变量只能指向定义时所规定类型的变量取地址运算符与间接寻址运算符取地址运算符与间接寻址运算符 int i=10,*p; p = &i; i10p int i=10,*p=&i; inti=10;int*p=&i;*p*p=20;printf(“%dn”,*p*p);指针和数组指针和数组apinta5=3,5,-9;int*p;p=a;/*p=&a0;*/35-9数组名数组名是表示数组是表示数组首地首地址的址的地址常量地址常量指针和数组指针和数组apinta5=3,5,-9,2,1;int*p;p=a;*p=10;35-910指针的算术运算和关系运算指针的算术运算和关系运算lC语言支持语言支持3

53、种格式的指针算术运算种格式的指针算术运算l指针加上整数指针加上整数l指针减去整数指针减去整数l两个指针相减两个指针相减指针加上整数指针加上整数l如果如果p p指向数组元素指向数组元素ai,ai,那么那么p+jp+j指向指向ai+jai+jinta5=3,5,-9,2,1;int*p=a;p=p+1;printf(“%dn”,*p);p+;printf(“%dn”,*p);35- 921pp+1p+指针减去整数指针减去整数l如果如果p p指向数组元素指向数组元素ai,ai,那么那么p-jp-j指向指向ai-jai-jinta5=3,5,-9,2,1;int*p=&a4;p=p-1;printf(

54、“%dn”,*p);p-;printf(“%dn”,*p);35- 921pp-1p-两个指针相减两个指针相减l当两个指针相减时,结果为指针之间的距当两个指针相减时,结果为指针之间的距离,使用数组元素的个数来度量。因此,离,使用数组元素的个数来度量。因此,如果如果p p指向指向ai, qai, q指向指向aj,aj,那么那么p-p-q q就等于就等于i-ji-j两个指针相减两个指针相减inta5=3,5,-9,2,1;int*p=&a4;int*q=&a2;intm,n;m=pq;n=q-pprintf(“%d,%dn”,m,n);35- 921pq指针比较指针比较l可以使用关系运算符(可以使

55、用关系运算符( = = = = !=!=)进行指针比较。只有在两个指针指向)进行指针比较。只有在两个指针指向同一数组时,用关系运算符进行的指针比同一数组时,用关系运算符进行的指针比较才有意义。较才有意义。l比较的结果:关系成立为比较的结果:关系成立为1 1,不成立为,不成立为0 0lp1p2 表示p1指向的元素在后lp1=p2 表示p1与p2指向同一元素【例11-2】使用指针变量遍历数组的全部元素,并统计求和intmain()inta10,sum=0,*p;for(p=a;p(a+10);p+)scanf(%d,p);for(p=a;p(a+10);p+)sum+=*p;printf(%d,s

56、um);return0;第第七七章章字符数组、字符串和字符字符数组、字符串和字符指针指针l 字符串字符串l字符串是用“”括起来的字符序列。 “china”l 字符串的存储字符串的存储china0l 字符数组的初始化字符数组的初始化l逐个字符初始化逐个字符初始化 char str7 = c,h,i,n,a,!,! ; char string25= c,h,i,n,a, h,e ,l,l,o ;l 字符数组的初始化字符数组的初始化l以字符串为字符数组初始化以字符串为字符数组初始化 char str6 = “china” ; char str6 = “china”; char str = “chin

57、a”;china0strl字符数组字符数组str1不能当作字符串来使用,其长度不能当作字符串来使用,其长度为为5l字符数组字符数组str2可以当作字符串来使用,其数组可以当作字符串来使用,其数组长度为长度为6l一个字符型一维数组并不一定是一个字符串,一个字符型一维数组并不一定是一个字符串,只有当字符型一维数组中的最后一个元素为只有当字符型一维数组中的最后一个元素为0时,它才构成字符串。时,它才构成字符串。 char str1 = c,h,i,n,a ; char str2 = c,h,i,n,a,0 ;lchar str=hello; str+;lchar str; str=hello; lc

58、har *pStr; pStr=Beijing;第第八八章章结构体结构体structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;结构体类型声明描述结构结构体类型声明描述结构的组织形式的组织形式,不分配内存不分配内存8.1结结构构体体类类型型定定义义8.2结构体类型变量定义结构体类型变量定义方法一:方法一:先定义结构体类型再定义变量名。先定义结构体类型再定义变量名。 struct student char stuID5; char stuName10; char stuSex; intscoreC; ; struct

59、studentstudent1,student2;结构体类型变量定义结构体类型变量定义方法二:方法二:在定义类型的同时定义变量。在定义类型的同时定义变量。 struct student char stuID5; char stuName10; char stuSex; intscoreC; student1,student2;student1,student2; 结构体类型变量定义结构体类型变量定义方法三:方法三:直接定义结构体变量(不出现结构体名)。直接定义结构体变量(不出现结构体名)。 struct char stuID5; char stuName10; char stuSex; int

60、scoreC; student1,student2;student1,student2; 用用无名结构体无名结构体直接定义变量直接定义变量,只能一次只能一次8.3结构体类型变量的引用结构体类型变量的引用l引用规则引用规则l结构体变量结构体变量不能整体引用不能整体引用,只能引用变量只能引用变量成员成员结构体变量名结构体变量名.成员名成员名l引用方式引用方式 struct student char stuID5; char stuName10; char stuSex; intscoreC; ; structstudentstu; strcpy(stu.stuID, “1101”); gets(stu.stuName); scanf(“%c”,stu.stuSex); stu.scoreC = 90;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号