版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、复习遵遵一一 根本概念根本概念 字符集、标识符、关键字字符集、标识符、关键字 各种常量的表示方法各种常量的表示方法 变量的阐明变量的阐明 其它概念其它概念一一 根本概念根本概念 字符集、标识符、关键字字符集、标识符、关键字标识符由字母、数字或下划线组成,第标识符由字母、数字或下划线组成,第一个字符必需是字母或下划线。一个字符必需是字母或下划线。可用作可用作C言语标识符的是:言语标识符的是:A. print _maf mx_2d aMb6B. Iam scanf mx_ AMBC. sign 2mf a.f A&BD. if ty_pe x1# 5XY一一 根本概念根本概念n区分关键字、函数名、
2、预编译命令。区分关键字、函数名、预编译命令。n均是均是C言语关键字的一组是:言语关键字的一组是:nA. auto enum includenB. switch typedef sizeofnC. signed union scanfnD. if struct type一一 根本概念根本概念 各种常量的表示方法各种常量的表示方法八进制整型常量八进制整型常量(标志为标志为0)中不能出现中不能出现8以上的数字。以上的数字。小数方式的实型常量不可缺的部分是小小数方式的实型常量不可缺的部分是小数点。数点。指数方式的实型常量,指数方式的实型常量,e或或E后面必需是后面必需是整数,整数,e或或E前面必需有数
3、字。前面必需有数字。实型常量只能是十进制。实型常量只能是十进制。下面能作为下面能作为C的常量的是:的常量的是:A. 0 xA5 B. 5e2.5 C. .E2 D. 028一一 根本概念根本概念n字符型常量:字符型常量:8,字符串常量:,字符串常量:“8n本义字符可以用八进制本义字符可以用八进制ddd或十六进制或十六进制xdd,不是十进制。,不是十进制。n将字符将字符g赋给字符变量赋给字符变量c,正确的表达式是:,正确的表达式是:n A. c=147 B. c=“147 C. c=147 D. c=147n以下本义字符错误的选项是:以下本义字符错误的选项是:nA. 000 B. 0014 C.
4、 x111 D. 2n以下本义字符错误的选项是:以下本义字符错误的选项是:nA. B. C. 81 D. 0可表到达十进制的可表到达十进制的255,即,即xFF(但作为但作为ASCII字符只到十进字符只到十进制的制的127,即,即x7F)本义字符是一个字符本义字符是一个字符一一 根本概念根本概念n符号常量符号常量在编译时交换。在编译时交换。n#define PR printfn#define NL “nn#define D “%dn#define D1 DNLn语句语句 PR(D1,a); 经预处置后展开为:经预处置后展开为:nA) printf(%dn,a); B) printf(“%dn,
5、a);nC) printf(“%d“n,a); D) 原语句错原语句错误误一一 根本概念根本概念 其它概念其它概念C言语区分大小写。言语区分大小写。C程序总是从程序总是从main函数开场执行,与函数开场执行,与main函数的位置无关函数的位置无关main函数函数可以在任何位置上。可以在任何位置上。一行内可以写几个语句,一个语句可以一行内可以写几个语句,一个语句可以分写在多行上分写在多行上一个分号一个语句。一个分号一个语句。C言语的最小单位言语的最小单位根本单位根本单位编译单位编译单位语句语句函数函数文件文件二二 根本运算符与根本运算符与I/O操作操作 数据类型:编码方式、占用内存字节、表数据类
6、型:编码方式、占用内存字节、表示范围示范围 全部运算符:运算规那么、优先级、结合全部运算符:运算规那么、优先级、结合性性 位运算只作最根本的要求位运算只作最根本的要求,&,| 可以进展简单的表达式计算可以进展简单的表达式计算 根本的根本的I/O函数的运用方法和功能:函数的运用方法和功能:printf、scanf、getchar、putchar二二 根本运算符与根本运算符与I/O操作操作 数据类型:编码方式、占用内存字节、数据类型:编码方式、占用内存字节、表示范围表示范围整型变量的长度由计算机硬件决议。整型变量的长度由计算机硬件决议。记住记住32767(215-1)、65535、38、308。负
7、数的补码计算负数的补码计算(-8的补码:的补码:8的原码取的原码取反加反加1)知知long i=32768,执行语句,执行语句printf(“%d,i);后屏幕显示:后屏幕显示:A. -1 B. -32768 C. 1 D. 32768实型不准确,整型爱溢出实型不准确,整型爱溢出二二 根本运算符与根本运算符与I/O操作操作n字符型以字符型以ASCII码方式存储,码方式存储,n字符变数字:字符变数字:int a = 8 - 0;n数字变字符:数字变字符:char c = 8 + 0;n判别能否是数字:判别能否是数字: 0=m=9n0=m & m=9n最好能记住最好能记住48、65、97 二二 根
8、本运算符与根本运算符与I/O操作操作 全部运算符:运算规那么、优先级、全部运算符:运算规那么、优先级、结合性结合性表达式的值和类型表达式的值和类型知:知:char a; int b; float c; double d; 执行语句执行语句c=a+b+c+d;后,变量后,变量c的数据类型是:的数据类型是:A. int B. char C. float D. double表达式表达式c=a+b+c+d的数据类型是:的数据类型是:A. int B. char C. float D. double表达式表达式a+b+c+d结果的数据类型是:结果的数据类型是:A. int B. char C. floa
9、t D. double二二 根本运算符与根本运算符与I/O操作操作接受赋值的变量类型决议了运算结果的存储类型接受赋值的变量类型决议了运算结果的存储类型一定留意赋值表达式的值一定留意赋值表达式的值if (x=1)逻辑值逻辑值if (x=1)x的值的值知:知:int a, b;对于以下;对于以下if语句:语句: if (a=b) printf (A is equal to Bn);在编译时,在编译时,C编译程序编译程序不能指出该语句有语法错误!不能指出该语句有语法错误!sizeof()是是int型表达式!型表达式!二二 根本运算符与根本运算符与I/O操作操作单目运算符的优先级通常高于双目和三目运算
10、单目运算符的优先级通常高于双目和三目运算符。符。单目运算符通常是右结合,双目运算符通常是单目运算符通常是右结合,双目运算符通常是左结合左结合(赋值运算符除外赋值运算符除外)。求余运算的对象必需是整型。求余运算的对象必需是整型。int i; float f; 正确的语句是:正确的语句是:A. (int f)%i B. int (f)%i C. int(f%i) D. (int)f%i两个整型做除法/ 结果截取为整型。华氏和摄氏的关系: ,知float C,F;由华氏求摄氏的正确赋值表达式是:A. C=5/9(F-32) B. C=5*(F-32)/9 C. C=5/9*(F-32) D. 三个表
11、达式都不正确计算s=1.0for(k=1;k=n;k+) s+= ; printf(“%fn,s); 32)(F95C1)(nn1,.,3212111答案:答案:1.0/(k*(k+1) 1/(float)(k*(k+1)二二 根本运算符与根本运算符与I/O操作操作i+与与+ii+交换为交换为i进展计算,之后再自加进展计算,之后再自加+与与- -只能用于变量,不能用于常量和表达只能用于变量,不能用于常量和表达式式操作对象只能是整型、字符型和指针类型操作对象只能是整型、字符型和指针类型int i=5; i+=+i; i的值是:的值是:A. 10 B. 11 C. 12 D. A,B,C答案都不对
12、答案都不对int i=5; i+=i+; i的值是:的值是:A. 10 B. 11 C. 12 D. A,B,C答案都不对答案都不对float x=1,y; 那么那么y=+x*+x的结果为:的结果为:A. y=9 B. y=6 C. y=1 D. 表达式错误表达式错误联想赋值联想赋值运算符运算符=二二 根本运算符与根本运算符与I/O操作操作n赋值表达式从右向左:赋值表达式从右向左:nint a=b=c=1;nint a,b,c;na=b=c=1;a*=b+5a=a*b+5a=a*(b+5)先计算右边表达式的值;再将计算结果赋给左先计算右边表达式的值;再将计算结果赋给左边的变量。边的变量。n运算
13、结果是运算结果是“逻辑值的运算符逻辑值的运算符逻辑运算逻辑运算符、关系运算符、条件运算中的条件部分。符、关系运算符、条件运算中的条件部分。nC言语并没有逻辑型,而是用言语并没有逻辑型,而是用1标识逻辑真,标识逻辑真,0标识逻辑假标识逻辑假不是不是TRUE和和FALSE。n设设 a 为整型变量,其值未知,以下表达式中有为整型变量,其值未知,以下表达式中有确定值的是:确定值的是:nA. 10 a 10 & a 15 nD. !( a = 15 )二二 根本运算符与根本运算符与I/O操作操作二二 根本运算符与根本运算符与I/O操作操作uif( i=0 ) 和和 if( !i )等价等价uif( i
14、) i非非0那么成立,即那么成立,即i和和i!=0等价等价uchar c=A; int i = !c; i 的值为的值为0u与条件表达式与条件表达式“(n)?(c+):(c-)中的表达式中的表达式(n)等价的表达式是等价的表达式是:uA. (n=0)B. (n=1) uC. (n!=0)D. (n!=1)二二 根本运算符与根本运算符与I/O操作操作n优先级:优先级:n取非取非(!)n算术运算符算术运算符(+,-,*,/,%)n关系运算符关系运算符(, (c+d) & (da) | !(cb) & (ab)只需只需(cb后变后变量量a的值:的值:uA. 0 B. 1 C. 4 D. 5u int
15、 x;逗号表达式逗号表达式“(x=4*5, x*5),x+25的结果的结果为为uA. 20 B. 100 C. 45 D. 表达式不合表达式不合法法u变量变量x的值是:的值是:uA. 20 B. 100 C. 45 D. 125留意:留意:x*5并不是并不是x=x*5,并不改动,并不改动x的值的值联想指针联想指针 p+和和p+1二二 根本运算符与根本运算符与I/O操作操作留意,赋值运算符的优先级很低!留意,赋值运算符的优先级很低!char ch; 执行执行while ( ch=getchar() !=n ); 时时输入输入abcde后,变量后,变量ch的值:的值:A. e B. n C. 0
16、D. NULLint a=1, b=2, m=2, n=2;(m=ab)&+n;那么那么n的值是:的值是: A. 1 B. 2 C. 3 D. 4二二 根本运算符与根本运算符与I/O操作操作n得到结论就不再计算:逻辑运算得到结论就不再计算:逻辑运算n只计算一部分:条件运算只计算一部分:条件运算nint x=1,y;执行以下语句后执行以下语句后x的值是:的值是:ny=+x5 & +xy? +x:+y;nA. 1 B. 2C. 3D. 4n留意:留意:xy? +x:xz? +x:y+ 是从左向右计是从左向右计算。算。逗号逗号 逗号逗号(,)运算常见的三种用途是:运算常见的三种用途是: 在变量阐明表
17、中用来分隔变量,起分隔符的作用,在变量阐明表中用来分隔变量,起分隔符的作用,如:如: int i, j, k, m3, *p; 在函数的参数表中分隔参数,从右向左运算。在函数的参数表中分隔参数,从右向左运算。 printf (%d,%d, n, n+); 逗号表达式逗号表达式 表达式表达式n1,表达式,表达式n2; 用逗号分隔开的表达式从左到右进展计算,用逗号分隔开的表达式从左到右进展计算,结果的类型和值是最右边表达式的类型和值。结果的类型和值是最右边表达式的类型和值。见着见着( )先想函数先想函数,再想逗号表达式再想逗号表达式二二 根本运算符与根本运算符与I/O操作操作 位运算只作最根本的要
18、求位运算只作最根本的要求,&,|按位异或的含义。按位异或的含义。左移位或右移位相当于整数乘以或除以左移位或右移位相当于整数乘以或除以2的幂,左移位有溢出的能够。的幂,左移位有溢出的能够。二二 根本运算符与根本运算符与I/O操作操作 可以进展简单的表达式计算可以进展简单的表达式计算隐式类型转换:隐式类型转换:char型与型与int型:型:char转转int;int型与型与float型:都转为型:都转为double型;型;实型运算时都转换为实型运算时都转换为double型;型;下面这句阐明能否正确:下面这句阐明能否正确: 字符型与单精度实型进展运算时都字符型与单精度实型进展运算时都转换为双精度实型
19、。转换为双精度实型。二二 根本运算符与根本运算符与I/O操作操作u int main()u double a;u float b;u int c;u c=b=a=40/3;u printf(“%d%f%fn,c,b,a);u输出:输出:13, 13.000000, 13.000000二二 根本运算符与根本运算符与I/O操作操作n强迫类型转换强迫类型转换n对求余运算的操作数的转换对求余运算的操作数的转换(int)f%i;nvoid *malloc(size):动态存储函数,分配:动态存储函数,分配size字节的内存。字节的内存。n假设要使指针变量假设要使指针变量p指向一个存储指向一个存储int变
20、量的存变量的存储单元,那么:储单元,那么:nint *p;np= malloc(sizeof(int);n留意:无论隐式还是强迫类型转换,变量本身留意:无论隐式还是强迫类型转换,变量本身的数据类型是不变的。的数据类型是不变的。(int *)二二 根本运算符与根本运算符与I/O操作操作 根本的根本的I/O函数的运用方法和功能:函数的运用方法和功能:printf、scanf、getchar、putcharscanf、printf设置的格式要与变量的类设置的格式要与变量的类型一致。型一致。输入、输出输入、输出long int要用要用%ld。输入输入double要用要用%lf或或%le。假设需显示百分
21、号,格式为:假设需显示百分号,格式为:%scanf:格式与变量类型必需对应:格式与变量类型必需对应printf:%d %c可以互换,可以互换,double可以用可以用%f输出输出函数形式函数形式含义含义正常返回正常返回错误返回错误返回ch=getchar()从键盘输入一个从键盘输入一个字符到字符到ch得到的字符得到的字符-1putchar(ch)输出输出ch到显示器到显示器 该字符该字符-1scanf(format,args)从键盘按格式输从键盘按格式输入数据到入数据到args (地址地址)中中正确读入的正确读入的数据个数数据个数printf(fomat,args)将将args变量内容变量内容
22、按格式输出到显按格式输出到显示器示器输出字符个输出字符个数数二二 根本运算符与根本运算符与I/O操作操作 二二 根本运算符与根本运算符与I/O操作操作u 以下函数调用不正确的选项是:以下函数调用不正确的选项是:uA. putchar(putchar(ch)A. putchar(putchar(ch)B. str=gets(s) B. str=gets(s) uC. fclose(fp) C. fclose(fp) D. D. fopen(fp)fopen(fp)u 输入输入3 3,执行语句,执行语句u printf(“2:%d,printf(“2:%d,printf(“1:%d,printf(
23、“1:%d,scanf(“%d,scanf(“%d,&x);,&x);以后的输出结果是:以后的输出结果是:uA. 2:1,1:1, A. 2:1,1:1, B. 1:1,2:1, B. 1:1,2:1, uC. 2:4,1:1, C. 2:4,1:1, D. 1:1,2:4, D. 1:1,2:4, 二二 根本运算符与根本运算符与I/O操作操作n假照实践数据所占字符位大于指定的域宽,按假照实践数据所占字符位大于指定的域宽,按实践输出,且小数会按指定的精度来。实践输出,且小数会按指定的精度来。nprintf(“%9.5fn,12345.678);n与与printf不同,不同,scanf不能规定精
24、度,变量前要不能规定精度,变量前要有取地址符有取地址符&。n在键盘上输入:在键盘上输入:283.1900,要想,要想float c的值为的值为283.19,正确的输入语句:,正确的输入语句:nA. scanf(“%f,&c); B. scanf(“%8.4f,&c);nC. scanf(“%6.2f,&c); D. scanf(“%8,&c);12345.67800二二 根本运算符与根本运算符与I/O操作操作n一定要区分开浮点数的有效位、能表达的最小一定要区分开浮点数的有效位、能表达的最小数、以实数格式输出数、以实数格式输出(%f输出六位小数的实数输出六位小数的实数)。n对对scanf来说,来
25、说,1) 回车,回车,Tab,空格,空格 2) 宽度终宽度终了了 3) 非法输入非法输入 是输入数据的分隔符。是输入数据的分隔符。n输入:输入:2 3 或或 2n 3n可以直接可以直接scanf(“%d%d,&a,&b);用用scanf %d或或%s之后再用之后再用%c是很危险的!是很危险的!二二 根本运算符与根本运算符与I/O操作操作u除上述三种天然分隔符以外,除上述三种天然分隔符以外,scanf输入方式输入方式必需求和必需求和“ 内的一模一样内的一模一样u输入:输入:2,3 要用要用scanf(“%d,%d,&a,&b);u运用语句运用语句scanf(x=%f,y=%f,&x,&y);要输
26、;要输入变量入变量x、y的值的值代表空格,正确的输入代表空格,正确的输入是:是:u A. 1.25,2.4B. 1.252.4 uC. x=1.25,y=2.4D. x=1.25y=2.4三三 根本语句根本语句 掌握正确的语法方式、控制流程、常掌握正确的语法方式、控制流程、常见书写方式见书写方式 if 和和 switch 语句语句 循环语句循环语句for、while、do-while break 和和 continue 语句语句 goto语句不要求语句不要求 语句之间的嵌套关系和规定语句之间的嵌套关系和规定 最根本的三重循环程序的编写方法最根本的三重循环程序的编写方法三三 根本语句根本语句 掌
27、握正确的语法方式、控制流程、常掌握正确的语法方式、控制流程、常见书写方式见书写方式语句:以语句:以“;为标志,一个复合语句是为标志,一个复合语句是一条语句。一条语句。if () ; 这里的这里的;是一个空语句,是一个空语句,if语句语句终了;终了;for(;) ; 同样同样三三 根本语句根本语句 if 和和 switch 语句语句if语句与条件语句的等价语句与条件语句的等价if (y0)x=-y;elsex=y;(y0)?x=-y:x=y;等价等价等价等价x=(y0)?-y:y;三三 根本语句根本语句 nif与与else、else if的匹配的匹配请缩进!请缩进!nswitch() case:
28、语句方式是重点语句方式是重点n括号内可以是任何表达式,但括号内可以是任何表达式,但“取整;取整;ncase后的每个常量表达式必需是整型、字符型后的每个常量表达式必需是整型、字符型或枚举型,并且各不一样;或枚举型,并且各不一样;ndefault和和case的相对位置是恣意的;的相对位置是恣意的;n直到直到break才跳出;才跳出;n每个每个case之后的语句可多于一个,不用加之后的语句可多于一个,不用加 ;ndefault子句可以省略。子句可以省略。三三 根本语句根本语句u int c;uwhile(c=getchar() != n)u switch(c-2)u case 0: ;ucase 1
29、: putchar(c+4);ucase 2: putchar(c+4);break;ucase 3: putchar(c+3);udefault: putchar(c+2);u u输入:输入:2473 输出:输出:668977三三 根本语句根本语句 循环语句循环语句for、while、do-while准确掌握三个语句的执行流程。准确掌握三个语句的执行流程。i=1;while (i=10) n*=i; i+; for (i=1;i=10;i+) n*=i; 只需条件不符合,程序退出只需条件不符合,程序退出也就是说,最后一步,也就是说,最后一步,循环体能够不执行,但条件要多判别一次。循环体能够不
30、执行,但条件要多判别一次。 for的第三个语句的第三个语句(i+)永远都是在右括号永远都是在右括号之前执行之前执行u int i=1; 执行语句执行语句while(i+4);后变量后变量i的值:的值:uA. 3 B. 4C. 5D. 6u 在不运用在不运用goto、break、return等转移语句的情等转移语句的情况下,以下结论正确的选项是:况下,以下结论正确的选项是:uA. 对对do_while语句,循环条件判别次数能够语句,循环条件判别次数能够小于循环体执行次数小于循环体执行次数uB. 对对while和和for语句,循环条件判别次数能语句,循环条件判别次数能够等于循环体执行次数够等于循环
31、体执行次数uC. 无论是无论是while、for还是还是do_while语句,循语句,循环条件判别次数都不能够小于循环体执行次数环条件判别次数都不能够小于循环体执行次数uD. 循环条件判别次数和循环体执行次数之间循环条件判别次数和循环体执行次数之间无规律可寻无规律可寻三三 根本语句根本语句u 求取满足式求取满足式 12+22+32+ +n2 1000的的n,正确的语句是:,正确的语句是:u A. for(i=1,s=0;(s=s+i*i)=1000;n=i+) ; uB. for(i=1,s=0;(s=s+i*i)=1000;n=+i) ;uC. for(i=1,s=0;(s=s+i*+i)=
32、1000;n=i) ; uD. for(i=1,s=0;(s=s+i*i+)=1000;n=i) ;三三 根本语句根本语句 break 和和 continue 语句语句break仅能退出一层仅能退出一层(当前层当前层)循环;循环;continue终了本次循环,假设是终了本次循环,假设是for(,i+)本次循环的本次循环的i+还是要还是要做的。做的。break和和continue都可以经过改动程序都可以经过改动程序构造而省略。构造而省略。三三 根本语句根本语句 最根本的三重循环程序的编写方法最根本的三重循环程序的编写方法编程题中能够出到的穷举和图形编程题中能够出到的穷举和图形 请留意网络教室中的
33、编程作业和第请留意网络教室中的编程作业和第六章课件循环运用部分。六章课件循环运用部分。三三 根本语句根本语句u 求解爱因斯坦数学题。有一条长阶梯,假设每求解爱因斯坦数学题。有一条长阶梯,假设每步跨步跨2阶,那么最后剩余阶,那么最后剩余1阶,假设每步跨阶,假设每步跨3阶,阶,那么最后剩那么最后剩2阶,假设每步跨阶,假设每步跨5阶,那么最后剩阶,那么最后剩4阶,假设每步跨阶,假设每步跨6阶那么最后剩阶那么最后剩5阶,假设每步阶,假设每步跨跨7阶,最后才正好一阶不剩。请问,这条阶梯阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶共有多少阶? u 全排有全排有30名战士,会骑马的名战士,会骑马的20人
34、,会摔跤的人,会摔跤的22人,会拳击的人,会拳击的18人,会骑马和摔跤的人,会骑马和摔跤的14人,会人,会摔跤和拳击的摔跤和拳击的12人,会拳击和骑马的有人,会拳击和骑马的有10,编,编写程序,输出三项全能的人。写程序,输出三项全能的人。四四 数组数组 数组的概念,数组阐明,数组元素起始下数组的概念,数组阐明,数组元素起始下标,如何援用数组元素,数组名的意义标,如何援用数组元素,数组名的意义 多维数组元素的标识方法,存放方式。多多维数组元素的标识方法,存放方式。多维数组只需求到二维维数组只需求到二维 数组与函数的关系:在函数之间传送数组数组与函数的关系:在函数之间传送数组中的一个元素,在函数之
35、间传送整个数组中的一个元素,在函数之间传送整个数组 根本算法:求最大小值,排序冒泡、根本算法:求最大小值,排序冒泡、选择,矩阵乘法,矩阵转置选择,矩阵乘法,矩阵转置四四 数组数组 (cont.)字符串字符串重点重点 字符串:根本概念,串终了标志字符串:根本概念,串终了标志0 串输入串输入/输出函数:输出函数:gets,puts 串的根本操作串的根本操作(非递归非递归/递归算法递归算法):复制、:复制、衔接、求长、比较、反向、求子串、查找、衔接、求长、比较、反向、求子串、查找、合并、排序合并、排序四四 数组数组 数组的概念,数组阐明,数组元素起始下数组的概念,数组阐明,数组元素起始下标,如何援用
36、数组元素,数组名的意义标,如何援用数组元素,数组名的意义一组具有一样数据类型的数据的有序集合。一组具有一样数据类型的数据的有序集合。无论一维还是二维数组,在内存中的存储都无论一维还是二维数组,在内存中的存储都是线性的。做题时可将二维数组写成矩阵是线性的。做题时可将二维数组写成矩阵方式。方式。int m33=1,2,3;int n33=1,2,3;printf(“%dn,m10+n00);printf(“%dn,m01+n10);静态存储时静态存储时输出:输出:3 0四四 数组数组 n关于数组的大小关于数组的大小(长度,元素的个数长度,元素的个数):nC言语不允许对数组的大小进展动态阐明言语不允
37、许对数组的大小进展动态阐明定定义时义时 中不能是变量,但可以是字符常量。中不能是变量,但可以是字符常量。n初始化初始化(赋初值赋初值)时只需第一维数组长度可省略。时只需第一维数组长度可省略。n数组初始化数组初始化(赋初值赋初值)时越界将报错;援用时越界时越界将报错;援用时越界不报错。不报错。n对数组元素的援用,下标永远从对数组元素的援用,下标永远从0开场,到该维开场,到该维长度长度-1。n不能对数组整体赋值不能对数组整体赋值(除初始化和赋初值时除初始化和赋初值时),数,数组名是一个常量!组名是一个常量!四四 数组数组u 对字符数组对字符数组s赋值,不合法的一个:赋值,不合法的一个:uA. ch
38、ar s =“;uB. char s20=“;uC. char s20; s=“;uD. char s20=B,e,i,j,i,n,j;char *s;s=“;四四 数组数组 n数组名是地址常量:一维数组名是第一个元素数组名是地址常量:一维数组名是第一个元素的地址的地址一级地址;二维数组名是第一行元一级地址;二维数组名是第一行元素的地址,第一个元素的地址的地址素的地址,第一个元素的地址的地址二级二级地址。地址。n数组的每个元素功能上等价于一个变量。数组的每个元素功能上等价于一个变量。nint a3=1,2,3;以下数据是变量还是地址:以下数据是变量还是地址:n a0 *a a *(a+1) a
39、1n &a0+1 *&a1 a+1 &a0元素元素a0、*a 地址:地址:a、&a0元素元素a1、*(a+1)、*&a1 地址:地址:&a0+1、a+1ai *(a+i)&ai a+i四四 数组数组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)j四四 数组数组u 假设有阐明:假设有阐明:int b410, i, j,(且且0=i4, 0=j10),那么对数组元素,那么对数组元
40、素bij援用错误的选援用错误的选项是:项是:uA. *(&b00+10*i+j) B. *(b+i)j uC. *(*(b+i)+j) D. *(bi+j)u 假设有定义假设有定义int b35, i, j; (且且0=i3, 0=jmax) max=x;u if ( ) min=x;u scanf(“%f,&x);u u printf(“max=%f,min=%fn,max,min)umax=xmin=xx=0 xminu 用冒泡法对输入的用冒泡法对输入的10个浮点数从小到大进展排序个浮点数从小到大进展排序u int main()u ;uint i,j;uprintf(“Input 10 n
41、umbers:n);ufor(i=0; ; i+)u scanf(“%f,&ai);u for(i=0; ; i+)ufor(j=0; ; j+;)u if( )u x=aj;u ;u aj+1=x;u u float a10,xi10i9jaj+1aj=aj+1冒泡:冒泡:外层:外层:n-1次次内层:内层:n-i-1次次(假设假设i从从0开开场场)四四 数组数组程序填空技巧:程序填空技巧:从备选项中找启发;从备选项中找启发;带入一个数来验证,也用于读程序,特带入一个数来验证,也用于读程序,特别是字符串处置。别是字符串处置。u 以下程序的功能是将字符串以下程序的功能是将字符串t后移后移len个
42、位置,移个位置,移出的字符移到串首。请完善程序。出的字符移到串首。请完善程序。u int main()u void backm( );u char t81;u int len=3;u gets(t);u backm(t, len);u printf (%sn, t); u u 【5】 A.*(s+n) B.(s+n-1) C.(s+n-j) D.*(s+n-1)u 【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
43、(j=0;jm;j+) ch= 【5】 ; for(i=0;in-1;i+) *(s+n-1-i)= 【6】 ; *s=ch; 四四 数组数组字符串字符串重点重点 字符串:根本概念,串终了标志字符串:根本概念,串终了标志0 串输入串输入/输出函数:输出函数:gets,puts 串的根本操作串的根本操作(非递归非递归/递归算法递归算法):复制、:复制、衔接、求长、比较、反向、求子串、查找、衔接、求长、比较、反向、求子串、查找、合并、排序合并、排序四四 数组数组n要想用字符数组保管字符串,那么应多留出一要想用字符数组保管字符串,那么应多留出一个长度来。个长度来。n有有0才叫字符串。之所以能用字符指
44、针才叫字符串。之所以能用字符指针char * str援用字符串,就是由于援用字符串,就是由于0是默许的字符串是默许的字符串尾尾n对字符数组对字符数组str赋初值,赋初值,str不能作为字符串运用不能作为字符串运用的是:的是:nA. char str =“shanghai;nB. char str =“shanghai;nC. char str9=s,h,a,n,g,h,a,i,0;nD. char str8=s,h,a,n,g,h,a,i;四四 数组数组u知:知:char str120=“abcde, str220=“xyz;那么执行语句:那么执行语句:uprintf(%d, strlen (
45、 strcpy(str1, str2) ) );u输出结果是:输出结果是:u A. 9 B. 3 C. 5D. 8nchar str20;nscanf(“%s,str);n只能输入不包括空格、只能输入不包括空格、t和和n的字符串,自动在的字符串,自动在串尾加串尾加0。nprintf(“%s,str);n从输出项提供的地址开场输出,直到遇到从输出项提供的地址开场输出,直到遇到0为为止,止,0不输出。不输出。ngets(str); n 可输入包括空格和可输入包括空格和t的字符串,的字符串,n自动转换为自动转换为0。nputs(str);n把首地址为把首地址为str的字符串显示在屏幕上并换行。的字符
46、串显示在屏幕上并换行。u 回想以下语句的语句回想以下语句的语句u for ( i=0; stri!=0; i+ ) ; u i-; u while ( *p ) u p+;u p-; un = strlen(str); un-; ufor (i=0;(str2i=str1i)!=0; i+);uwhile(str2i=str1i) i+;uwhile(*str2+=*str1+);定位最后定位最后一个字符一个字符复复制制lfor ( i=0; str1i!=0; i+ ) ;lfor ( j=0; (str1i=str2j) != 0; i+, j+ ) ;lfor (k=0; km & st
47、rk!=0; k+);lfor (h=0;hn&(subh=strk)!=0;k+,h+);衔接衔接子串子串lfor ( i=0; in-1; i+ )l for ( j=0; j stringj+1 )l t = stringj;l stringj = stringj+1;l stringj+1 = t;l lfor ( i=0; i6-1; i+ )l for (j=0; j 0 )l strcpy ( t, strj );l strcpy ( strj, strj+1);l strcpy ( strj+1, t); l l n = strlen(str);l for ( i=0, j=n
48、-1; ij; i+, j- )l c = stri;l stri = strj;l strj = c;l lrevstr ( char * s ) l char *p=s, c;l while ( *p ) p+; l p-; l while ( swp) ; for (i=*n;i=p;i-) ; wp=x; +*n;wi+1=wip+*n=strlen(w)遇到字符串问题,一遇到字符串问题,一定举一个简单的例子定举一个简单的例子验证一下。验证一下。五五 函数函数 函数的概念,函数的定义与阐明,函数调函数的概念,函数的定义与阐明,函数调用,函数的前往值与函数定义之间的关系用,函数的前往值与
49、函数定义之间的关系 函数之间进展参数传送的特点值传送函数之间进展参数传送的特点值传送传送普通变量:形参普通变量,实参普通传送普通变量:形参普通变量,实参普通变量变量传送变量地址:形参指针变量,实参变量传送变量地址:形参指针变量,实参变量地址地址在函数之间传送:数组,构造在函数之间传送:数组,构造函数的前往值:简单类型,指针,构造,函数的前往值:简单类型,指针,构造,void五五 函数函数(cont.) 掌握变量的存储类型和作用域,变量初始掌握变量的存储类型和作用域,变量初始化化 函数递归的概念,递归调用的普经过程。函数递归的概念,递归调用的普经过程。可以编写直接递归程序,掌握递归程序设可以编写
50、直接递归程序,掌握递归程序设计方法:针对数值问题和非数值问题运用计方法:针对数值问题和非数值问题运用不同的方法。不同的方法。五五 函数函数 函数的概念,函数的定义与阐明,函数调函数的概念,函数的定义与阐明,函数调用,函数的前往值与函数定义之间的关系用,函数的前往值与函数定义之间的关系一个源文件可以被不同的程序运用。一个源文件可以被不同的程序运用。一个函数可以被位于不同源文件中的其它函一个函数可以被位于不同源文件中的其它函数调用。数调用。主函数可以放在任何一个源文件中的任何位主函数可以放在任何一个源文件中的任何位置。置。函数是函数是C程序的根本组成单位,编译单位是程序的根本组成单位,编译单位是文
51、件文件可以嵌套调用和递归调用函数,但不可嵌套可以嵌套调用和递归调用函数,但不可嵌套定义函数。定义函数。五五 函数函数 n函数的类型即函数前往值的类型函数的类型即函数前往值的类型决议函数决议函数前往值类型的是定义函数时所指定的函数类型前往值类型的是定义函数时所指定的函数类型(能够发生隐式类型转换能够发生隐式类型转换)。n函数名是函数定义独一不可缺省的部分;函数函数名是函数定义独一不可缺省的部分;函数类型省略时,默以为整型。类型省略时,默以为整型。n一切函数都前往,只是一切函数都前往,只是void函数前往时没有前函数前往时没有前往值。往值。n只能将实参的值传给形参,单向的。只能将实参的值传给形参,
52、单向的。nint、char型函数定义在调用后不用声明。型函数定义在调用后不用声明。五五 函数函数 n形参阐明的两种方式:形参阐明的两种方式:n函数形参是自动变量,在函数定义时不占有内函数形参是自动变量,在函数定义时不占有内存空间。存空间。n形参必需能存放数据,可以是变量、地址,如形参必需能存放数据,可以是变量、地址,如指针和数组名指针和数组名(虽然方式是数组,但仍是指针!虽然方式是数组,但仍是指针!)ndouble x,y,z(int); int fun(int x,int y) int fun(x,y) int x,y; 对对z是函数声明是函数声明五五 函数函数u fun (float x)
53、u float y;u y=x*x;u return y;uu知知float z;运用运用z=fun(2.5);调用该函数后,变调用该函数后,变量量z的值:的值:uA. 4 B. 6C. 6.25D. 有编译错误有编译错误五五 函数函数 函数之间进展参数传送的特点值传送函数之间进展参数传送的特点值传送传送普通变量:形参普通变量,实参普通传送普通变量:形参普通变量,实参普通变量变量传送变量地址:形参指针变量,实参变量传送变量地址:形参指针变量,实参变量地址地址在函数之间传送:数组,构造在函数之间传送:数组,构造函数的前往值:简单类型,指针,构造,函数的前往值:简单类型,指针,构造,void实参变
54、量和形参变量之间是值传送。实参变量和形参变量之间是值传送。(即使是即使是地址,也是传送的地址值,也发生复制地址,也是传送的地址值,也发生复制)运用数组名作为函数调用时的实参,实践上运用数组名作为函数调用时的实参,实践上传送给形参的是数组的首地址。传送给形参的是数组的首地址。传送地址,并对传送地址,并对*x操作,将影响到共享的变操作,将影响到共享的变量量u 用指针完成两数的交换用指针完成两数的交换int swap ( , ) int t; t= ; ; =t; return ; int main() int x=2, y=3; swap ( , );A. x B. y C. *x D. *y E
55、. &x F. &yG. int *x H. int *y I. int x J. int yint *x int *y*x*x=*y*y&x&yu 函数的功能是交换变量函数的功能是交换变量x和和y中的值,且经过正中的值,且经过正确调用前往交换的结果。能正确执行此功能的确调用前往交换的结果。能正确执行此功能的函数是:函数是:uA. funa (int *x, int *y) B. funb (int x, int y)u int *p; int t;u p=x;*x=*y; *y=*p; t=x; x=y; y=t;u uC. func (int *x, int *y) D. fund (in
56、t *x, int *y)u *x=*y; *x=*x+*y;u *y=*x; *y=*x-*y;u *x=*x-*y;u u 以下程序的运转结果是以下程序的运转结果是u #include u void f(int b )u int i=0;u while(bi=10)u bi+=2;u i+;u u u int main()u int i, a = 1, 5,10, 9,13, 7;u f(a+1);u for(i=0; i6; i+)u printf(%d , ai);u A. 3 7 12 11 13 7B. 1 7 12 11 13 7C. 1 7 12 11 13 9D. 1 7 1
57、2 9 13 7五五 函数函数u 知函数原型为知函数原型为double fun(int a ,flaot b);其中其中形参形参a是:是:uA. 指针变量指针变量 B. 指针数组指针数组uC. 整型数组整型数组D. 数组指针数组指针uu 假设实参是数组名,被调子函数的形参可以定假设实参是数组名,被调子函数的形参可以定义为义为“数组数组(数组大小只第一维可省略数组大小只第一维可省略),也可,也可以定义为指针。以定义为指针。u 形参数组的大小由调用函数的实参数组的大小形参数组的大小由调用函数的实参数组的大小决议。决议。u 字符串复制字符串复制copy (char s1 , char s2 ) in
58、t i=1; while ( );int main() char a20, b20; scanf(“%s,b); copy(a,b); printf(“%sn,a);s1i+=s2i也可以是:也可以是:char *s1, char *s2u 字符串复制字符串复制copy (char *s1, char *s2) while ( );int main() char a20, b20; gets(b); copy(a,b); ;*s1+=*s2+puts(a)也可以是:也可以是:char s1 , char s2 五五 函数函数 变量的存储类型和作用域,变量初始化变量的存储类型和作用域,变量初始化
59、自动变量自动变量存放器变量存放器变量 内部静态变量内部静态变量 外部静态变量外部静态变量外部变量外部变量部分变量:在函数或复合语句内部定义;部分变量:在函数或复合语句内部定义;全局变量:在一切函数外定义,作用域从定全局变量:在一切函数外定义,作用域从定义点到文件尾。义点到文件尾。静态存储的变量在编译阶段得到初值。静态存储的变量在编译阶段得到初值。每次调用函数每次调用函数时值能坚持时值能坚持其它文件不能存取其它文件不能存取五五 函数函数u 假设一个变量在整个程序运转期间都存在,但是假设一个变量在整个程序运转期间都存在,但是仅在阐明它的函数内是可见的,该变量应被阐明仅在阐明它的函数内是可见的,该变
60、量应被阐明为:为:u A. 静态变量静态变量 B. 动态变量动态变量 C. 外部变量外部变量 D. 内部内部变量变量u 假设要定义一个只允许在该源文件中一切函数运假设要定义一个只允许在该源文件中一切函数运用的变量,那么该变量的存储类型是:用的变量,那么该变量的存储类型是:uA. extern B. register C. auto D. staticu static int i=10;其中其中“i=10的含义是:的含义是:u A. 只阐明了一个静态变量只阐明了一个静态变量 B.将变量将变量i赋值为赋值为0u C. 与与“auto i=0;在功能上等价在功能上等价 D. 将变量将变量i初初始化为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业售后售后服务
- 社区党员先锋行动计划保证书
- 企业间借款合同范本格式设计
- 专业代理记账服务合同
- 学业成绩承诺函保证承诺
- 致爱人的道歉信请求女友原谅
- 点工协议书格式
- 专业企业保证书范文
- 数据备份与恢复合同
- 爆破作业合同范本模板
- 大众顶级 辉腾 减振控制的空气悬架_图文
- 血液透析专科操作流程及评分标准
- 电工新技术介绍(课堂PPT)
- 座板式单人吊具(课堂PPT)
- 托班一日生活情况反馈表
- 机电设备维护保养技术
- FLAC3D常用命令
- JGJ_T231-2021建筑施工承插型盘扣式钢管脚手架安全技术标准(高清-最新版)
- 毕业论文(设计)除雪车工作装置设计
- 镜片加工知识之四研磨
- 核电站1E级电气设备鉴定标准技术经验
评论
0/150
提交评论