C语言程序设计教程课件--第7章PPT文档格式.ppt
- 文档编号:14305024
- 上传时间:2022-10-21
- 格式:PPT
- 页数:76
- 大小:1.09MB
C语言程序设计教程课件--第7章PPT文档格式.ppt
《C语言程序设计教程课件--第7章PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计教程课件--第7章PPT文档格式.ppt(76页珍藏版)》请在冰豆网上搜索。
如:
getchar()在调用无参函数时,主调函数不需要将数据传递给无参函数。
从使用的角度看:
标准函数(库函数)库函数是由系统提供的。
getchar()、sin(x)等。
在程序中可以直接调用它们。
附录A列出了C的部分库函数。
用户自定义函数。
如:
例7.1中的cube函数。
2005年3月,7,【例7.2】无参函数的定义与调用。
voidwelcome()printf(*n);
printf(WelcometoChinan);
printf(*n);
main()welcome();
程序的输出结果如下:
*WelcometoChina*,2005年3月,8,7.2.1函数的定义,函数定义的一般形式,函数类型函数名(类型名形式参数1,)说明语句执行语句,例如:
求两个数的最大值。
intmax(intx,inty)intz;
z=xy?
x:
y;
return(z);
类型省略时默认为int类型,2005年3月,9,intmax(x,y)intx,y;
intz;
intmax(x,y)intx,y;
或intmax(intx,y),或intmax(x,y)intx,y,z;
花括号中也可以为空,这种函数叫空函数。
不能在函数体内定义其他函数,即函数不能嵌套定义。
形参也可以这样定义,2005年3月,10,函数名(实参表列),在C语言中,把函数调用也作为一个表达式。
因此凡是表达式可以出现的地方都可以出现函数调用。
例如:
welcome();
if(iabs(a)max)max=iabs(a);
m=max(c,max(a,b);
7.2.2函数的调用,函数调用的一般形式:
2005年3月,11,intsum100()inti,t=0;
for(i=1;
i=100;
i+)t+=i;
return(t);
main()ints;
s=sum100();
printf(%dn,s);
程序输出结果:
5050,intsum(intx)inti,t=0;
i=x;
s=sum(100);
【例7.3】求1100的累加和。
思考:
两个程序有何不同,程序输出结果:
5050,2005年3月,12,voidswap(intx,inty)intz;
z=x;
x=y;
y=z;
printf(nx=%d,y=%d,x,y);
main()inta=10,b=20;
swap(a,b);
printf(na=%d,b=%dn,a,b);
7.2.3函数参数与函数的返回值,1函数的形式参数与实际参数,程序输出结果:
x=20,y=10a=10,b=20,形式参数(形参),实际参数(实参),【例7.4】编一程序,将主函数中的两个变量的值传递给swap函数中的两个形参,交换两个形参的值。
单向值传递,2005年3月,13,有关形参和实参的说明:
当函数被调用时才给形参分配内存单元。
调用结束,所占内存被释放。
实参可以是常量、变量或表达式,但要求它们有确定的值。
实参与形参类型要一致,字符型与整型可以兼容。
实参与形参的个数必须相等。
在函数调用时,实参的值赋给与之相对应的形参。
“单向值传递”。
注意:
在TC中,实参的求值顺序是从右到左。
2005年3月,14,【例7.5】函数调用中实参的求值顺序。
voidfun(inta,intb)printf(a=%d,b=%dn,a,b);
main()intm=5;
fun(3+m,m+);
a=9,b=5,2005年3月,15,2.函数的类型与函数的返回值,说明:
函数的类型决定了函数返回值的类型。
若省略函数的类型,系统默认其为int型。
无返回值的函数应将其类型定义为void(空)类型。
函数的类型,【例7.6】输出两个数中的大数。
max(intx,inty)intz;
z=xy?
/*返回z的值*/main()inta,b,c;
scanf(%d,%d,2005年3月,16,函数的返回值是通过return语句带回到主调函数的,功能:
终止函数的运行,返回主调函数,若有返回值,将返回值带回主调函数。
说明:
若函数没有返回值,return语句可以省略。
return语句中的表达式类型一般应和函数的类型一致,如果不一致,系统自动将表达式类型转换为函数类型。
函数的返回值,return语句格式:
return(表达式);
或return表达式;
或return;
2005年3月,17,【例7.8】计算并输出圆的面积。
s(intr)return3.14*r*r;
main()intr,area;
scanf(%d,自动转换为int型,思考:
若要得到单精度实型的圆面积,程序应如何修改,程序运行情况如下:
212,2005年3月,18,7.2.4对被调函数的声明和函数原型,变量要先定义后使用,函数也如此。
即被调函数的定义要出现在主调函数的定义之前。
如swap函数:
允许整型函数(且参数也是整型)的定义出现在主调函数之后。
如max函数:
如果非整型函数在主调函数之后定义,则应在主调函数中或主调函数之前对被调函数进行声明。
voidswap(intx,inty)main()swap(a,b);
main()c=max(a,b);
max(intx,inty),2005年3月,19,对被调函数进行声明的一般形式,函数类型函数名(参数类型1参数名1,);
或函数类型函数名(参数类型1,参数类型2,);
思考:
以下哪种情况需要在主调函数中对被调函数声明被调函数定义在前,主调函数定义在后。
主调函数定义在前,被调函数定义在后,且被调函数的类型不是整型的。
被调函数定义在后,但被调函数的类型是整型。
第二种形式省略了参数名,此种形式也称为函数的原型。
2005年3月,20,main()voidcalc(floatx,floaty,charopr);
floata,b;
charopr;
printf(nInputexpression:
scanf(%f%c%f,对被调函数的声明,【例7.9】计算并输出两个数的和、差、积、商。
2005年3月,21,图7.2验证哥德巴赫猜想,【例7.10】哥德巴赫猜想之一是任何一个大于5的偶数都可以表示为两个素数之和。
验证这一论断。
2005年3月,22,#includemath.hintprime(intn);
main()inta,b,c,n;
scanf(%d,/*穷举法判断素数*/intprime(intn)inti;
for(i=2;
i=sqrt(n);
i+)if(n%i=0)return0;
return1;
可以在main函数的前面对prime函数进行声明。
实际上,该声明可以省略,为什么?
程序如下:
2005年3月,23,7.3数组作函数参数,7.3.1一维数组元素作函数参数,main()inta5,i,m;
for(i=0;
i5;
i+)scanf(%d,【例7.11】求5个数中的最小值。
intmin(intx,inty)return(xy?
y);
用打擂台方法求最小值。
m相当于擂主,2005年3月,24,7.3.2一维数组名作函数参数,数组名表示数组在内存中的起始地址。
例如:
数组a在内存中从2000地址开始存放,则a的值为2000。
2000是地址值,是指针类型的数据(第8中将介绍指针类型),不能把它看成是整型或其他类型数据。
实参是数组名,形参也应定义为数组形式,形参数组的长度可以省略,但不能省,否则就不是数组形式了。
【例7.12】用冒泡法将10个整数排序。
2005年3月,25,voidsort(intb,intn);
voidprintarr(intb);
main()inta10=11,22,63,97,58,80,45,32,73,36;
printf(Beforesort:
n);
printarr(a);
sort(a,10);
printf(Aftersort:
voidprintarr(intb10)inti;
i10;
i+)printf(%5d,bi);
printf(n);
voidsort(intb,intn)inti,j,t;
ibj+1)t=bj;
bj=bj+1;
bj+1=t;
2005年3月,26,图7.3调用sort函数,2000,b,形参b实际是一个可以存放地址的变量,a:
2000,实参赋给形参,2005年3月,27,#includestdio.hmain()voidscat(charstr1,charstr2);
chars150,s250;
inti,k;
printf(Inputs1:
gets(s1);
printf(Inputs2:
gets(s2);
scat(s1,s2);
printf(Outputs1:
%sn,s1);
printf(Outputs2:
%sn,s2);
voidscat(charstr1,charstr2)inti=0,k=0;
while(str1i!
=0)i+;
while(str2k!
=0)str1i=str2k;
i+;
k+;
str1i=0;
scat函数还可简化为:
voidscat(charstr1,charstr2)inti=0,k=0;
while(str1i)i+;
while(str1i+=str2k+);
【例7.13】编程序,实现字符串连接。
2005年3月,28,以二维数组为例。
二维数组名作实参时,对应的形参也应该定义为一个二维数组形式。
对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明。
【例7.14】编程序,将矩阵转置。
设转置前为a矩阵,转置后为b矩阵,如下所示:
思路:
将a00b00,a01b10,a02b20,a10b01,aijbji,。
7.3.3多维数组作函数参数,2005年3月,29,voidturn();
main()inta34=1,2,3,4,5,6,7,8,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 教程 课件