




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 模块化程序设计练习题及参考答案一、填空题1、以下程序的运行结果是(111),把x定义为静态变量运行结果是(123)。void increment(void) int x=0; x+=1; printf("%d",x);main() increment(); increment(); increment(); 2、若输入的值是-125,以下程序的运行结果是(-125=-5*5*5 )#include ""main() int n; void f(int n); scanf("%d",&n); printf("%
2、d=",n);if(n<0) printf("-"); n=fabs(n); fun(n);void fun(int n) int k,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、设有以下宏定义:#define WIDTH 80#define LENGTH WIDTH+40则执行赋值语句:v=L
3、ENGTH*20;(v为int型)后,v的值是(880)4、设有以下宏定义:#define WIDTH 80#define LENGTH (WIDTH+40)则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是(2400)5、下面程序的运行结果是(5)#define DOUBLE(r) r*rmain() int x=1,y=2,t; t=DOUBLE(x+y); printf("%dn",t);6、下面程序的运行结果是(36)#define MUL(z) (z)*(z)main() printf("%dn",MUL(1+2)+3);
4、 7、下面程序的运行结果是(212)#define POWER(x) (x)*(x)main() int i=1; while(i<=4) printf("%d,",POWER(i+); 8、下面程序的运行结果是(9)#define MAX(a,b) (a>ba:b)+1main() int i=6,j=8,k; printf("%dn",MAX(i,j); 、选择题1、以下正确的说法是(D)建立自定义函数的目的之一是)提高程序的可读性)减少程序文件所占内存A)提高程序的执行效率BC)减少程序的篇幅D2、以下正确的说法是(B)A)用户若需调用
5、标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失原有含义。C)系统根本不允许用户重新定义标准库函数。D)用户若需调用标准函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用。3、以下正确的函数定义形式是(C)A) double fun(int x,int y) B) double fun(int x;int y)C) double fun(int x,int y); D) double fun(int x,y)4、以下正确的说法是(D)。在C语言中:A)实参与其对应的形参各占用独立的存储单元。B)实参和与其对应的形参共占用一个存储单元
6、。C)只用当实参和与其对应的形参同名时才共占用存储单元。D)形参是虚拟的,不占用存储单元。5、若调用一个函数,且此函数中没有return语句,则正确的说法是(D)该函数:A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D )返回一个不确定的值6、以下不正确的说法是(B)。C语言规定:A)实参可以是常量、变量或表达式B )形参可以是常量、变量或表达式C)实参可以为任意类型D )形参应与对应的实参类型一致7、以下正确的说法是()A)定义函数时,形参的类型说明可以放在函数体内B) return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准。D)如果
7、形参与实参的类型不一致,以实参类型为准。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)函数的定义可以嵌套,但
8、函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套12、以下正确的函数形式是()A) void fun(int x,int y) z=x+y; return (z);B) fun(int x,y) int z; return 亿)C fun(x,y)int x,y;double z; z=x+y; return (z); D) double fun(int x,int y) double z; z=x+y; return (z); 13、以下程序有语法性错误,有关错误原因的正确说法是()main()int
9、 G=5,k;void prt_char();k=prt_char(G);)A)语句void prt-char(); 有错,它是函数调用语句,不能用 void说明。B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾。D)函数名不能使用下划线。14、下面函数调用语句含有实参的个数为()func(exp1,exp2),(exp3,exp4,exp5);A) 1 B ) 2 C )3 D ) 415、以下错误的描述是()函数调用可以A)出现在执行语句中B )出现在一个表达式中C)做为函数的实参D )做为一个函数的形参16、以下是有关汉诺塔问题的程序段,若在 main函数中有调用语句han
10、oi(3,'A','B','C');则符合程序段运行结果的选项是()void move(char getone,char putone)printf("%c->%cn",getone,putone);)void hanoi(int n,char one,char two,char three)if(n=1) move(one,three);elsehanoi(n-1,one,three,two);move(one,three)hanoi(n-1,two,one,three);)A)A->CB)A->CA-&g
11、t;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->C 17、以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,则该变量A)只在该复合词句中有效B)在该函数中有效C)在本程序范围内均有效D)为非法变量18、以下不正确的说法为()A)在不同函数中可以使用相同名字的变量B )形式
12、参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合词句中定义的变量在本函数范围内有效19、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()A)自动(auto) B )静态(static) C )外部(extern) D )寄存器(register)20、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则AKXtHI)register C ) auto D ) static21、以下程序的正确运行结果是()void num(void) extern int x,y; int a=15,b=10; x=a-b; y=a+b; int x,
13、y;main() int a=7,b=5; x=a+b; y=a-b; num(); printf("%d,%dn",x,y); A) 12, 2 B )不确定 C ) 5, 25 D ) 1, 1222、以下程序的正确运行结果是() main() void f(int a); int a=2,i; for(i=0;i<3;i+) printf("%d",f(a); void f(int a) int b=0; static int c=3; b+;c+; return(a+b+c); A) 777 B ) 71013 C ) 7911 D ) 7
14、8923、以下程序的正确运行结果是(Dmain() func(int a,int b); int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%dn",p);func(int a,int b) static int m=0,i=2; i+=m+1; m=i+a+b; return(m); A) 8, 17 B ) 8, 16 C ) 8, 20 D ) 8, 824、以下叙述正确的是(AA)在程序的一行上可以出现多个有效的预处理命令行B)使用带参的宏时,参数的类型应与宏定义时参数一致
15、C)宏替换不占用运行时间,只占编译时间D)在以下定义中C R是称为“宏名”的标识符#define C R 04525、在宏定义#define PI 中,用宏名PI代替一个(A)A)常量 B )单精度数 C )双精度数D )字符串26、以下有关宏替换的叙述不正确的是(D)A)宏替换不占用运行时间B )宏名无类型C)宏替换只是字符替换D)宏名必须用大写字母表示27、若有宏定义如下:#define X 5#define Y X+1#define Z Y*X/2则执行以下printf语句后,输出结果是()int a;a=Y;printf("%d,",Z);printf("
16、%dn",-a);A) 7, 6 B ) 12, 6C) 12, 5 D ) 7, 528、#define 能作简单的替代,用宏替代计算多项式3*x+2之值的函数f,正确的宏定义是(C)A) #define f(x) (3*x+2) B ) #define f 3*x+2C) #define f(a) (3*(a)+2) D ) #define (3*(a)+2) f(x)29、若有以下宏定义:#define N 2#defint Y(n) (N+1)*n)则执行语句z=2* (N+Y(5);后的结果是()A)语句有错误B ) z=34 C ) z=70 D ) z无定值三、判断对错1、C语言规定,可执行程序的开始执行点是程序的开头。对2、在C语言中,一个函数一般由两个部分组成,它们是变量定义和语句执行。对3、下面add函数的功能是求两个参数的和,并将和值返回调用函数。下面的函数是正确的。 错void add(float a,float b)float c; c=a+b; return (c); 4、简单变量作实参时,与其对应的形参各占有独立的存储单元。错5、C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是由实参传给形参, 再由形参传给实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年天津市房产购买中介服务合同示范文本
- 2025建筑材料供应企业管理人员劳动合同(参考模板)
- 2025年办公楼租赁合同样式
- 2025年返销贸易补偿合同范本
- 2025家居建材购销合同范本
- 《安全同行之路》课件
- 《成本控制策略与应用》课件
- 经济对教育发展的影响分析
- 2025年福建福州榕发(连江)置业有限公司招聘笔试参考题库附带答案详解
- 脑卒中患者ADL的康复护理
- 2022全国高考真题化学汇编:专题 烃 卤代烃
- GB/T 25742.4-2022机器状态监测与诊断数据处理、通信与表示第4部分:表示
- 特殊感染手术的配合与术后处理
- 萧红《呼兰河传》课件
- 脑血管病介入诊疗并发症及其处理课件
- 机动车驾驶人考试场地及其设施设置规范
- 大学生三生教育主题班会
- 2023年宜昌市中医医院医护人员招聘笔试题库及答案解析
- 内部控制建设课件
- 水塘排水、清淤质量检验记录表
- 上海龙之梦丽晶大酒店客房预订单
评论
0/150
提交评论