c语言函数练习题_第1页
c语言函数练习题_第2页
c语言函数练习题_第3页
c语言函数练习题_第4页
c语言函数练习题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

函数练习题一、选择题〔一题2分,共40分〕.在c语言中以下不正确的说法是〔〕A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致.以下程序有语法性错误,有关错误原因的正确说法是〔intmain〔〕{intG=5,k;voidprt_char〔〕;k=prt_char〔G〕;……}A.语句voidprt_char〔〕;有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线.以下正确的说法是〔〕A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套.假设已定义的函数有返回值,那么以下关于该函数调用的表达中错误的选项是〔〕A〕函数调用可以作为独立的语句存在B〕函数调用可以作为一个函数的实参C〕函数调用可以出现在表达式中D〕函数调用可以作为一个函数的形参.以下所列的各函数首部中,正确的选项是〔〕voidplay〔var:Integer,varb:Integer〕voidplay〔inta,b〕voidplay〔inta,intb〕Subplay〔aasinteger,basinteger〕.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是〔〕A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定.有以下程序

8.9.10.11.void8.9.10.11.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\n",x,y,z);return0;}输出结果是()A、30,20,10C、456,567,678下述函数定义形式正确的选项是(Aintf(intx;inty)Cintf(intx,inty)关于函数参数,说法正确的选项是(B、10,20,30D、678,567,456I0intf(intx,y)intf(x,y:int)A、D、实参与其对应的形参各自占用独立的内存单元实参与其对应的形参共同占用一个内存单元只有当实参和形参同名时才占用同一个内存单元形参是虚拟的,不占用内存单元一个函数的返回值由〔A、return语句中的表达式C、系统默认的类型以下正确的函数形式是〔〕确定.B、调用函数的类型D、被调用函数的类型A、doublefun(intx,inty){z=x+y;returnz;}Bfun(intx,y){intz;returnz;}Cfun(x,y){intx,y;doublez;z=x+y;returnz;}Ddoublefun(intx,inty){doublez;z=x+y;returnz;}.以下函数中,能够从键盘上获得一个字符数据的函数是().Aputs()Bputchar()Cgetchar()Dgets().以下程序的输出结果是().fun(inta,intb,intc){c=a+b;}intmain(){intc;fun(2,3,c);printf("%d\n",c);return0;}A、2B、3C、5D、无定值.分析以下程序的运行结果().func(inta,intb){inttemp=a;a=b;b=temp;}intmain(){intx,y;x=10;y=20;func(x,y);printf("%d,%d\n〞,x,y);return0;}A、10,20B、10,10C、20,10D、20,20.现有如下程序#include"stdio.h"intfun(intx){printf("x=%d\n",++x);}intmain(){fun(12+5);return0;}那么程序的输出结果是A、x=12B、x=13C、x=17D、x=18.以下函数fff(floatx){printf("%d\n",x*x);}的类型是()A、与参数X的类型相同B、void类型C、int类型D、无法确定.以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,那么该变量A.只在该复合语句中有效B.在该函数中有效C.在本程序范围内均有效D.为非法变量.以下不正确的说法为()A.在不同函数中可以使用相同名字的变量B.形式参数是局部变量C.在函数内定义的变量只在函数范围内有效D.在函数内的复合语句中定义的变量在本函数范围内有效.有以下程序voidf(intv,intw){intt;t=v;v=w;w=t;}

main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);,x,y,z);}printf("%d,x,y,z);}执行后输山结果是A、1,2,3B、3,1,2C、1,3,2D、2,3,1.以下正确的函数形式是()A.A.doublefun(intx,inty)C.fun(x,y)B.fun(intx,y)D.doublefun(intx,inty);二、判断题(一题1分,共12分).()return语句作为函数的出口,在一个函数体内只能有一个..()在C程序中,函数不能嵌套定义,但可以嵌套调用..()C语言的源程序中必须包含库函数..()在C程序中,函数调用不能出现在表达式语句中..()在C函数中,形参可以是变量、常量或表达式..()在C语言中,一个函数一般由两个局部组成,它们是函数首部和函数体.()假设定义的函数没有参数,那么函数名后的圆括号可以省略..()函数的函数体可以是空语句..()函数的实参和形参可以是相同的名字..()C语言中函数返回值的类型由return语句中的表达式的类型决定..()C语言程序中的main()函数必须放在程序的开始局部..()函数调用中,形参与实参的类型和个数必须保持一致.三、分析程序写结果(每题2分,共14分)1、以下程式序的运行结果是main(){inti=2,x=5,j=7;fun(j,6);printf("i=%d;j=%d;x=%d\n",i,j,x);}fun(inti,intj){intx=7;printf("i=%d;j=%d;x=%d\n〞,i,j,x);}2、以下程序的运行结果是main(){increment();increment();increment();}increment(){intx=0;x+=1;printf("%d〞,x);}3、以下程序的运行结果是main(){inta=1,b=2,c;c=max(a,b);printf("maxis%d\n〞,c);}max(intx,inty){intz;z=(x>y)?x:y;return(z);}4、假设输入一个整数10,以下程序运行结果是main(){inta,e[10],c,i=0;printf(“输入一个整数:\n);scanf("%d",&a);while(a!=0){c=sub(a);a=a/2;e[I]=c;i++;}for(;i>0;i--)printf("%d〞,e[i-1]);}sub(inta){intc;c=a%2;returnc;}5、以下程序的运行结果是main(){intx=2,y=3,z=0;printf("(1)x=%dy=%dz=%d\n,x,y,z);add(x,y,z);printf("(3)x=%dy=%dz=%d\n,x,y,z);}add(intx,inty,intz){z=x+y;x=x*x;y=y*y;printf("(2)x=%dy=%dz=%d\n,x,y,z);}6、以下程序的运行结果是intx;main(){x=5;cude();printf("%d\n,x);}cude(){x=x*x*x;}7、函数fun的功能是计算xndoublefun(doublex,intn){inti;doubley=1;for(i=1;i<=n;i++)y=y*x;returny;}主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3.实现这一计算的函数调用语句为四、程序填空(一空2分,共34分)1.以下程序的功能是计算函数F(x,y,z)=(x+z)/(y-z)+(y+2Xz)/(x-2Xz)的值,请将程序补充完整.()#include<stdio.h>floatf(floatx,floaty){floatvalue;value=[1];returnvalue;}main(){floatx,y,z,sum;scanf("%f%f%f",&x,&y,&z);sum=f(x+z,y-z)+f([2]);printf("sum=%f\n",sum);}2.以下程序是将输入的一个整数反序打印出来,例如输入1234,那么输出4321,输入-1234,那么输出-4321.请将程序补充完整.()voidprintopp(longintn){if(n==0)return;if(【11){printf("-");n=-n;}while(n){printf("%ld",n%10);【2】;}}main(){longintn;scanf("%ld",&n);printopp(n);printf("\n");}3.下面的程序用递归定义的方法实现求菲波拉契数列1、1、2、3、5、8、13、21…第7项的值fib(7),菲波拉契数列第1项和第2项的值都是1.请将程序补充完整.#include<stdio.h>longfib(【1】){switch(g){case0:return0;return1;}return([2]);}main(){longk;k=fib(7);printf("k=%d\n",k);}4.下面是一个计算1至m的阶乘并依次输出的程序.程序中应填入的正确选项是【10#include<stdio.h>doubleresult=1;factorial(intj){result=result*j;returnresult;}main(){intm,i=0;doublex;printf("Pleaseenteraninteger:");scanf("%d",&m);for(;i++<m;){x=factorial(i);printf("%d!=%.0f\n",[1]);}}.以下程序的功能是求任意两个整数a和b的最大公约数,并予以显示.请将程序补充完整.()#include<stdio.h>#include<stdlib.h>longcodivisor(longn1,longn2){longt;while(n2!=0){【1];n1=n2;n2=t;}return([2]);}main(){longa,b,x;printf("pleaseinputtwonumbers:");scanf("%ld%ld",&a,&b);x=codivisor(a,b);printf("maximumcommondivisorof%ldand%ldis:%ld\n",a,b,x);}.以下程序是选出能被3整除且至少有一位是5的所有三位正整数k(个位为a0,十位为a1,百位为a2),打印出所有这样的数及其个数.请将程序补充完整.()#include<stdio.h>sub(intm,intn){inta0,a1,a2;a2=【1】;a1=[2];a0=m%10;if(m%3==0&&(a2==5||a

温馨提示

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

评论

0/150

提交评论