计算机二级C语言(重要知识点).ppt_第1页
计算机二级C语言(重要知识点).ppt_第2页
计算机二级C语言(重要知识点).ppt_第3页
计算机二级C语言(重要知识点).ppt_第4页
计算机二级C语言(重要知识点).ppt_第5页
已阅读5页,还剩147页未读 继续免费阅读

下载本文档

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

文档简介

授课教师:闵 芳,联系方式办公室: A3-303,周三(9月9号)上课调整到周五(9月11),1.C语言的基本概念,(1)源程序的格式,风格和结构,main函数及其他函数的基本概念。,任何C的源程序执行时,都是从主函数(main)开始执行的,其他的函数最终必将被这个主函数所调用。,C语言除了主函数规定必须取名为main外,其他的函数名可以任取,但是要符合C标识符取名规则。,在main函数体内部和外部均允许出现的实体是预处理命令,1.C语言的基本概念,(1)源程序的格式,风格和结构,main函数及其他函数的基本概念。,C程序书写格式自由,一个语句可以占多行,一行也可有多个语句。,C语言的基本组成单位是函数。,在C语言中,关键字都是小写的。,各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的,独立的,不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。,C语言用/* */作注释,注释的添加形式比较自由,允许在任何插入空格符的位置插入注释,但C语言的注释不能进行嵌套。 例题:江2006年春选择题21 下列各选项都是在C语言程序段中增加的注释,其中注释方法错误的是_ A.void main(/*int argc , char *argv*/) B.void main( )pri/*remark*/ntf(“name”); C.void main( )int x/*=10*/; printf(“%d” ,x ); D.void main( )int x=10; /*printf(“%d” ,x )*/;,各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的,独立的,不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。,函数类型 函数名(函数参数类型 函数参数名1 ,函数参数类型 函数参数名2 ,.) 函数体 ,例题:2008年春季选择题21 下列叙述正确的是_ A.main函数必须出现在其他函数之前 B.main函数中至少必须有一条语句 C.C程序总是从main函数的第一条语句开始执行 D.C程序总是在执行完main函数的最后一条语句后结束 2008年秋季选择题21,C程序是先由源程序(*.C)经编译生成目标文件(*.obj,是二进制文件),然后经过链接生成可执行文件(*.exe,是二进制文件),例题:下列叙述正确的是_ A.C程序中的注释只能出现在程序的开始位置和语句的后面 B.C程序书写格式严格,要求一行内只能写一个语句 C.C程序书写格式自由,一个语句可以写在多行上 D.用C语言编写的程序只能放在一个程序文件中,例题:下列叙述正确的是_ A.一个C语言程序只能实现一种算法 B.C程序可以由多个程序文件组成 C.C程序可以由一个或多个函数组成 D.一个C函数可以单独作为一个C程序文件存在,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,类型标识符(int ,float ,double,char)的意义及使用;类型修饰符(long,short,signed,unsigned)的意义及使用;,类型标识符:在编译的时候,为变量分配相应的存储空间;规定了变量的取值范围;规定了变量可以进行的运算;,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,例题:2006年秋填空题3,2007年秋选择题24,整数数值是以补码表示的;正数的补码和原码相同;负数的补码是将该数的绝对值的二进制形式按位取反再加1,左面的第一位表示符号。,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,基本类型常量的表示及使用:int型常量的十进制,八进制,十六进制形式;,以数字0开头的数字序列,一律作为八进制数处理,基本数字范围07;,以0x开头后面跟若干位数字的,一律作为十六进制数处理,基本数字范围09,从10-15写为A-F或a-f;,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,其他数字作为十进制数处理,基本数字范围是0-9。,例题:int a = 0144; int b = 0x64; int c = 100;,类型说明符 数的范围 分配字节数 int -3276832767 short int -3276832767 signed int -3276832767 unsigned int 065535 long int -21474836482147483647 unsigned long 04294967295 ,整型数据的分类:,整型数据分为基本类型,短整型,长整型和无符号整型。,整型数据的分类:,整型数据分为基本类型,短整型,长整型和无符号整型。,长整型,在整数的末尾加上后缀字母”l”或”L”。 例如:9L,012L,0x32L,无符号整型在整数的末尾加上后缀字母”u”或”U”。若是长整型无符号整数,则应加后缀”lu”或”LU”,2008年秋选择题23,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,基本类型常量的表示及使用:float型常量、double型常量的十进制小数形式,十进制指数形式;,日常的表示法 C语言中的表示形式 3.1415106 3.1415e6 2.56*10-7 2.56e-7,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,类型说明符float表示单精度型,在Turbo C中单精度型占4个字节内存空间,只能提供七位有效数字。,类型说明符double表示双精度型,在Turbo C中双精度型占8个字节内存空间,只能提供十六位有效数字。,Turbo C规定小数后最后保留六位,其余部分四舍五入。,2008年春选择题22,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,基本类型常量的表示及使用:char型常量形式,常用转义字符;字符串常量形式;符号常量的命名、定义与使用;,char型常量形式:字符常量是用一对单撇号括起来的一个字符,如:A , 2 , *,常用转义字符: (1)用反斜杠开头后面跟一个字母代表一个控制字符; (2)用代表字符反斜杠,用 代表撇号字符; (3)用后跟1到3个八进制数代表ASCII码为该八进制数的字符;用x后跟1到2个十六进制数代表ASCII码为该十六进制数的字符,例题:语句printf(“abdwhiyboun“)是_。 A. abdwhiybou B. abdwhiybou C. dwhiyou D. abdwhiybou,转义字符及其作用 P48,例题:下列不正确的转义字符是_。 A. 065 B. “ C. D. 0,符号常量:宏名,#define 宏名 宏体 或 #define 宏名,注意:1.宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串代替宏名,这只是一种简单的替换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。,2.宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。,符号常量:宏名,#define 宏名 宏体 或 #define 宏名,3.宏名在源程序中若用引号括起来,则预处理不对其作宏代换。,4.宏定义用宏名代替一个字符串,也就是简单的置换,不作正确性检查。,5.在定义预处理命令时,一行只能有一条预处理命令。,例题:以下说法不正确的是_ A.在C语言程序中凡是以#号开头的语句都是预处理命令行; B.C程序在执行过程中对预处理命令进行处理 C.以下是正确的宏定义 #define IBM_PC,例题:以下有关宏替换的叙述不正确的是_ A.宏替换不占用运行时间; B.宏名无类型; C.宏替换只是字符替换; D.宏名必须有大写字母表示,带参数的宏命令,C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参代替形参。,带参宏定义的一般形式为: #define 宏名(形参表) 字符串,带参宏调用的一般形式: 宏名(实参表);,带参数的宏命令,带参的宏定义的几点说明:,1.带参宏定义中,宏名和形参表之间不能有空格出现;,2.带参宏定义中,形参不分配存储单元,因此不必作类型定义;,3.在宏定义中的形参是标识符,而宏调用中的实参可以是表达式;,例题:2007年秋填空题5,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,基本类型变量的命名,声明,初始化及使用;,基本类型变量的命名:在C语言中,标识符必须以字符或下划线开头的由字母,数字和下划线组成的序列;,基本类型变量的声明:数据类型 变量名;,C语言对变量的要求:“先定义,后使用”,变量说明必须放在变量使用之前,一般放在函数体的开头部分。,例题:2007年秋选择题22,1.C语言的基本概念,(2)基本算术类型数据的表示及使用。,使用函数返回值作为操作数。,例如:以下程序的输出结果_。 int fun( int a , int b ) return( a + b ) ; main( ) int x = 2 , y = 5 , z = 8 , r; printf(“%dn“,fun(fun(x,y),z); ,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,表达式的一般组成;,运算符功能、表达式的组成及表达式的值:赋值运算符与赋值表达式、赋值运算符的左值要求;,赋值运算符: =,注意:在赋值运算符的左侧只能出现变量,赋值运算符具有强制类型转换作用,例题:若变量均已正确定义并赋值,下列合法的C语言赋值语句是_ A.x=y=5 B.x=n%2.5 C. x+n=i D.x=5=4+1,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,例题:2005年秋选择题22,例题:若x为int型变量,则执行以下语句后,x的值为_。 x = 5; xx-=x*x;,复合赋值运算*= , += , -=.,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,+,-运算符的左值要求;,算术运算符有:+,-,*,/,%,这些运算符需要两个运算对象,称双目运算符.除取余(%)运算外,这些运算符的运算对象可以是整型,也可以是实型。,取余运算的运算对象只能是整型.取余运算的结果是两数相除之后所得的余数。,例题:2006年春选择题26,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,+,-运算符的左值要求;,不同类型数据间的转换与运算,doublefloat long unsigned intchar,short,例题:2006年秋填空题2,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,+,-运算符的左值要求;,注意:强制类型转换的用法 (类型名)变量,例如: ( int ) x + y 等价于 (int)x)+y;,例题:若有声明”int a = 5 , b = 2 ;”,则表达式”b+=(float)(a+b)/2”运算后b的值为_(江2007秋填空1),1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,+,-运算符的左值要求;,自增,自减运算符即+,-(运算符是右结合性,运算级别是2),注意:a+ 与 +a 的区别,先取值后+,先+后取值,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,+,-运算符的左值要求;,例题:有下列程序: #include main() int x=1 , y=2 , z=3 ; if(xy) if(yz) printf(“%d”,+z); else printf(“%d”,+y); printf(“%dn”, x+); 程序运行之后的结果是_,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:关系运算符与关系表达式;,关系运算符: ,= (运算级别是6) ,!= (运算级别是7),注意:等于零和不等于零的表示方法 a , !a,a a!=0,!a a=0,两个实数判断相等和判断不相等的方法(在多分支if语句中的作用),例题:若有表达式(w)?( -x ):(+y),则其中与w等价的表达式是_ A.w=1 B.w=0 C.w!=1 D.w!=0,例题: 江2007年春选择题24 以下表示数学式”a=b)&!(b=c) D.!(a=b|b=c),1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:逻辑运算符与逻辑表达式,含有&、|运算符的表达式的操作数求值顺序与优化处理理;,逻辑运算符:!(运算级别是2),&,|(运算优先级是11,12),注意:a&b&c 和 a|b|c,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,在一个&表达式中,若&的一端为0,则不必再计算另一端,该表达式的值肯定为0。,在一|表达式中,若|的一端为1,则不必再计算另一端,该表达式的值肯定为1。,例题:执行下列程序段后,w的值为( ) int w=A , x = 14,y=15; w=(x|y) A.-1 B.NULL C.1 D.0,例题:有以下程序 main() int i = 1 , j =2 , k = 3 ; if( i+ = 1 运行之后的结果是_。,例题:设x,y,z和t均为int型变量,执行以下语句后,t的值为_。 x=y=z=0; t=+x|y+,例题:下列只有当整数x为偶数,才是逻辑“真”的表达式_ A.x%2!=0 B.!(x%2=0) C.(x-x/2*2)=0 D.if(x%2),1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:逗号运算符与逗号表达式,逗号表达式的操作数求值顺序;,逗号表达式一般形式为: 表达式1,表达式2,表达式3,.,表达式n,整个逗号表达式的值是表达式n的值。,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,在所有运算中,逗号表达式的优先级最低:,逗号表达式一般形式中的表达式1和表达式2也可以是另一逗号表达式,并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。,例题:有如下程序: #include main() int a = 5 , b = -3 , c =4 ; printf(“%d%dn“ , (a+ , +b) , c -2 ); 运行该程序的输出结果是_。,例题:已知字符A的ASCII码值为65,以下程序结果为_: #include main() int b = 20 ; char a = A; printf(“%d,%on“,(a=a+1,a+b,b), a+ a-A,b ); ,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:条件运算符与条件表达式;,条件运算(右结合性) e1 ? e2 : e3,若e1为真(非0),则此条件表达式的值为e2的值;若e1为假(0),则表达式取e3的值。,条件运算(右结合性),例题:ab ?x : y?m:n,例题:江2006年秋选择题22 若已有声明”int x = 4 , y = 3 ;”,则表达式“xy?x+:y+”的值是_ A.2 B.3 C.4 D.5,1.C语言的基本概念,(3)运算符和表达式的表示及使用。,运算符功能、表达式的组成及表达式的值:位运算符与位运算表达式;,位运算符: (按位取反) &(按位与) (按位异或) |(按位或) (右移,将一个数的二进制全部右移若干位),1.C语言的基本概念,(3)运算符和表达式的表示及使用。,例题:下列程序的输出结果是_ main() char a = 3 , b = 6 ,c = ab2; printf(“n%d“ ,c); ,2.基本语句,(1)实现顺序结构的语句:表达式语句(包括函数调用语句)、空语句、复合语句;标准设备输入输出函数:printf()、scanf()、getchar()、putchar()、gets()、puts()。,注意:,(a)getchar()是无参函数,从输入设备读取一个字符,包括不可显示字符。,(b)gets()和puts()函数只有一个参数,且为字符串的首地址。,(c) printf()函数中的实参的求值顺序从右向左。,在格式控制串中,格式说明与输出项从左到右在类型上必须一一对应匹配;,在格式控制串中,格式说明与输出项个数相同。如果格式说明的个数少于输出项的个数,多余的项将不予输出。反之,多余的格式将输出不定值(或0值);,如果想输出百分号“”,则在格式控制串中用两个连续的百分号”%”来表示;,printf函数的返回值为本次调用输出字符的个数。,(d) scanf()函数的格式控制符中的普通字符照原样输入。,2006年秋选择题23、28,2007年春填空题4,在scanf()中非格式字符是作为输入数据时的间隔,输入时必须原样地输入。而格式字符对应的数据,输入时必须按照规定的格式输入;,在所有数据输入后,可用一个回车符结束输入;,用%c作为输入字符是仅接受单个字符。从键盘输入单个字符后应该跟回车键作为输入数据的结束,此时回车作为一个字符存放在缓冲区中,如再有%c作为输入字符时,将不再从键盘读入数据,而是从缓冲区读入还未读完的数据。,例题: 2006年秋选择题23 23.若有声明”int i ; float x ;char a50;”,为使i得到值为1,x得到值为3.1416,a得到值yz,当执行语句“scanf(“%3d%f%2s” , &i, &x ,a )”时,正确的输入形式是_. A.1,3.1416,yz B.13.1416yz C.001 3.1416 yz D.i=001,x=3.1416,a=yz,例题:若在定义语句:int a, b, c,*p=,例题: 2006年秋选择题28 28.设有变量声明”char c;”,执行for(;c=(getchar()!=n);) printf(“%c”,c)”时,从键盘输入”ABCDEFG ”之后,输出的结果是_。 A.ABCDEFG B.AABBCCDDEEFFGG C.非字母数字字符 D.语句不能执行,例题:若要求从键盘读入含有空格字符的字符串,应使用函数_(0604国) A.getc() B.gets() C.getchar() D.scanf(),例题:2007年春填空题4 4.已知程序中有声明”int a ; long b ;”,若需要接受从键盘输入的电话号码字符串(010)64782656(其中010是区号,64782656是电话号码),并将其中的区号,电话号码分别存放到变量a,b中,则实现该功能的输入语句应为“scanf(“_” , &a,&b)”,2.基本语句,(2)实现选择结构的语句:ifelse语句、switch语句和break语句。,if语句一般格式,if(表达式) 语句,或 if(表达式) 语句1 else 语句2,注意:,(b)“语句”如果是复合语句应有括号,(a)“表达式”应有括号且为各类型的表达式,2005年秋选择题26 26.下列程序段中,能将变量x,y中值较大的数保存到变量a,值较小的数保存在变量b的程序段是_。 A.if(xy)a=x;b=y;else a=y;b=x; B.if(xy) a=x ;b=y;else a=y;b=x; C.if(xy) a=x;b=y;else a=y;b=x; D.if(xy) a=x;b=y;else ( xy) a=y;b=x ;,例题:设变量x和y均已正确定义并赋值,下列if语句中,在编译时将产生错误信息的是_ A.if(x+); B.if(xy,题型:,(a)数学分段函数的求值问题,(b)繁琐的二维数组求值填空问题(结合循环语句,必考),例题:2007年秋填空题8 8.以下程序运行时输出结果是_ #include void f(long x ) if( x 100 ) printf( “%d” , x/10 ) ; else f(x/100); printf(“%d” , x%100/10); main() f(123456); ,2.基本语句,(2)实现选择结构的语句:ifelse语句、switch语句和break语句。,switch(表达式) case 常量表达式1: 语句1 ; break; case 常量表达式2: 语句2 ; break; case 常量表达式n: 语句n ; break; default: 语句n+1; ,注意:,(a)在case后的各常量表达式的值不能相同,否则会出现错误,(b)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。,2.基本语句,(2)实现选择结构的语句:ifelse语句、switch语句和break语句。,注意:,例题:2007年春填空题9,(c)多个case可以共用一组执行语句,(d)“语句”为多条时,可以不必加大括号,(f)default语句可缺省,例题:2007年春填空题9 9.以下程序运行后输出结果的第一行为_,第二行为_ #include void main() int i = 5 ; do switch( i % 2 ) case 0 :i-; break; case 1:i-;continue; i;printf(“%dn”,i); while(i0); ,例题:main() int a=2,b=7,c=5; switch(a) case 1:switch(b0) case 1: printf(“”);break; case 2: printf(“!”);break; case 0:switch(c=5) case 0: printf(“*”);break; case 1: printf(“#”);break; case 2: printf(“$”);break; default:printf(“ 运行结果是_,2.基本语句,(3)实现循环结构的语句:while语句、dowhile语句、for语句等。,当型循环语句一般格式: while(表达式) 语句,注意:,(a)表达式应有( ),(b)“语句”为复合语句时应加大括号,(c)“语句”中含有break,continue语句时的情况,break:终止本层循环;在多层循环中,一个break语句只向外跳一层,即中止一层循环,continue:终止本次循环的执行,进入下一次循环。,例题:设x和y均为int型变量则执行下面的循环后,y的值为_。 y=1,x=1; while( y = 10 ) break; if( x %2 = 1 ) x+= 3 ; continue ; x+=2; y+ ; A.3 B.4 C.5 D.6,例题:下列叙述中正确的是_ A.break语句只能用于swith语句体中 B.continue语句的作用是使程序的执行流程跳出包含它的所有循环 C.break语句只能用于循环体内和swith语句体内 D.在循环内使用break语句和continue语句的作用相同,2.基本语句,(3)实现循环结构的语句:while语句、dowhile语句、for语句。,直到型循环语句一般格式: do 语句 while(表达式);,注意:,(a)无论表达式是否成立,循环体至少执行一次;,(b)格式中表达式有( ),且后面的”;”不能丢;,(c)在语句中应有使”表达式”趋于不成立的语句存在;,例题:2007年秋填空题6,例题:2007年秋填空题6 6.以下程序运行的结果是_. #include main( ) int s = 1,n =235; do s*=n%10; n/=10; while(n); printf(“%dn”,s); ,for循环结构的执行过程如下:,1.求解表达式1;,for型循环语句一般格式: for( 表达式1;表达式2;表达式3) 语句;,2.求解表达式2,若其值为“真”,则执行for语句中的循环体,然后执行下面的执行第(3)步。若为假(值为0)则结束循环转到第(5)步;,3.求解表达式3;,4.转回上面第(2)步继续执行;,5.执行for语句下面的一个语句;,2.基本语句,(3)实现循环结构的语句:while语句、dowhile语句、for语句。,注意:,(a)繁琐的二维数组填值问题,(b)三种循环语句可以互相嵌套,例题:2007年秋选择题25, 25.若在一个C语言源程序中”e1”和”e3”是表达式,“s;”是语句,则下列选项中与语句”for(e1;e3 )s;”功能等同的语句是:_ A.e1;while(10)s;e3; B.e1;while(10)s;e3; C.e1;while(10)e3;s; D.while(10)e1;s;e3;,例题:2007年春选择题26, 26.下列关于循环语句for,while,do_while的叙述中正确的是_ A.三种循环语句的循环体都必须放入一对花括号中 B.三种循环语句中都可以缺省循环中止条件表达式 C.三种循环语句的循环都至少被无条件地执行一次 D.三种循环语句都可能出现无穷循环,例题: 2006年秋选择题24 24.程序段”int x = 3 ;do printf(“%d” , x-);while(!x);”执行结果是_. A. 3 2 1 B.2 C.3 D.死循环,2.基本语句,(4)其他语句:break、continue、return。,break语句,用于循环,switch语句;,continue语句,用于循环语句;,return语句,用于函数返回值;,例题:下列叙述中错误的是_ A.用户定义的函数中可以没有return语句 B.用户定义的函数可以有多个return语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有return语句,则应当定义函数为void D.函数的return语句中可以没有表达式,3.构造类型数据,(1)基本类型数组(一维、二维)。,一维数组,定义:,定义并初始化:,类型名 数组名常量表达式,类型名 数组名常量表达式表达式列表;,或 类型名 数组名 表达式列表;,引用:,只能引用下标变量,注意:,(a)不能定义动态数组。,如:int n ; int an;,错误,(b)只能在定义数组时初始化,以后不可以对数组整体赋值 (除字符数组外)。,(1)基本类型数组(一维、二维)。,一维数组,注意:,(c)除了字符数组外,不可整体引用数组;,(d)一维数组一般用一层循环扫描所有数组元素,(e)一维数组在内存中存储是连续的,例题:2007年秋填空题2, 2007年秋填空题9, 2006年秋选择题24,int a5=1,2,3,4,5;,正确,int a5; a5=1,2,3,4,5;,错误,例题:2007年秋填空题2 2.如有声明”char s10 = “remind”;”,执行“puts( s + 2 );”后的输出结果是_;,例题:2006年秋选择题25 25.若有字符数组A和B的声明”static char A = “ABCDEF”,B=A,B,C,D,E,F;”,则数组A和数组B的长度分别是_ A.7,6 B.6,7 C.3 D. 死循环,例题: 2007年秋填空题9, 9.以下程序运行时输出结果的第一行是_;第二行是_。 #include int fun( int *x , int n ) int i , j ; for( i=j=0;in;i+) if( *(x+i)%2) *(x+j+) = *(x+i); return j ; main() int a10 = 1,5,2,3,8,3,9,7,4,10,n ,i ; n = fun(a , 10); for( i = 0 ; i n ; i+ ) printf(“%5d”,ai); if(i+1)%3=0) printf(“n”); ,例题: 当运行下列程序时,输入abcd,程序的输出结果是_(0604国填9) insert( char str ) int i; i=strlen(str); while(i0) str 2*i = stri;str2*i-1=*;i-; printf(“%sn”,str); main() char str40; scanf(“%sn”,str); insert(str); ,3.构造类型数据,(1)基本类型数组(一维、二维)。,二维数组,定义:,定义并初始化:,类型名 数组名常量表达式1常量表达式2,类型名 数组名常量表达式1常量表达式2表达式列表;,引用:,只能引用下标变量,注意:,不能定义动态数组。,如:int m, n ; int amn;,错误,3.构造类型数据,(1)基本类型数组(一维、二维)。,二维数组,注意:,(b).不可整体引用数组;,(c).二维数组一般用双层循环扫描所有数组元素,以及其他运算。,(a).只能在定义数组时初始化,以后不可以对数组整体赋值。,int a23=1,2,3,4,5 , 6;,正确,int a23; a23=1,2,3,4,5,6;,错误,(d).二维数组在内存中连续存储,数组名是0行0列数组元素的地址,ai是第i行第0列元素的地址。,3.构造类型数据,(1)基本类型数组(一维、二维)。,例题:下列数组定义中错误的是_(0604国) A.int x3=0; B.int x23=1,2,3,4,5,6; C.int x3=1,2,3,4,5,6; D.int x23=1,2,3,4,5,6;,例题:若有声明”int a34,*p=a0,(*q)4=a;”,则下列叙述中错误的是_(07秋江选26) A.a23与q23等价 B. a23与p23等价 C.a23与*(p+11)等价 D.a23与p=p+11,*p等价,例如:有下列程序(0809国选35) #include #define N 4 void fun( int aN, int b) int i ; for(i=0;iN;i+ ) bi = aii; main() int xN=1,2,3,4,5,6,7,8,9,10,yN, i; fun(x,y); for(i=0;iN;i+) printf(“%d”,yi); printf(“n”); 程序运行的结果是_,例题:2007年春填空题11 以下程序运行后输出结果第一行_,第二行_,第三行_ #include “stdio.h“ #define N 3 main() int aNN,bN*N=1,1,i,j; for(i=2;iN*N;i+ ) bi = bi-1 + b i-2 ; for( i=0;iN;i+) for( j=0;jN;j+) aji=bi*N+j; for( i=0;iN;i+) for( j = 0 ; jN;j+) printf(“5d“ ,aij); printf(“n“); ,二维数组:,(e).二维数组的第一维方括号的常量表达式可以省略,此时第一维大小按以下规则决定:,当初值的个数能被二维的常量表达式的值除尽时,所得商数就是第一维的大小;,当初值的个数不能被第二维的常量表达式的值除尽时,则:,第一维的大小 初值个数/第二维常量表达式值 1,例如: int c3= 1,2,3,4,5 ; 则数组c的第一维大小是多少?,3.构造类型数据,(1)基本类型数组(一维、二维)。,字符数组(一维,二维):,有普通一维,二维数组的性质,特点:,(a)可以初始化,也可以使用strcpy( )赋值,char str10 = a, b, c;,char str10 = “abc“;,char str10;strcpy( str , “abc“ ),(b)可以引用下标变量,也可以整体引用(一维数组),(c)一般用于存储字符串。,(d)字符串的基本概念:串结束符 , 内存单元地址,字符串,通常用一个字符数组来存放一个字符串,字符串总是以0存入数组。用字符串方式赋值比用字符逐个赋值也要多占一个字节,存放结束符。,3.构造类型数据,(1)基本类型数组(一维、二维)。,字符数组(一维,二维):,有普通一维,二维数组的性质,特点:,(e).字符串函数的使用,字符串长度(strlen( ) ),字符串赋值(strcpy( ) ),字符串连接(strcat( ) ),字符串比较(strcmp( ) ),函数的参数是地址,使用#include,例题:#include main( ) char st20=“hello0abct“; printf(“%d, %d“ , strlen(st),sizeof(st); ,例题:2007年秋填空题11 #include #include void fun( char str20,int n ) int i,j,k; char s20; for( i=0;in-1;i+ ) k=i; for(j=i+1;jn;j+) if( strcmp( strj,strk)0) k = j; strcpy( s, stri); strcpy( stri , strk); strcpy( strk , s) 以上程序运行时第一行是_,第二行是_.,main( ) char str20=“PASCAL“,“BASIC“,“FORTRAN“,“C“,“COBOL“,“Smalltalk“; int i; fun(str , 6); for(i=0;i6;i+) printf(“%sn“,stri); ,(f).字符串的输入输出函数( gets ,scanf 和 puts , printf),如:char c10;,gets(c)-遇回车符中止;,scanf(“s“,c)-遇空格中止,例题: #include main( ) char str13; scanf(“%s”,str); printf(“%s“,str); ,例题: #include main( ) char str13; gets(str); puts(str); ,对于下列两段程序如输入数据为:abcd1234 efgh 则输出结果分别为_。,例题:2006年春选择题27 27.设有如下程序 #include main() char s128=0,*p = s ; while(strcmp(s,“END“) gets(s); while(*p) putchar( *p+); A.所有输入的字符串都能被完整的输出 B.所有输入的字符串都不能被完整输出 C.只能完整输出第一个字符串 D.只能完整输出最后一个字符串,例题:有下列程序(0804国选35) #include void fun(char *a , char *b) while(*a=a) a+; while(*b=*a) b+;a+; main() char *s=“*a*b*”,t80; fun( s , t ) ;puts(t); 程序运行结果是_ A.*a*b B.a*b C.a*b* D.ab,例题:以下程序运行时输出结果是_(08秋江填9题) #include #include void sf( char *s1,char *s2) if( *s1 = *s2) sf( s1 + 1 , s2 + 1 ); void main() char a20 = “ABC”, b20 = “xyz” ; sf( a+strlen(a) , b ); puts(a); ,3.构造类型数据,(1)基本类型数组(一维、二维)。,字符数组(一维,二维):,有普通一维,二维数组的性质,特点:,(g).二维数组的引用:下标引用法和数组名加第一维下标,例题:下列程序按下面指定的数据给x数组的下三角置数,并按如 下形式输出,请填空。(0809国) 4 3 7 2 6 9 1 5 8 10 #include main( ) int x44 , n=0,i,j; for(j=0;j=j;_(1)_) n+;xij=_(2)_; for(i=0;i4;i+) for(j=0;j=i;j+) printf(“%3d” , xij); printf(“n”); ,3.构造类型数据,(2)结构体变量和数组。,结构体数据类型的定义;,struct data char ch; int x; float y; ;,结构体变量的定义;,1.struct data char ch; int x; float y; x1,x2;,2.struct data char ch; int x; float y; ; struct data x1, x2;,3.struct char ch; int x; float y; x1,x2;,注意:第三种方式的变量定义只能在结构体定义之后出现一次。,例题: 08年春选择题30 30.以下结构体变量stu1的声明形式中,错误的是_ A.typedef struct stuchar name10;float score; STU;STU stu1; B.#define STU struct stu STUchar name10;float score ;stu1; C.struct stuchar name10;float score;stu1; D.struct stuchar name10;float score;STU;STU stu1;,struct data x ;,struct data,数据类型,x,struct data型变量,struct data x =a , 23 , 3.789 ;,struct data b=a,23,3.789, d,11,4.31 ;,sizeof()运算符测试某一种类型数据所占存储空间长度,例如:sizeof( struct data ) , sizeof(x) , sizeof( b ),结构体变量、结构体数组的声明及初始化;,3.构造类型数据,(2)结构体变量和数组。,结构体变量中成员、结构体数组元素中成员的赋值和引用。,struct data a =a , 23 , 3.789 ;,struct data b2=a,23,3.789, d,11,4.31 ;,例如:a.ch , a.x , a.y; b0.ch , b1.x , b0.y;,例如:a.ch = c , a.x = 3, a.y = 0.0; b0.ch = j , b1.x = 8 , b0.y=9.0;,例题:有下列程序:#include main() struct STUchar na

温馨提示

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

评论

0/150

提交评论