模块化程序设计练习题及答案_第1页
模块化程序设计练习题及答案_第2页
模块化程序设计练习题及答案_第3页
模块化程序设计练习题及答案_第4页
模块化程序设计练习题及答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

模块化程序设计练习题及答案模块化程序设计练习题及答案模块化程序设计练习题及答案xxx公司模块化程序设计练习题及答案文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度第四章模块化程序设计练习题及参考答案一、填空题1、以下程序的运行结果是(111),把x定义为静态变量运行结果是(123)。voidincrement(void){intx=0;x+=1;printf("%d",x);}main(){increment();increment();increment();}2、若输入的值是-125,以下程序的运行结果是(-125=-5*5*5)#include""main(){intn;voidf(intn);scanf("%d",&n);printf("%d=",n);if(n<0)printf("-");n=fabs(n);fun(n);}voidfun(intn){intk,r;for(k=2;k<=sqrt(n);k++){r=n%k;while(r==0){printf("%d",k);n=n/k;if(n>1)printf("*");r=n%k;}}if(n!=1)printf("%d\n",n);}3、设有以下宏定义:#defineWIDTH80#defineLENGTHWIDTH+40则执行赋值语句:v=LENGTH*20;(v为int型)后,v的值是(880)4、设有以下宏定义:#defineWIDTH80#defineLENGTH(WIDTH+40)则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是(2400)5、下面程序的运行结果是(5)#defineDOUBLE(r)r*rmain(){intx=1,y=2,t;t=DOUBLE(x+y);printf("%d\n",t);}6、下面程序的运行结果是(36)#defineMUL(z)(z)*(z)main(){printf("%d\n",MUL(1+2)+3);}7、下面程序的运行结果是(212)#definePOWER(x)((x)*(x))main(){inti=1;while(i<=4)printf("%d,",POWER(i++));}8、下面程序的运行结果是(9)#defineMAX(a,b)(a>ba:b)+1main(){inti=6,j=8,k;printf("%d\n",MAX(i,j));}二、选择题1、以下正确的说法是(D)建立自定义函数的目的之一是:A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存2、以下正确的说法是(B)A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失原有含义。C)系统根本不允许用户重新定义标准库函数。D)用户若需调用标准函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用。3、以下正确的函数定义形式是(C)A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y)4、以下正确的说法是(D)。在C语言中:A)实参与其对应的形参各占用独立的存储单元。B)实参和与其对应的形参共占用一个存储单元。C)只用当实参和与其对应的形参同名时才共占用存储单元。D)形参是虚拟的,不占用存储单元。5、若调用一个函数,且此函数中没有return语句,则正确的说法是(D)该函数:A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值6、以下不正确的说法是(B)。C语言规定:A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与对应的实参类型一致7、以下正确的说法是()A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准。D)如果形参与实参的类型不一致,以实参类型为准。8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是()A)地址传递B)单向值传递C)由实参传给形参,再由形参传回实参D)由用户指定传递方式9、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()A)float型B)int型C)long型D)double型10、C语言规定,函数返回值的类型是由()A)return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定11、以下正确的描述是()在C语言程序中A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套12、以下正确的函数形式是()A)voidfun(intx,inty){z=x+y;return(z);}B)fun(intx,y){intz;return(z);}C)fun(x,y){intx,y;doublez;z=x+y;return(z);}D)doublefun(intx,inty){doublez;z=x+y;return(z);}13、以下程序有语法性错误,有关错误原因的正确说法是()main(){intG=5,k;voidprt_char();.........k=prt_char(G);.........}A)语句voidprt-char();有错,它是函数调用语句,不能用void说明。B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾。D)函数名不能使用下划线。14、下面函数调用语句含有实参的个数为()func((exp1,exp2),(exp3,exp4,exp5));A)1B)2C)3D)415、以下错误的描述是()函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为函数的实参D)做为一个函数的形参16、以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是()voidmove(chargetone,charputone){printf("%c-->%c\n",getone,putone);}voidhanoi(intn,charone,chartwo,charthree){if(n==1)move(one,three);else{hanoi(n-1,one,three,two);move(one,three)hanoi(n-1,two,one,three);}}A)A-->CB)A-->CA-->BA-->BC-->BC-->AB-->AA-->BC-->BB-->CA-->CA-->CA-->BA-->BC)A-->CD)A-->CA-->BA-->BC-->BC-->BA-->CA-->CB-->AA-->BB-->CB-->CA-->CA-->C17、以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,则该变量A)只在该复合词句中有效B)在该函数中有效C)在本程序范围内均有效D)为非法变量18、以下不正确的说法为()A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合词句中定义的变量在本函数范围内有效19、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)20、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()A)externB)registerC)autoD)static21、以下程序的正确运行结果是()voidnum(void){externintx,y;inta=15,b=10;x=a-b;y=a+b;}intx,y;main(){inta=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}A)12,2B)不确定C)5,25D)1,1222、以下程序的正确运行结果是()main(){voidf(inta);inta=2,i;for(i=0;i<3;i++)printf("%d",f(a));}voidf(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}A)777B)71013C)7911D)78923、以下程序的正确运行结果是(Dmain(){func(inta,intb);intk=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}func(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}A)8,17B)8,16C)8,20D)8,824、以下叙述正确的是(A)A)在程序的一行上可以出现多个有效的预处理命令行B)使用带参的宏时,参数的类型应与宏定义时参数一致C)宏替换不占用运行时间,只占编译时间D)在以下定义中CR是称为“宏名”的标识符#defineCR04525、在宏定义#definePI中,用宏名PI代替一个(A)A)常量B)单精度数C)双精度数D)字符串26、以下有关宏替换的叙述不正确的是(D)A)宏替换不占用运行时间B)宏名无类型C)宏替换只是字符替换D)宏名必须用大写字母表示27、若有宏定义如下:#defineX5#defineYX+1#defineZY*X/2则执行以下printf语句后,输出结果是()inta;a=Y;printf("%d,",Z);printf("%d\n",--a);A)7,6B)12,6C)12,5D)7,528、#define能作简单的替代,用宏替代计算多项式3*x+2之值的函数f,正确的宏定义是(C)A)#definef(x)(3*x+2)B)#definef3*x+2C)#definef(a)(3*(a)+2)D)#define(3*(a)+2)f(x)29、若有以下宏定义:#defineN2#defintY(n)((N+1)*n)则执行语句z=2*(N+Y(5));后的结果是()A)语句有错误B)z=34C)z=70D)z无定值三、判断对错1、C语言规定,可执行程序的开始执行点是程序的开头。对2、在C语言中,一个函数一般由两个部分组成,它们是变量定义和语句执行。对3、下面add函数的功能是求两个参数的和,并将和值返回调用函数。下面的函数是正确的。错voidadd(floata,floatb){floatc;c=a+b;return(c);}4、简单变量作实参时,与其对应的形参各占有独立的存储单元。错5、C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是由实参传给形参,再由形参传给实参。错6、C语言不允许函数值类型缺省定义,如缺省定义,则函数值返回为空。错7、函数调用可以出现在一个表达式中。对8、预处理命令行都必须以#开始对9、在程序中凡是以#号开始的语句行都是预处理命令

温馨提示

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

评论

0/150

提交评论