您好,欢迎访问三七文档
C语言习题(7)第7章函数一.填空题1.C语言中从函数的形式分可分为无参函数和。2.在C语言中,一个自定义函数一般由两部分组成,它们是函数首部和。3.从用户使用角度看,函数有两种:标准函数和。4.若一个函数不需要形参,则在定义该函数时应使形参表为空或者放置一个标识符。5.有函数调用fun1(x+y,(y,z),10,fun((x,y-1)));函数fun1有个参数。6.已知函数定义:voiddothat(intn,doublex){……},其函数声明的两种写法为_________________________,_________________________。7.C语言变量按其作用域分为和;按其生存期分为___________和。8.C语言变量的存储类别有,,和。9.凡在函数中未指定存储类别的局部变量,其默认的存储类别为。10.在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为。11.C语言中,形式参数的缺省存储类型是。12.C语言中,若为指定函数是内部函数或外部函数,则默认该函数是。二.选择题1.以下正确的说法是___________。A)用户若需要调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,如若此,该函数将失去原有定义C)系统不允许用户重新定义标准库函数D)用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。2.以下正确的函数定义是___________。A)doublefun(intx,inty);B)intfun(intx,y){z=x+y;returnz;}{intz;return3;}C)doublefun(x,y)D)doublefun(intx,inty){intx,y;doublez;{doublez;z=x+y;z=x+y;returnz;}returnz;}3.C语言中,简单变量做实参和形参时,以下正确的说法是___________。A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用相同的存储单元D)形参时虚拟的,不占用存储单元4.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是___________。A)地址传递B)单向值传递C)有实参传给形参,再由形参传给实参D)由用户指定传递方式5.C语言规定,函数返回值的类型是由___________决定的。A)return语句中的表达式类型B)调用该函数时的主调函数类型C)调用该函数时由系统临时D)在定义函数时所指定的函数类型6.以下正确的描述是___________。A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套7.若用数组名作为函数调用的实参,传递给形参的是___________。A)数组的首地址B)数组中第一个元素的值C)数组中的全部元素的值D)数组元素的个数8.如果在一个函数中的复合语句中定义了一个变量,则该变量___________。A)只在该复合语句中有定义B)在该函数中有定义C)在本程序范围内有定义D)为非法变量9.以下不正确的说法是___________。A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有定义D)在函数内的复合语句中定义的变量在本函数范围内有定义10.关于函数声明,以下不正确的说法是___________。A)如果函数定义出现在函数调用之前,可以不必加函数原型声明B)如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明C)函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查D)标准库不需要函数原型声明11.以下func()函数的调用中实参的个数是___________。func((exp1,exp2),(exp3,exp4,exp5));A)1B)2C)3D)512.有如下程序,该程序的输出结果是___________。intfunc(inta,intb){return(a+b);}intmain(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%d\n”,r);return0;}A)12B)13C)14D)1513.以下程序运行的结果是___________。voidfun(inta,intb,intc){a=456;b=567;c=678;}intmain(){intx=10,y=20,z=30;fun(x,y,z);printf(“%d,%d,%d”,x,y,z);return0;}A)30,20,10B)10,20,30C)456,567,678D)678,567,45614.以下程序运行的结果是___________。voidfun(intb){if(b0)fun(b-1);printf(“%d”,b);}intmain(){inta=5;fun(a);return0;}A)54321B)012345C)12345D)54321015.函数f定义如下,执行语句sum=f(5)+f(3);后,sum的值应为___________。intf(intm){staticinti=0;ints=0;for(;i=m;i++)s+=i;returns;}A)21B)16C)15D)816.以下程序运行的结果是___________。voidreverse(inta[],intn){inti,t;for(i=0;in/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}intmain(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i10;i++)s+=b[i];printf(“%d\n”,s);return0;}A)22B)10C)34D)30三.程序阅读题1.写出下面程序的运行结果___________。#includestdio.hinta,b;voidfun(){a=100;b=200;}intmain(){inta=5,b=7;fun();printf(“a=%d,b=%d\n”,a,b);return0;}2.以下程序的第一行的输出结果是是___________,第二行的输出结果是___________,第三行的输出结果是___________,第四行的输出结果是___________。#includestdio.hintmain(){inta=5,b=-3,c=-7;printf(”%d,%d,%d\n”,a,b,c);{intb=8;floatc=9.9;printf(“%d,%d,%.1f\n”,a,b,c);a=b;{intc=b;printf(”%d,%d,%d\n”,a,b,c);}}printf(”%d,%d,%d\n”,a,b,c);return0;}3.写出下面程序的运行结果___________。#includestdio.hvoidswap1(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}intmain(){inta[2]={3,5},b[2]={3,5};swap1(a);swap2(b[0],b[1]);printf(%d,%d,%d,%d\n,a[0],a[1],b[0],b[1]);return0;}4.以下程序的输出结果第一行是___________,第二行是___________,第三行是___________。#includestdio.hintn=1;voidfunc(){staticintx=4;inty=10;x=x+2;n=n+10;y=y+n;printf(FUNC:x=%dy=%dn=%d\n,x,y,n);}voidmain(){intx=5,y;y=n;printf(MAIN:x=%dy=%dn=%d\n,x,y,n);func();printf(MAIN:n=%d\n,n);}5.写出下面程序的运行结果___________。#includestdio.hintmax_value(intarray[][4],inti){intj,max;max=array[i][0];for(j=0;j4;j++)if(maxarray[i][j])max=array[i][j];return(max);}intmain(){inta[3][4]={{1,3,5,7},{2,4,6,8},{12,15,56,32}},i;for(i=0;i3;i++)printf(“%d\n”,max_value(a,i));return0;}6.写出下面程序的运行结果___________。#includestdio.hintfunc(intarray[][4],intm){inti,j,k=0;for(i=0;i3;i++)for(j=0;j4;j++)if(array[i][j]m)k=k+array[i][j];return(k);}intmain(){inta[3][4]={1,13,5,7,2,4,26,8,10,1,3,12};intm;m=10;printf(“%d\n”,func(a,m));return0;}7.写出下面程序的运行结果___________。#includestdio.hvoidmain(){intadd(intx,inty);inta=1,b=2,x1,x2,x3;x1=add(a,b);x2=add(a,b);x3=add(a,b);printf(%d,%d,%d\n,x1,x2,x3);}intadd(intx,inty){staticintz=1;z=x+y+z;return(z);}8.以下程序运行时第一行、第二行、最后一行分别输出为___________、___________、___________。#includestdio.hintsub(intn){inta;if(n==1)a=1;elsea=n+sub(n-1);printf(%d\n,a);return(a);}intmain(){inti=5;printf(%d\n,sub(i));return0;}四.程序填空题1.以下程序的功能是:用average函数计算平均成绩。#includestdio.hfloataverage(floatarray[],intn){floatsum=0,ave;inti;for(i=0;in;i++)sum+=array[i];ave=(【1】);【2】;}intmain(){floatscore[10],aver;inti;for(i=0;i10;i++)scanf(“%f”,&score[i]);aver=average【3】;printf(“aver=%f\n”,aver);return0;}2.函数voidfun(chars[],charc)的功能是从字符串s中删除字符c,在主函数中输入要删除的字符,并将删除后的字符输出。#includestdio.hvoidfun(chars[],charc){inti,j;for(i=0,j=0;s[i]!=’\0’;i++)if(【1】)s[j++]=s[i];s[j]=’\0’;}intmain(){charstr[80]=”adadfeeafard”,ch;scanf(“%c”,&ch);fun(【2】,ch);【3】;return0;}3.下面程序用“折半查找法”从有10个数的a数组中对关键字m查找,若找到,返回其下标值,否则返回-1,
本文标题:C语言习题(7)
链接地址:https://www.777doc.com/doc-7028766 .html