资源描述
若若int a34=0;则下面正确的叙述是:则下面正确的叙述是:A)只有元素)只有元素 a00 可得到初值可得到初值 0。B)此说明语句不正确)此说明语句不正确。C)数组)数组 a 中各元素都可得到初值,但其值不中各元素都可得到初值,但其值不一定为一定为 0。D)数组)数组 a 中每个元素均可得到初值中每个元素均可得到初值 0。复习复习若定义数组:若定义数组:int a108;int a108;问数组共问数组共有多少元素?在内存中存储时占多少字有多少元素?在内存中存储时占多少字节?如何在内存中存放?最后一个单元节?如何在内存中存放?最后一个单元的元素下标是多少?的元素下标是多少?7.3 字符数组字符数组 字符数组是用来存放字符数据的数组,数字符数组是用来存放字符数据的数组,数组中的每个元素只能存放一个字符。组中的每个元素只能存放一个字符。一、定义一、定义形式:形式:char c5包含包含5个元素:个元素:c0、c1.c4c0 c1 c2 c3 c4 C h i n a 说明说明:由于机器内实际存放的是字符的由于机器内实际存放的是字符的ASCII码值码值(整型数),故上面的定义也可以是:(整型数),故上面的定义也可以是:int c5;二、赋初值二、赋初值同一维数组类似。同一维数组类似。1。定义时赋初值。定义时赋初值如如:char c5=C,h,i,n,a;不能超过不能超过5个字符个字符,若少于若少于5个,后面的赋个,后面的赋给空字符给空字符“0”。说明:说明:(1)若字符个数与数组长度相同时,可以不)若字符个数与数组长度相同时,可以不指定数组长度。如:指定数组长度。如:char c=H,o,w,a,r,e,y,o,u;系统可以自动定义系统可以自动定义c数组的长度为数组的长度为11,即,即c112。用赋值语句。用赋值语句-必逐个赋值必逐个赋值.如如:chr c3;c0=A;c1=B;c2=C;三、字符串和字符串结束标志三、字符串和字符串结束标志 C语言中将字符串用字符数组来表示。语言中将字符串用字符数组来表示。1。用。用“0”作为字符串的结束标志作为字符串的结束标志。“0”是是ASCII码值为码值为“0”的空操作,在此表示字符串的空操作,在此表示字符串结束。结束。2。字符串常量的初始化。字符串常量的初始化 前面讲初始化时,一个一个字符写,也可简单。前面讲初始化时,一个一个字符写,也可简单。如:如:char c=“How are you”;或:或:char c=“How are you”;系统可以自动识别系统可以自动识别c数组的长度为数组的长度为12,相当于:相当于:char c=H,o,w,a,r,e,y,o,u,0;H o w a r e y o u 0四、字符数组的输入输出四、字符数组的输入输出(一)字符数组的输入(一)字符数组的输入1。用。用scanf函数函数(1)用格式符)用格式符%c:一次输入一个单字符。一次输入一个单字符。如:如:char str6;int i;for (i=0;iy?x:y;return(z)8.2 函数定义函数定义一、一般形式一、一般形式:类型标识符类型标识符 函数名函数名(形式参数列表形式参数列表)变量说明变量说明 语句语句如:如:int max(int x,int y)int z;z=xy?x:y;return(z)定义一个求绝对值函数定义一个求绝对值函数abs?float abs(float x)float y;y=(x=0)?x:-x;return(y)说明说明:1.类型标识符类型标识符为函数的数据类型为函数的数据类型,表示了该函表示了该函数返回值的数据类型数返回值的数据类型.若不加类型说明按整型若不加类型说明按整型.2.无参函数无形参列表无参函数无形参列表,也可无类型也可无类型(因无返回值因无返回值)。3.形参类型说明既可在参数列表中,也可在函数体形参类型说明既可在参数列表中,也可在函数体外给出。外给出。如:形式参数说明的传统方式如:形式参数说明的传统方式int max(x,y)int x,y;.4.变量说明变量说明不能写在函数体外,如:不能写在函数体外,如:int z .5.空函数空函数 形式形式:类型说明符类型说明符 函数名函数名()如如:dummy()表示该函数什么也不作表示该函数什么也不作.通常程通常程序中将一些要调用的函数处序中将一些要调用的函数处,加一空函数。将后加一空函数。将后来编好的函数可以加在此处。来编好的函数可以加在此处。8.3 函数参数及函数的值函数参数及函数的值一、形参与实参:一、形参与实参:形参:形参:函数定义中的参数函数定义中的参数(在被调函数中)。(在被调函数中)。实参:实参:调用函数时,给出的参数,(在主调调用函数时,给出的参数,(在主调函数中)函数中)调用函数时,调用函数时,大都有值传递关系大都有值传递关系,即将,即将主调函主调函数实参送到被调函数的形参数实参送到被调函数的形参。调用后,被调函数。调用后,被调函数将将函数值再传回主调函数函数值再传回主调函数int max(int x,int y)int z;z=xy?x:y;return(z)如:如:d=max(a,b);m=max(c,d);a,b x,y;zd c,d x,y;z m每次把最大值返给主调函数每次把最大值返给主调函数 例例1:求:求a,b,c三个数中的最大值。三个数中的最大值。main()int a,b,c,d,m;scanf(“%d,%d,%d”,&a,&b,&c);_ _ printf(“max is%dn”,m);/*输出结果输出结果*/d=max(a,b);m=max(c,d);m=max(max(a,b),c);主函数:主函数:定义;定义;输入;输入;调用函数计算或处理;调用函数计算或处理;输出;输出;子函数:子函数:处理:实现函数功能处理:实现函数功能 int max(int x,int y);int z ;if (xy)z=x;else z=y;return(z);/*将将z值返回值返回*/总结规律?总结规律?两步合一两步合一用用if语句写函数语句写函数说明说明:1.定义函数时,形参必指定类型(定义函数时,形参必指定类型(int x,int y)。2.实参与形参类型应一致。(实参与形参类型应一致。(字符型和整型可通字符型和整型可通用)。用)。3。实参可以是常量,变量或表达式。但变量和。实参可以是常量,变量或表达式。但变量和表达式要有确定表达式要有确定 的值。的值。如:如:a=1,b=2;max(a*b,a+b);4.参数的传递是参数的传递是“值传递值传递”,即单向传递即单向传递。数据只能由数据只能由“实参实参”“形参形参”,不能由不能由“形参形参”“实参实参”如如:将上例改动一下:将上例改动一下:a=1,b=2;d=max(a+2,b);参数传递:参数传递:int max(int x,int y)a 1 b 2 a 1 b 2x 3 y 2 x 3 y 2结束后,结束后,x的的3并不送回并不送回a.5.值传递前,形参值传递前,形参x,y并未分配内存单元。并未分配内存单元。调用结束后,调用结束后,形参所占内存空间即可释放。形参所占内存空间即可释放。请说出该程序的输出结果:请说出该程序的输出结果:main()int a=5,b=10;asd(a,b);printf(a=%d,b=%dn,a,b);getch();asd(int x,int y)x=x+3;y=y+5;作用作用:将将一个一个确定的返回值确定的返回值送给调用函数。送给调用函数。说明说明:(1)函数中可以没有返回值)函数中可以没有返回值。函数中也可以有多个函数中也可以有多个return.(2)返回值可以是表达式:)返回值可以是表达式:如:如:max(int x,int y)return(xy?x:y);(3)可以不写()。可以不写()。如:如:return z 与与return(z)相同。相同。二、函数的返回值二、函数的返回值返回值语句的格式:返回值语句的格式:return()返回返回一个一个确定的值确定的值4。返回值的类型一般应与函数的类型一致。返回值的类型一般应与函数的类型一致。如:如:int max(int x,int y);max为整型为整型,z也应为整型。也应为整型。5。若函数类型与返回值类型不同,由。若函数类型与返回值类型不同,由函数类型决定函数类型决定返回值类型返回值类型。返回值类型自动转换成函数类型返回值类型自动转换成函数类型。6。为了明确函数。为了明确函数“不带回值不带回值”,可用关键字,可用关键字“void”定义定义“无类型无类型”函数。函数。单选题单选题有以下程序有以下程序#define P 3 void F(int x)return(P*x*x);main()printf(%dn,F(3+5);程序运行后的输出结果是程序运行后的输出结果是 A)192B)29C)25D)编译出错编译出错一、函数调用的一般形式:一、函数调用的一般形式:函数名(实参列表);函数名(实参列表);如:如:a=5;b=8;c=max(a,b);说明:(说明:(1)若为无参函数调用,可以无实参)若为无参函数调用,可以无实参列表。列表。(2)各参数间用)各参数间用“,”号分开。号分开。(3)实参与形参个数应相等,类型应一致。)实参与形参个数应相等,类型应一致。8.4 函数的调用函数的调用二、函数的调用方式:二、函数的调用方式:1。作为函数语句:。作为函数语句:把函数调用作为一个语句把函数调用作为一个语句 swap(*p1,*p2);交换数据函数交换数据函数,如:如:short(a,10);2。作为函数表达式。作为函数表达式main()int a,b,s;scanf(“%d,%d”,&a,&b);s=sum(a+b,b*2);printf(“sum=%dn”,s);sum(int x,int y)int z;z=x+y;运行:运行:10,15 return(z)问:问:sum 函数为何类型?函数为何类型?sum=55默认默认-int如:如:c=5*max(a,b)-2;这种情况函数应有返回值这种情况函数应有返回值。3。作为函数参数。作为函数参数将函数调用作为一个函数的实参。将函数调用作为一个函数的实参。如:如:m=max(max(a,b),c);又如又如:求:求:s=a+b+cprintf(“s=%d”,sum(a,sum(b,c);实质也是函数表达式调用的一种。实质也是函数表达式调用的一种。*三、对被调函数的说明三、对被调函数的说明 用户定义的函数,若与主函数在同一文件中,应用户定义的函数,若与主函数在同一文件中,应在主函数中在主函数中对被调函数返回值类型进行说明。对被调函数返回值类型进行说明。例例3。求:。求:y=x2+x3+x5分析:分析:编一求编一求xn的函数的函数-power(x,n),调用,调用3次。次。函数形参:函数形参:x,n;用;用t=t*x,开始开始t=1循环循环n次,次,t为为xn。主函数:主函数:(1)定义,定义,a(x的实参)的实参),y.(2)输入输入a.(3)3次调用次调用power(x,n)(4)输出输出y的值。的值。一般一般主函数主函数中中:定义、输入、调子函数处定义、输入、调子函数处理、理、输出;输出;子函数子函数中:处理或计算数据中:处理或计算数据。main()long power(int x,int n);/*声明被调函数声明被调函数*/int a;long y;scanf(%d,&a);y=power(a,2)+power(a,3)+power(a,5);printf(y=%ldn,y);long power(int x,int n)/*函数首部函数首部*/int i;/*函数体函数体*/long t=1;for(i=1;i=n;i+)t=t*x;return t;t=1;for(i=1;i1)age(n-1)+2 (n1)例例4(例例87)。有五人,第有五人,第5人比第人比第4人大人大2岁,第岁,第4人比人比第第3人大人大2岁,第岁,第3人比第人比第2人大人大2岁,第岁,第2人比第人比第1人人大大2岁。第岁。第1人人10岁,问第岁,问第5人多少岁?人多少岁?n=1 n=1 时,时,c=10,c=10,否则否则c=age(n-1)+2 c=age(n-1)+2 age(int n)age(int n)求求age(5)age(5)的过程:的过程:int c;age(5)=age(4)+2int c;age(5)=age(4)+2 age(3)+2 age(3)+2 age(2)+2 age(2)+2 return(c);age(1)+2 return(c);age(1)+2 10 10 main()main()int nl;int nl;nl=age(5);nl=age(5);printf(printf(“第第5 5人的年龄为人的年龄为:%d:%d”,nl);,nl);if (n=1)c=10;else c=age(n-1)+2;运行运行:第第5人的年龄为:人的年龄为:18回推回推递推递推age(n)=10 (n=1)age(n-1)+2 (n1)例例5 5 用递归调用法求用递归调用法求n!.n!.分析分析:6!=6*5!,5!=5*4!,6!=6*5!,5!=5*4!,2 2!=2*1=2*1!,!,1 1!=1=1 公式:公式:主函数:(主函数:(1 1)输入任一整数)输入任一整数n,n,(2)fac(n)(2)fac(n)函数函数-y.(3)-y.(3)输出值输出值y y。float fac(int n)float f;if (n=0|n=1)f=1;else f=n*fac(n-1);return(f);main()int n;float y;scanf(%d”,&n);y=fac(n);printf(“%d!=%f”,n,y);n!=1 (n=0,1)n*(n-1)!(n1)若要编一将一组数排序的若要编一将一组数排序的函数,传递的是什么?函数,传递的是什么?main()int y=10;while(y-);printf(y=%dn,y);程序运行后的输出结果是程序运行后的输出结果是A A)y=0y=0B B)y=-1y=-1C C)y=1y=1D D)whilewhile构成无限循环构成无限循环数字字符数字字符0的的ASCII值为值为48,若有以下程序,若有以下程序main()char a=1,b=2;printf(%c,b+);printf(%dn,b-a);程序运行后的输出结果是程序运行后的输出结果是A)3,2B)50,2C)2,2D)2,50上机作业上机作业 :实验七实验七1 1,2 2附加题附加题 求求100100内能被内能被3 3整除的数字之和整除的数字之和
展开阅读全文