第6章+函数.docx
- 文档编号:11488130
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:14
- 大小:19.46KB
第6章+函数.docx
《第6章+函数.docx》由会员分享,可在线阅读,更多相关《第6章+函数.docx(14页珍藏版)》请在冰点文库上搜索。
第6章+函数
第6章函数
通过本章实验作业应达目标
1.掌握定义和调用函数的方法
2.掌握函数嵌套调用的方法
3.掌握通过“值传递”调用函数的方法
4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法
5.掌握宏定义的方法
6.掌握文件包含的处理方法
本章上交作业
程序6_1.c、6_2.c、6_3.c、6_4.c、6_5.c、6_9.c
上传至。
实验一判断素数的函数
【实验目的】
掌握用函数实现判断素数的方法。
【实验内容】
编写一个函数intprime(inta),判断参数是否为素数。
函数有一个形参a,当a为素数时,返回1,反之,返回0。
以6_1.c命名本程序并上交。
函数声明如下:
intprime(inta);
主函数如下:
#include
#include
voidmain()
{
inta,b;
printf("pleaseinputanumber:
\n");
scanf("%d",&a);
b=prime(a);
if(b==1)
printf("thenumberisaprimenumber.");
else
printf("thenumberisnotaprimenumber.");
}
intprime(inta){……}
实验二求最大公约数与最小公倍数
【实验目的】
熟练函数的嵌套调用。
【实验内容】
编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回。
在main函数中实现输入与输出。
以6_2.c命名本程序并上交。
主函数如下:
#include
voidmain()
{
intgongyueshu(inta,intb);
intgongbeishu(inta,intb);
inta,b,c,d;
printf("pleaseinputtwointegernumbers:
");
scanf("%d%d",&a,&b);
c=gongyueshu(a,b);
d=gongbeishu(a.b);
printf("gongyueshuis%d\ngongbeishuis%d",c,d);
}
intgongyueshu(inta,intb)
{……}
intgongbeishu(inta,intb)
{……}
【实验提示】
可以在最小公倍数中嵌套调用最大公约数函数。
实验三报数问题
【实验目的】
掌握数组和函数的应用。
【实验内容】
m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次存到数组p中,包括最后一个人的序号。
到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)。
若m=6,则输出n=1
函数intfun(intn,intp[])实现上述功能,返回n个人中最后余的1人的起始序号,并将退出的序号顺序写入p指向的数组中。
以6_3.c命名本程序并上交。
#include
intbaoshu(intn,intp[])
{……}
voidmain()
{intm,a[10000],i,num;
scanf("%d",&m);
num=fun(m,a);
printf("n=%d\n",num);
for(i=0;i printf("%8d",a[i]); printf("\n"); } 实验四数组中插入元素的函数 【实验目的】 学习在一维数组中插入元素的方法。 【实验内容】 参照给定的主函数,编写一个函数voidinsert(inta[],intn,inty),它的功能是: 把y值插入到有n个数的有序的a数组中,y的值从键盘读入。 插入后,数组中的数仍然有序。 以6_4.c命名本程序并上交。 对照下面三种情况运行程序: 1)插在最前2)插在最后3)插在中间。 inta[11]={2,4,6,8,10,12,14,16,18,20}; voidinsert(inta[],intn,intnumber); voidmain() { inti,x; printf("originalarrayis: \n"); for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); printf("insertanewnumber: "); scanf("%d",&x); insert(a,10,x); for(i=0;i<11;i++) printf("%d",a[i]); } voidinsert(inta[],intn,intnumber) {……} 若输入数11,输出246810111214161820 输入数1,输出12468101214161820 输入数33,输出246810121416182033 【实验提示】 1.若x插入数组的中间,插入后此元素之后的数,依次后移一个位置。 例如查找到11应该放置在a[5]的位置上,原来a[5]的数据12以及其后的所有元素后移一位。 2.后移元素的过程,应该注意从数组的末尾开始依次a[n]=a[n-1],a[n-1]=a[n-2]…… 实验五从数组中删除数据 【实验目的】 深入理解数组做函数参数。 【实验内容】 编写函数intdelnum(inta[],intnum,intn),用于在长度是n的数组a中,删除一个值为num的元素。 删除后数组的长度作为函数的返回值返回。 注意,num在数组中可能不只一个。 请以6_5.c命名本程序并上交。 主函数如下: #defineN10 voidmain() {inta[N],num; scanf(“%d”,&num); 输入N个数到数组a中; 调用delnum函数在数组a中删除指定的数num; 输出删除了num后的数组a; } 定义并编写delnum函数 实验六求数组逆序的函数 【实验目的】 熟练掌握操作数组的方法及数组名作函数参数的使用方法。 【实验内容】 从键盘输入int型数组a[20]的20个元素值,编写一个函数实现对数组元素数据的逆序放置。 即第1个元素与第20个元素互换,第2个元素与第19个元素互换,……,第10个元素与第11个元素互换。 请完善下述程序并以6_6.c命名本程序。 #include voidmain() { voidnixu(inta[],intn);/*逆序函数声明*/ inta[20],x; for(x=0;x<20;x++) scanf("%d",&a[x]); printf("Beforeinvert,thearrayis: \n"); for(x=0;x<20;x++) printf("%d",a[x]); printf(“\n”); nixu(a,20);/*调用逆序函数,注意实参是什么*/ printf("\nAfterinvert,thearrayis: \n"); for(x=0;x<20;x++) printf("%d",a[x]); printf(“\n”); } voidnixu(inta[],intn) { inti,t; for(i=0;i<________;i++) {t=a[i];________;a[n-1-i]=t;} } 实验七全局变量与局部变量 【实验目的】 掌握全局变量和局部变量在程序中的关系。 【实验内容】 下面的程序运行后的结果是_____________。 intx=3,y=5; intmax(intx,inty) { intz; z=x>y? x: y; return(z); } voidmain() { intx=8; printf("max=%d\n",max(x,y)); } 实验八变量的静态存储方式 【实验目的】 熟悉static定义静态变量的用法。 【实验内容】 下面程序运行后的输出结果是_____________。 #include varfunc() {intvar=0; staticintstatic_var=0; printf("\40: varequal%d\n",var); printf("\40: staticvarequal%d\n",static_var); printf("\n"); var++; static_var++; } voidmain() {inti; for(i=0;i<3;i++) varfunc(); } 实验九宏的使用 【实验目的】 掌握宏的定义和使用。 【实验内容】 作业1.#define命令练习,写出运行结果。 #include"stdio.h" #defineTRUE1 #defineFALSE0 #defineSQ(x)((x)*(x)) voidmain() { intnum; intagain=1; printf("\40: Programwillstopifinputvaluelessthan50.\n"); while(again) { printf("\40: Pleaseinputnumber==>"); scanf("%d",&num); printf("\40: Thesquareforthisnumberis%d\n",SQ(num)); if(num>=50) again=TRUE; else again=FALSE; } } 作业2.编写宏,求两个数的最大值。 请以6_9.c命名本程序并上交。 习题 1.有如下程序 #include longfib(intn) {if(n>2) return(fib(n-1)+fib(n-2)); else return (2); } voidmain() {printf("%d\n",fib(3));} 该程序的输出结果是( ) A、2B、4C、6D、8 2.在C语言中,函数的隐含存储类别是() A、autoB、staticC、externD、无存储类别 3.以下所列的各函数首部中,正确的是() A、voidplay(var: Integer,varb: Integer) B、voidplay(inta,b) C、voidplay(inta,intb) D、Subplay(aasinteger,basinteger) 4.以下程序的输出结果是() A、0B、29C、31D、无定值 fun(intx,inty,intz) {z=x*x+y*y;} main() {inta=31; fun(5,2,a); printf("%d",a); } 5.以下程序的输出结果是() f(intb[],intm,intn) {intI,s=0; for(i=m;i returns; } main() {intx,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf("%d\n",x); } A、10B、18C、8D、15 6.以下程序的输出结果是() A、1B、2C、3D、4 longfun(intn) {longs; if(n==1||n==2) s=2; elses=n-fun(n-1); returns;} main() {printf("%ld\n",fun(3));} 7.以下程序的输出结果是() intf() {staticinti=0; ints=1; s+=i;i++; returns; } main() {inti,a=0; for(i=0;i<5;i++) a+=f(); printf("%d\n",a); } A、20B、24C、25D、15 8.以下程序的功能是调用函数fun计算: m=1-2+3-4+…+9-10,并输出结果。 请填空。 int fun( int n) { int m=0,f=1,i; for(i=1; i<=n; i++) { m+=i*f; f= _____________ ; } return m; } main() { printf("m=%d\n", _________ ); } 9.以下程序输出的最后一个值是_____________ intff(intn) {staticintf=l; f=f*n; returnf; } main() {inti; for(i=1;i<=5;i++)printf("%d\n",ff(i)); } 10.以下函数的功能是: 求x的y次方,请填空。 doublefun(doublex,inty) {inti; doublez; for(i=1,z=x;i returnz; } 11.以下正确的说法是() A、用户若需要调用标准库函数,调用前必须重新定义 B、用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C、系统不允许用户重新定义标准库函数 D、用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。 12.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是() A、地址传递 B、值传递 C、有实参传给形参,再由形参传给实参 D、由用户指定传递方式 13.下面程序的输出是() inti=2; printf(“%d%d%d”,i*=2,++i,i++); A、8,4,2B、8,4,3 C、4,4,5D、4,5,6 14.以下不正确的说法是() A、register变量可以提高变量使用的执行效率 B、register变量由于使用的是CPU的寄存器,其数目是有限制的 C、extern变量定义的存储空间按变量类型分配 D、全局变量使得函数之间的“耦合性”更加紧密,不利于模块化的要求 15.C语言函数返回类型的默认定义类型是____________ 16.函数的实参传递到形参有两种方式: ____________和____________。 17.C语言变量按其作用域分为____________和____________。 按其生存期分为____________和____________。 18.已知函数定义: voiddothat(intn,doublex){……},其函数声明的两种写法为____________,____________。 19.C语言变量的存储类别有____________,____________,____________和____________。 20.在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为____________。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数