最新大学C语言复习ppt教学课件.ppt

上传人:豆**** 文档编号:33633941 上传时间:2022-08-11 格式:PPT 页数:120 大小:1.76MB
返回 下载 相关 举报
最新大学C语言复习ppt教学课件.ppt_第1页
第1页 / 共120页
最新大学C语言复习ppt教学课件.ppt_第2页
第2页 / 共120页
点击查看更多>>
资源描述

《最新大学C语言复习ppt教学课件.ppt》由会员分享,可在线阅读,更多相关《最新大学C语言复习ppt教学课件.ppt(120页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1一一 基本概念基本概念 字符集、标识符、关键字字符集、标识符、关键字 各种常量的表示方法各种常量的表示方法 变量的说明变量的说明 其它概念其它概念 8二二 基本运算符与基本运算符与I/O操作操作 数据类型:编码形式、占用内存字节、表数据类型:编码形式、占用内存字节、表示范围示范围 全部运算符:运算规则、优先级、结合性全部运算符:运算规则、优先级、结合性 位运算只作最基本的要求(位运算只作最基本的要求(,&,|) 能够进行简单的表达式计算能够进行简单的表达式计算 基本的基本的I/O函数的使用方法和功能:函数的使用方法和功能:printf、scanf、getchar、putchar 9二二 基本

2、运算符与基本运算符与I/O操作操作 数据类型:编码形式、占用内存字节、数据类型:编码形式、占用内存字节、表示范围表示范围一一整型变量的长度由计算机硬件决定。整型变量的长度由计算机硬件决定。二二记住记住32767(215-1)、65535、38、308。三三负数的补码计算负数的补码计算(-8的补码:的补码:8的原码取反加的原码取反加1)u 已知已知long i=32768,执行语句,执行语句printf(“%d”,i);后后屏幕显示:屏幕显示:1.A. -1 B. -32768 C. 1 D. 32768实型不精确,整型爱溢出实型不精确,整型爱溢出10二二 基本运算符与基本运算符与I/O操作操作

3、一一字符型以字符型以ASCII码形式存储,码形式存储,n字符变数字:字符变数字:int a = 8 - 0;n数字变字符:数字变字符:char c = 8 + 0;n判断是否是数字:判断是否是数字: 0=m=9n0=m & m=94.最好能记住最好能记住48、65、97 11二二 基本运算符与基本运算符与I/O操作操作 全部运算符:运算规则、优先级、结全部运算符:运算规则、优先级、结合性合性一一表达式的值和类型表达式的值和类型u已知:已知:char a; int b; float c; double d; 执执行语句行语句c=a+b+c+d;后,变量后,变量c的数据类型是:的数据类型是:uA.

4、 int B. char C. float D. doubleu表达式表达式c=a+b+c+d的数据类型是:的数据类型是:uA. int B. char C. float D. doubleu表达式表达式a+b+c+d结果的数据类型是:结果的数据类型是:1.A. int B. char C. float D. double12二二 基本运算符与基本运算符与I/O操作操作接受赋值的变量类型决定了运算结果的存储类型接受赋值的变量类型决定了运算结果的存储类型一定注意赋值表达式的值一定注意赋值表达式的值if (x=1)逻辑值逻辑值if (x=1)x的值的值u 已知:已知:int a, b;对于下列;对

5、于下列if语句:语句: if (a=b) printf (A is equal to Bn);在编译时,在编译时,C编译程序编译程序不能指出该语句有语法错误!不能指出该语句有语法错误!sizeof()是是int型表达式!型表达式!13二二 基本运算符与基本运算符与I/O操作操作单目运算符的优先级通常高于双目和三目运算单目运算符的优先级通常高于双目和三目运算符。符。单目运算符通常是右结合,双目运算符通常是单目运算符通常是右结合,双目运算符通常是左结合左结合(赋值运算符除外赋值运算符除外)。求余运算的对象必须是整型。求余运算的对象必须是整型。u int i; float f; 正确的语句是:正确的

6、语句是:u A. (int f)%i B. int (f)%i C. int(f%i) D. (int)f%i14两个整型做除法两个整型做除法/ 结果截取为整型。结果截取为整型。u 华氏和摄氏的关系:华氏和摄氏的关系: ,已知,已知float C,F;由华氏求摄氏的正确赋值表达式是:由华氏求摄氏的正确赋值表达式是:uA. C=5/9(F-32) B. C=5*(F-32)/9 uC. C=5/9*(F-32) D. 三个表达式都不正确三个表达式都不正确u 计算计算uus=1.0ufor(k=1;k=n;k+)u s+= ; u printf(“%fn”,s); 32)(F95C1)(nn1,.

7、,3212111答案:答案:1.0/(k*(k+1) 1/(float)(k*(k+1)15二二 基本运算符与基本运算符与I/O操作操作i+与与+ii+替换为替换为i进行计算,之后再自加进行计算,之后再自加+与与- -只能用于变量,不能用于常量和表达只能用于变量,不能用于常量和表达式式操作对象只能是整型、字符型和指针类型操作对象只能是整型、字符型和指针类型u int i=5; i+=+i; i的值是:的值是:uA. 10 B. 11 C. 12 D. A,B,C答案都不对答案都不对u int i=5; i+=i+; i的值是:的值是:uA. 10 B. 11 C. 12 D. A,B,C答案都

8、不对答案都不对u float x=1,y; 则则y=+x*+x的结果为:的结果为:uA. y=9 B. y=6 C. y=1 D. 表达式错误表达式错误联想赋值联想赋值运算符运算符=16二二 基本运算符与基本运算符与I/O操作操作一一赋值表达式从右向左:赋值表达式从右向左:nint a=b=c=1;nint a,b,c;1.a=b=c=1;a*=b+5a=a*b+5a=a*(b+5)先计算右边表达式的值;再将计算结果赋给左先计算右边表达式的值;再将计算结果赋给左边的变量。边的变量。17n运算结果是运算结果是“逻辑值逻辑值”的运算符的运算符逻辑运算逻辑运算符、关系运算符、条件运算中的条件部分。符

9、、关系运算符、条件运算中的条件部分。nC语言并没有逻辑型,而是用语言并没有逻辑型,而是用1标识逻辑标识逻辑真真,0标识逻辑标识逻辑假假不是不是TRUE和和FALSE。u 设设 a 为整型变量,其值未知,下列表达式中有为整型变量,其值未知,下列表达式中有确定值的是:确定值的是:A. 10 a 10 & a 15 D. !( a = 15 )二二 基本运算符与基本运算符与I/O操作操作18二二 基本运算符与基本运算符与I/O操作操作uif( i=0 ) 和和 if( !i )等价等价uif( i ) i非非0则成立,即则成立,即i和和i!=0等价等价uchar c=A; int i = !c; i

10、 的值为的值为0u与条件表达式与条件表达式“(n)?(c+):(c-)”中的表达式中的表达式(n)等价的表达式是等价的表达式是:A. (n=0)B. (n=1) C. (n!=0)D. (n!=1)19二二 基本运算符与基本运算符与I/O操作操作一一优先级:优先级:n取非取非(!)n算术运算符算术运算符(+,-,*,/,%)n关系运算符关系运算符(, (c+d) & (da) | !(cb) & (ab)只有只有(cb后变后变量量a的值:的值:A. 0 B. 1 C. 4 D. 5u int x;逗号表达式逗号表达式“(x=4*5, x*5),x+25”的结果为的结果为A. 20 B. 100

11、 C. 45 D. 表达式不合法表达式不合法变量变量x的值是:的值是:A. 20 B. 100 C. 45 D. 125注意:注意:x*5并不是并不是x=x*5,并不改变,并不改变x的值的值联想指针联想指针 p+和和p+121二二 基本运算符与基本运算符与I/O操作操作注意,赋值运算符的优先级很低!注意,赋值运算符的优先级很低!u char ch; 执行执行while ( ch=getchar() !=n ); 时时输入输入abcde后,变量后,变量ch的值:的值:A. e B. n C. 0 D. NULLu int a=1, b=2, m=2, n=2;(m=ab)&+n;则则n的值是:的

12、值是: A. 1 B. 2 C. 3 D. 422二二 基本运算符与基本运算符与I/O操作操作一一得到结论就不再计算:逻辑运算得到结论就不再计算:逻辑运算二二只计算一部分:条件运算只计算一部分:条件运算u int x=1,y;执行下列语句后执行下列语句后x的值是:的值是:uy=+x5 & +xy? +x:+y;uA. 1 B. 2C. 3D. 41.注意:注意:xy? +x:xz? +x:y+ 是从左向右计是从左向右计算。算。23逗号逗号 逗号逗号(,)运算常见的三种用途是:运算常见的三种用途是:一一在变量说明表中用来分隔变量,起分隔符的作在变量说明表中用来分隔变量,起分隔符的作用,如:用,如

13、:n int i, j, k, m3, *p;一一在函数的参数表中分隔参数,在函数的参数表中分隔参数,从右向左从右向左运算。运算。n printf (%d,%d, n, n+);一一逗号表达式逗号表达式n 表达式表达式n1,表达式,表达式n2;n 用逗号分隔开的表达式用逗号分隔开的表达式从左到右从左到右进行计算,进行计算,结果的类型和值是最右边表达式的类型和值。结果的类型和值是最右边表达式的类型和值。见着见着( )先想函数先想函数,再想逗号表达式再想逗号表达式24二二 基本运算符与基本运算符与I/O操作操作 位运算只作最基本的要求(位运算只作最基本的要求(,&,|)一一按位异或的含义。按位异或

14、的含义。二二左移位或右移位相当于整数乘以或除以左移位或右移位相当于整数乘以或除以2的幂,的幂,左移位有溢出的可能。左移位有溢出的可能。25二二 基本运算符与基本运算符与I/O操作操作 能够进行简单的表达式计算能够进行简单的表达式计算一一隐式类型转换:隐式类型转换:nchar型与型与int型:型:char转转int;nint型与型与float型:都转为型:都转为double型;型;n实型运算时都转换为实型运算时都转换为double型;型;n下面这句说明是否正确:下面这句说明是否正确:n 字符型与单精度实型进行运算时都转换字符型与单精度实型进行运算时都转换为双精度实型。为双精度实型。26二二 基本

15、运算符与基本运算符与I/O操作操作u int main() double a; float b; int c; c=b=a=40/3; printf(“%d%f%fn”,c,b,a);输出:输出:13, 13.000000, 13.00000027二二 基本运算符与基本运算符与I/O操作操作一一强制类型转换强制类型转换n对求余运算的操作数的转换对求余运算的操作数的转换(int)f%i;nvoid *malloc(size):动态存储函数,分配:动态存储函数,分配size字节的内存。字节的内存。u 若要使指针变量若要使指针变量p指向一个存储指向一个存储int变量的存储变量的存储单元,则:单元,则

16、:uint *p;up= malloc(sizeof(int);2.注意:无论隐式还是强制类型转换,变量本身注意:无论隐式还是强制类型转换,变量本身的数据类型是不变的。的数据类型是不变的。(int *)28二二 基本运算符与基本运算符与I/O操作操作 基本的基本的I/O函数的使用方法和功能:函数的使用方法和功能:printf、scanf、getchar、putchar一一scanf、printf设置的格式要与变量的类型一致。设置的格式要与变量的类型一致。二二输入、输出输入、输出long int要用要用%ld。三三输入输入double要用要用%lf或或%le。四四若需显示百分号,格式为:若需显示

17、百分号,格式为:%scanf:格式与变量类型必须对应:格式与变量类型必须对应printf:%d %c可以互换,可以互换,double可以用可以用%f输出输出29函数形式函数形式含义含义正常返回正常返回错误返回错误返回ch=getchar()从键盘输入一个从键盘输入一个字符到字符到ch得到的字符得到的字符-1putchar(ch)输出输出ch到显示器到显示器 该字符该字符-1scanf(format,args)从键盘按格式输从键盘按格式输入数据到入数据到args (地址地址)中中正确读入的正确读入的数据个数数据个数printf(fomat,args)将将args变量内容变量内容按格式输出到显按格

18、式输出到显示器示器输出字符个输出字符个数数二二 基本运算符与基本运算符与I/O操作操作 30二二 基本运算符与基本运算符与I/O操作操作u 下列函数调用不正确的是:下列函数调用不正确的是:A. putchar(putchar(ch)B. str=gets(s) C. fclose(fp) D. fopen(fp)u 输入输入3,执行语句,执行语句printf(“2:%d,”,printf(“1:%d,”,scanf(“%d”,&x);以后的输出结果是:以后的输出结果是:A. 2:1,1:1, B. 1:1,2:1, C. 2:4,1:1, D. 1:1,2:4, 31二二 基本运算符与基本运算

19、符与I/O操作操作一一如果实际数据所占字符位大于指定的如果实际数据所占字符位大于指定的域宽域宽,按按实际输出,且小数会按指定的精度来。实际输出,且小数会按指定的精度来。u printf(“%9.5fn”,12345.678);一一与与printf不同,不同,scanf不能规定不能规定精度精度,变量前要,变量前要有取地址符有取地址符&。u 在键盘上输入:在键盘上输入:283.1900,要想,要想float c的值为的值为283.19,正确的输入语句:,正确的输入语句:nA. scanf(“%f”,&c); B. scanf(“%8.4f”,&c);1.C. scanf(“%6.2f”,&c);

20、D. scanf(“%8”,&c);12345.6780032二二 基本运算符与基本运算符与I/O操作操作一一一定要区分开浮点数的有效位、能表达的最小一定要区分开浮点数的有效位、能表达的最小数、以实数格式输出数、以实数格式输出(%f输出六位小数的实数输出六位小数的实数)。二二对对scanf来说,来说,1) 回车,回车,Tab,空格,空格 2) 宽度结宽度结束束 3) 非法输入非法输入 是输入数据的分隔符。是输入数据的分隔符。u 输入:输入:2 3 或或 2u 31.可以直接可以直接scanf(“%d%d”,&a,&b);用用scanf %d或或%s之后再用之后再用%c是很危险的!是很危险的!3

21、3二二 基本运算符与基本运算符与I/O操作操作u除上述三种天然分隔符以外,除上述三种天然分隔符以外,scanf输入形式输入形式必须要和必须要和“ ”内的内的一模一样一模一样u输入:输入:2,3 要用要用scanf(“%d,%d”,&a,&b);u使用语句使用语句scanf(”x=%f,y=%f”,&x,&y);要输入;要输入变量变量x、y的值(的值(代表空格),正确的输入是:代表空格),正确的输入是: A. 1.25,2.4B. 1.252.4 C. x=1.25,y=2.4D. x=1.25y=2.434三三 基本语句基本语句 掌握正确的语法形式、控制流程、常掌握正确的语法形式、控制流程、常

22、见书写形式见书写形式 if 和和 switch 语句语句 循环语句(循环语句(for、while、do-while) break 和和 continue 语句语句 goto语句不要求语句不要求 语句之间的嵌套关系和规定语句之间的嵌套关系和规定 最基本的三重循环程序的编写方法最基本的三重循环程序的编写方法 35三三 基本语句基本语句 掌握正确的语法形式、控制流程、常掌握正确的语法形式、控制流程、常见书写形式见书写形式一一语句:以语句:以“;”为标志,一个复合语句是一条语为标志,一个复合语句是一条语句。句。二二if () ; 这里的这里的;是一个空语句,是一个空语句,if语句结束;语句结束;1.f

23、or(;) ; 同样同样36三三 基本语句基本语句 if 和和 switch 语句语句一一if语句与条件语句的等价语句与条件语句的等价if (y0)x=-y;elsex=y;(y0)?x=-y:x=y;等价等价等价等价x=(y0)?-y:y;37三三 基本语句基本语句 一一if与与else、else if的匹配的匹配请缩进!请缩进!nswitch() case:语句形式是重点语句形式是重点一一括号内可以是任何表达式,但括号内可以是任何表达式,但“取整取整”;二二case后的每个后的每个常量表达式常量表达式必须是整型、字符型必须是整型、字符型或枚举型,并且或枚举型,并且各不相同各不相同;三三de

24、fault和和case的相对位置是任意的;的相对位置是任意的;四四直到直到break才跳出才跳出;五五每个每个case之后的语句可多于一个,之后的语句可多于一个,不必不必加加 ;2.default子句可以省略。子句可以省略。38三三 基本语句基本语句u int c;while(c=getchar() != n) switch(c-2) case 0: ;case 1: putchar(c+4);case 2: putchar(c+4);break;case 3: putchar(c+3);default: putchar(c+2); 输入:输入:2473 输出:输出:66897739三三 基本

25、语句基本语句 循环语句(循环语句(for、while、do-while)一一准确掌握三个语句的执行流程。准确掌握三个语句的执行流程。i=1;while (i=10) n*=i; i+; for (i=1;i=10;i+) n*=i; 只要条件不符合,程序退出只要条件不符合,程序退出也就是说,最后一步,也就是说,最后一步,循环体可能不执行,但条件要多判断一次。循环体可能不执行,但条件要多判断一次。 for的第三个语句的第三个语句(i+)永远都是在右括号永远都是在右括号之前执行之前执行40u int i=1; 执行语句执行语句while(i+4);后变量后变量i的值:的值:A. 3 B. 4C.

26、5D. 6u 在不使用在不使用goto、break、return等转移语句的情等转移语句的情况下,以下结论正确的是:况下,以下结论正确的是:A. 对对do_while语句,循环条件判断次数可能小语句,循环条件判断次数可能小于循环体执行次数于循环体执行次数B. 对对while和和for语句,循环条件判断次数可能语句,循环条件判断次数可能等于循环体执行次数等于循环体执行次数C. 无论是无论是while、for还是还是do_while语句,循环语句,循环条件判断次数都不可能小于循环体执行次数条件判断次数都不可能小于循环体执行次数D. 循环条件判断次数和循环体执行次数之间无循环条件判断次数和循环体执行

27、次数之间无规律可寻规律可寻41三三 基本语句基本语句u 求取满足式求取满足式 12+22+32+ +n2 1000的的n,正确的语句是:,正确的语句是: A. for(i=1,s=0;(s=s+i*i)=1000;n=i+) ; B. for(i=1,s=0;(s=s+i*i)=1000;n=+i) ;C. for(i=1,s=0;(s=s+i*+i)=1000;n=i) ; D. for(i=1,s=0;(s=s+i*i+)=1000;n=i) ;42三三 基本语句基本语句 break 和和 continue 语句语句一一break仅能退出仅能退出一层一层(当前层当前层)循环;循环;二二co

28、ntinue结束本次循环,如果是结束本次循环,如果是for(,i+)本次循环的本次循环的i+还是要做的。还是要做的。三三break和和continue都可以通过改变程序结构而都可以通过改变程序结构而省略。省略。43三三 基本语句基本语句 最基本的三重循环程序的编写方法最基本的三重循环程序的编写方法编程题中可能出到的穷举和图形编程题中可能出到的穷举和图形 请注意网络教室中的编程作业和第请注意网络教室中的编程作业和第六章课件循环应用部分。六章课件循环应用部分。44三三 基本语句基本语句u 求解爱因斯坦数学题。有一条长阶梯,若每步求解爱因斯坦数学题。有一条长阶梯,若每步跨跨2阶,则最后剩余阶,则最后

29、剩余1阶,若每步跨阶,若每步跨3阶,则最后阶,则最后剩剩2阶,若每步跨阶,若每步跨5阶,则最后剩阶,则最后剩4阶,若每步跨阶,若每步跨6阶则最后剩阶则最后剩5阶,若每步跨阶,若每步跨7阶,最后才正好一阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶阶不剩。请问,这条阶梯共有多少阶? u 全排有全排有30名战士,会骑马的名战士,会骑马的20人,会摔跤的人,会摔跤的22人,会拳击的人,会拳击的18人,会骑马和摔跤的人,会骑马和摔跤的14人,会人,会摔跤和拳击的摔跤和拳击的12人,会拳击和骑马的有人,会拳击和骑马的有10,编,编写程序,输出三项全能的人。写程序,输出三项全能的人。45四四 数组数组

30、数组的概念,数组说明,数组元素起始下数组的概念,数组说明,数组元素起始下标,如何引用数组元素,数组名的意义标,如何引用数组元素,数组名的意义 多维数组元素的标识方法,存放方式。多多维数组元素的标识方法,存放方式。多维数组只要求到二维维数组只要求到二维 数组与函数的关系:在函数之间传递数组数组与函数的关系:在函数之间传递数组中的一个元素,在函数之间传递整个数组中的一个元素,在函数之间传递整个数组 基本算法:求最大(小)值,排序(冒泡、基本算法:求最大(小)值,排序(冒泡、选择),矩阵乘法,矩阵转置选择),矩阵乘法,矩阵转置 46四四 数组数组 (cont.)字符串字符串重点重点 字符串:基本概念

31、,串结束标记字符串:基本概念,串结束标记0 串输入串输入/输出函数:输出函数:gets,puts 串的基本操作串的基本操作(非递归非递归/递归算法递归算法):复制、:复制、连接、求长、比较、反向、求子串、查找、连接、求长、比较、反向、求子串、查找、合并、排序合并、排序 47四四 数组数组 数组的概念,数组说明,数组元素起始下数组的概念,数组说明,数组元素起始下标,如何引用数组元素,数组名的意义标,如何引用数组元素,数组名的意义一一一组具有一组具有相同数据类型相同数据类型的数据的的数据的有序集合有序集合。二二无论一维还是二维数组,在内存中的存储都是无论一维还是二维数组,在内存中的存储都是线性的。

32、做题时可将二维数组写成矩阵形式。线性的。做题时可将二维数组写成矩阵形式。u int m33=1,2,3;int n33=1,2,3;printf(“%dn”,m10+n00);printf(“%dn”,m01+n10);静态存储时静态存储时输出:输出:3 048四四 数组数组 n关于数组的大小关于数组的大小(长度,元素的个数长度,元素的个数):一一C语言不允许对数组的大小进行动态说明语言不允许对数组的大小进行动态说明定义时定义时 中不能是变量,但可以是字符常量。中不能是变量,但可以是字符常量。二二初始化初始化(赋初值赋初值)时只有时只有第一维数组长度可省略第一维数组长度可省略。三三数组初始化数

33、组初始化(赋初值赋初值)时越界将报错;引用时越时越界将报错;引用时越界不报错。界不报错。四四对数组元素的引用,下标永远从对数组元素的引用,下标永远从0开始,到该开始,到该维长度维长度-1。五五不能对数组整体赋值不能对数组整体赋值(除初始化和赋初值时除初始化和赋初值时),数组名是一个常量!数组名是一个常量!49四四 数组数组u 对字符数组对字符数组s赋值,不合法的一个:赋值,不合法的一个:A. char s =“Beijing”;B. char s20=“Beijing”;C. char s20; s=“Beijing”;D. char s20=B,e,i,j,i,n,j;char *s;s=“

34、Beijing”;50四四 数组数组 一一数组名是地址常量:一维数组名是第一个元素数组名是地址常量:一维数组名是第一个元素的地址的地址一级地址;二维数组名是第一行元一级地址;二维数组名是第一行元素的地址,第一个元素的地址的地址素的地址,第一个元素的地址的地址二级二级地址。地址。二二数组的每个元素功能上等价于一个变量。数组的每个元素功能上等价于一个变量。u int a3=1,2,3;以下数据是变量还是地址:以下数据是变量还是地址:u a0 *a a *(a+1) a11. &a0+1 *&a1 a+1 &a0元素元素a0、*a 地址:地址:a、&a0元素元素a1、*(a+1)、*&a1 地址:地

35、址:&a0+1、a+1ai *(a+i)&ai a+i51四四 数组数组u 二维数组二维数组int b 3=1,2,3,4,5,6; b b0 *b *(b+1) b12 *(*(b+1)+2)(*(b+1)2 &b0&b00b00b1b0b1bb+1654321*(b1+2)bij *(bi+j) *(*(b+i)+j) (*(b+i)j52四四 数组数组u 若有说明:若有说明:int b410, i, j,(且且0=i4, 0=j10),则对数组元素,则对数组元素bij引用错误的是:引用错误的是:A. *(&b00+10*i+j) B. *(b+i)j C. *(*(b+i)+j) D.

36、*(bi+j)u 若有定义若有定义int b35, i, j; (且且0=i3, 0=jmax) max=x; if ( ) min=x; scanf(“%f”,&x); printf(“max=%f,min=%fn”,max,min)max=xmin=xx=0 xmin55u 用冒泡法对输入的用冒泡法对输入的10个浮点数从小到大进行排序个浮点数从小到大进行排序int main() ;int i,j;printf(“Input 10 numbers:n”);for(i=0; ; i+) scanf(“%f”,&ai); for(i=0; ; i+)for(j=0; ; j+;) if( ) x

37、=aj; ; aj+1=x; float a10,xi10i9jaj+1aj=aj+1冒泡:冒泡:外层:外层:n-1次次内层:内层:n-i-1次次(若若i从从0开始开始)56四四 数组数组程序填空技巧:程序填空技巧:q 从备选项中找启发;从备选项中找启发;q 带入一个数来验证,也用于读程序,特带入一个数来验证,也用于读程序,特别是字符串处理。别是字符串处理。57u 以下程序的功能是将字符串以下程序的功能是将字符串t后移后移len个位置,移个位置,移出的字符移到串首。请完善程序。出的字符移到串首。请完善程序。int main() void backm( ); char t81; int len=

38、3; gets(t); backm(t, len); printf (%sn, t); 【5】 A.*(s+n) B.(s+n-1) C.(s+n-j) D.*(s+n-1)【6】 A.*(s+n-2) B.*(s+n-i) C.*(s+n-2-i) D.(s+n-2-i)void backm(char *s, int m ) int i, j, n; char ch; n=strlen(s); for(j=0;jm;j+) ch= 【5】 ; for(i=0;in-1;i+) *(s+n-1-i)= 【6】 ; *s=ch; 58四四 数组数组字符串字符串重点重点 字符串:基本概念,串结束标

39、记字符串:基本概念,串结束标记0 串输入串输入/输出函数:输出函数:gets,puts 串的基本操作串的基本操作(非递归非递归/递归算法递归算法):复制、:复制、连接、求长、比较、反向、求子串、查找、连接、求长、比较、反向、求子串、查找、合并、排序合并、排序59四四 数组数组一一要想用字符数组保存字符串,则应多留出一个要想用字符数组保存字符串,则应多留出一个长度来。长度来。二二有有0才叫字符串。之所以能用字符指针才叫字符串。之所以能用字符指针char * str引用字符串,就是因为引用字符串,就是因为0是默认的字符是默认的字符串尾串尾u 对字符数组对字符数组str赋初值,赋初值,str不能作为

40、字符串使用不能作为字符串使用的是:的是:uA. char str =“shanghai”;uB. char str =“shanghai”;uC. char str9=s,h,a,n,g,h,a,i,0;1.D. char str8=s,h,a,n,g,h,a,i;60四四 数组数组u已知:已知:char str120=“abcde”, str220=“xyz”;则执行语句:则执行语句:printf(%d, strlen ( strcpy(str1, str2) ) );输出结果是:输出结果是: A. 9 B. 3 C. 5D. 861一一char str20;nscanf(“%s”,str)

41、;n只能输入不包括空格、只能输入不包括空格、t和和n的字符串,自动在的字符串,自动在串尾加串尾加0。一一printf(“%s”,str);n从输出项提供的地址开始输出,直到遇到从输出项提供的地址开始输出,直到遇到0为为止,止,0不输出。不输出。一一gets(str); n 可输入包括空格和可输入包括空格和t的字符串,的字符串,n自动转换为自动转换为0。一一puts(str);1.把首地址为把首地址为str的字符串显示在屏幕上并换行。的字符串显示在屏幕上并换行。62u 回顾以下语句的语句回顾以下语句的语句l for ( i=0; stri!=0; i+ ) ; i-; l while ( *p

42、) p+; p-; ln = strlen(str); n-; lfor (i=0;(str2i=str1i)!=0; i+);lwhile(str2i=str1i) i+;lwhile(*str2+=*str1+);定位最后定位最后一个字符一个字符复复制制63lfor ( i=0; str1i!=0; i+ ) ;for ( j=0; (str1i=str2j) != 0; i+, j+ ) ;lfor (k=0; km & strk!=0; k+);for (h=0;hn&(subh=strk)!=0;k+,h+);连接连接子串子串64lfor ( i=0; in-1; i+ ) for

43、( j=0; j stringj+1 ) t = stringj; stringj = stringj+1; stringj+1 = t; lfor ( i=0; i6-1; i+ ) for (j=0; j 0 ) strcpy ( t, strj ); strcpy ( strj, strj+1); strcpy ( strj+1, t); 65l n = strlen(str); for ( i=0, j=n-1; ij; i+, j- ) c = stri; stri = strj; strj = c; lrevstr ( char * s ) char *p=s, c; while

44、( *p ) p+; p-; while ( swp) ; for (i=*n;i=p;i-) ; wp=x; +*n;wi+1=wip+*n=strlen(w)遇到字符串问题,一遇到字符串问题,一定举一个简单的例子定举一个简单的例子验证一下。验证一下。69五五 函数函数 函数的概念,函数的定义与说明,函数调函数的概念,函数的定义与说明,函数调用,函数的返回值与函数定义之间的关系用,函数的返回值与函数定义之间的关系 函数之间进行参数传递的特点(值传递)函数之间进行参数传递的特点(值传递)传递一般变量:形参一般变量,实参一般变量传递一般变量:形参一般变量,实参一般变量传递变量地址:形参指针变量,

45、实参变量地址传递变量地址:形参指针变量,实参变量地址在函数之间传递:数组,结构在函数之间传递:数组,结构函数的返回值:简单类型,指针,结构,函数的返回值:简单类型,指针,结构,void 70五五 函数函数(cont.) 掌握变量的存储类型和作用域,变量初始掌握变量的存储类型和作用域,变量初始化化 函数递归的概念,递归调用的一般过程。函数递归的概念,递归调用的一般过程。能够编写直接递归程序,掌握递归程序设能够编写直接递归程序,掌握递归程序设计方法:针对数值问题和非数值问题使用计方法:针对数值问题和非数值问题使用不同的方法。不同的方法。 71五五 函数函数 函数的概念,函数的定义与说明,函数调函数

46、的概念,函数的定义与说明,函数调用,函数的返回值与函数定义之间的关系用,函数的返回值与函数定义之间的关系一一一个源文件可以被不同的程序使用。一个源文件可以被不同的程序使用。二二一个函数可以被位于不同源文件中的其它函数一个函数可以被位于不同源文件中的其它函数调用。调用。三三主函数可以放在任何一个源文件中的任何位置。主函数可以放在任何一个源文件中的任何位置。四四函数是函数是C程序的基本组成单位,编译单位是文程序的基本组成单位,编译单位是文件件五五可以嵌套调用和递归调用函数,但不可嵌套定可以嵌套调用和递归调用函数,但不可嵌套定义函数。义函数。72五五 函数函数 一一函数的类型即函数返回值的类型函数的

47、类型即函数返回值的类型决定函数决定函数返回值类型的是定义函数时所指定的函数类型返回值类型的是定义函数时所指定的函数类型(可能发生隐式类型转换可能发生隐式类型转换)。二二函数名是函数定义唯一不可缺省的部分;函数函数名是函数定义唯一不可缺省的部分;函数类型省略时,默认为整型。类型省略时,默认为整型。三三所有函数都返回,只是所有函数都返回,只是void函数返回时没有返函数返回时没有返回值。回值。四四只能将实参的值传给形参,单向的。只能将实参的值传给形参,单向的。五五int、char型函数定义在调用后不用声明。型函数定义在调用后不用声明。73五五 函数函数 一一形参说明的两种方式:形参说明的两种方式:

48、二二函数形参是自动变量,在函数定义时不占有内函数形参是自动变量,在函数定义时不占有内存空间。存空间。三三形参必须能存放数据,可以是变量、地址,如形参必须能存放数据,可以是变量、地址,如指针和数组名指针和数组名(虽然形式是数组,但仍是指针!虽然形式是数组,但仍是指针!)1.double x,y,z(int); int fun(int x,int y) int fun(x,y) int x,y; 对对z是函数声明是函数声明74五五 函数函数u fun (float x) float y; y=x*x; return y;已知已知float z;使用使用z=fun(2.5);调用该函数后,变调用该函

49、数后,变量量z的值:的值:A. 4 B. 6C. 6.25D. 有编译错误有编译错误75五五 函数函数 函数之间进行参数传递的特点(值传递)函数之间进行参数传递的特点(值传递)传递一般变量:形参一般变量,实参一般变量传递一般变量:形参一般变量,实参一般变量传递变量地址:传递变量地址:形参指针变量,实参变量地址形参指针变量,实参变量地址在函数之间传递:数组,结构在函数之间传递:数组,结构函数的返回值:简单类型,指针,结构,函数的返回值:简单类型,指针,结构,void一一实参变量和形参变量之间是值传递。实参变量和形参变量之间是值传递。(即使是地即使是地址,也是传递的地址值,也发生复制址,也是传递的

50、地址值,也发生复制)二二使用数组名作为函数调用时的实参,实际上传使用数组名作为函数调用时的实参,实际上传递给形参的是数组的首地址。递给形参的是数组的首地址。三三传递地址,并对传递地址,并对*x操作,将影响到共享的变量操作,将影响到共享的变量76u 用指针完成两数的交换用指针完成两数的交换int swap ( , ) int t; t= ; ; =t; return ; int main() int x=2, y=3; swap ( , );A. x B. y C. *x D. *y E. &x F. &yG. int *x H. int *y I. int x J. int yint *x i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁