《2022年编译预处理和动态存储分配及答案.docx》由会员分享,可在线阅读,更多相关《2022年编译预处理和动态存储分配及答案.docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆编译预处理和动态储备安排一、挑选题(1)有以下程序main char p=a, b, c, q=abc; printf%d %dn, sizeofp,sizeofq; ; 程序运行后的输出结果是A)4 4 B)3 3 C)3 4 D)4 3 (2)有以下程序# define fx x*x main int i1, i2; i1=f8/f4 ; i2=f4+4/f2+2 ; printf%d, %dn,i1,i2; 程序运行后的输出结果是A)64, 28 B)4, 4 C)4, 3 D)64, 64 (3)有以下程序ma
2、in char a7=a00a00;int i,j; i=sizeofa; j=strlena; printf%d %dn,i,j; 程序运行后的输出结果是A)2 2 B)7 6 C)7 2 D)6 2 (4)以下表达中正确选项A)预处理命令行必需位于源文件的开头名师归纳总结 - - - - - - -第 1 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆B)在源文件的一行上可以有多条预处理命令 C)宏名必需用大写字母表示 D)宏替换不占用程序的运行时间5 有以下程序 main char a=” abcdefg” ,b10= ” abcdefg”
3、;printf“ %dn” ,sizeofA ,sizeofB ; 执行后输出结果是 A 7 7 B 8 8 C 8 10 D 10 10 6 有以下程序#define fx x*x main int i; i=f4+4/f2+2; printf“ %d n” ,i; 执行后输出结果是 A 28 B 22 C 16 D 4 7 有以下程序 #include #define FX,Y X*Y main int a=3, b=4; printf%dn, Fa+,b+; 程序运行后的输出结果是 A 12 B 15 C 16 D 20 8 有以下程序名师归纳总结 - - - - - - -第 2 页,
4、共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆main char s=n123; printf%d,%dn,strlens,sizeofs; 执行后输出结果是 A 赋初值的字符串有错 B 6,7 C 5,6 D 6,6 9 有以下程序mainint arge,char *argv int n,i=0; whilearv1i.=0 n=fun; i+; printf%dn,n*argc; int fun s=0; static int s+=1; return s; 假设程序经编译、连接后生成可执行文件 exam.exe, 如键入以下命令行 exam 1
5、23 就运行结果为10 有以下程序 main char a =a, b, c, d, e, f , g, h, 0; int i,j; i=sizeofa; j=strlena; printf“ %d,%d b” i,j; 程序运行后的输出结果是 A)9, 9 B)8, 9 C)1, 8 D)9, 8 11 程序中头文件typel.h 的内容是:#define N 5 #define M1 N*3 程序如下:名师归纳总结 - - - - - - -第 3 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆#define “ type1.h ”#defi
6、ne M2 N*2 main int i; i=M1+M2; printf“ %d n” ,i; 程序编译后运行的输出结果是:A 10 B 20 C 25 D 30 12 有以下程序 #include main char *p,*q; p=char*mallocsizeofchar*20; q=p; scanf “ %s%s” ,p,q;printf“ %s%s n” ,p,q; 如从键盘输入: abc def,就输出结果是:A def def B abc def C abc d D d d 13 如指针 p 已正确定义,要使 A p=2*int*mallocsizeofint; B p=in
7、t*malloc2*sizeofint; C p=int*malloc2*2; D p=int*calloc2,sizeofint; 14 以下程序的输出结果是 main p 指向两个连续的整型动态储备单元,不正确的语句是 char st20= “ hello” ;n” ,strlenst,sizeofst; A 9 9 B 5 20 C 13 20 D 20 20 15 以下程序的输出结果是名师归纳总结 - - - - - - -第 4 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆amovepint p, int a3,int n int i,
8、 j; for i=0;i;i+ forj=0;jn;j+ *p=aij;p+; main int *p,a33=1,3,5,2,4,6; p=int *malloc100; amovepp,a,3; printf“ %d %d n” ,p2,p5;freep; A 56 B 25 C 34 D 程序错误16 以下程序的输出结果是#define Mx,y,z x*y+z main int a=1,b=2, c=3; printf“ %dn ” , Ma+b,b+c, c+a; A 19 B 17 C 15 D 12 17 以下程序的输出结果是 A 16 B 2 C 9 D 1 #define
9、SQRX X*X main int a=16, k=2, m=1; a/=SQRk+m/SQRk+m; printf“ dn” ,a; 18 如定义了以下函数:void f 名师归纳总结 - - - - - - -第 5 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆 *p=double *malloc 10*sizeof double; p 是该函数的形参,要求通过p 把动态安排储备单元的地址传回主调函数,就形参p 的正确定义应当是A double *p B float *p C double *p D float *p 19 有如下程序#def
10、ine N 2 #define M N+1 #define NUM 2*M+1 #main int i; “ %dn” ,i;fori=1;i=NUM;i+printf 该程序中的 for 循环执行的次数是 A 5 B 6 C 7 D 8 20 以下程序执行后的输出结果是 A 6 B 8 C 10 D 12 #define MAx x*x-1 main int a=1,b=2; printf%d n,MA1+a+b; 21 如有说明: long *p , a;就不能通过 scanf 语句正确给输入项读入数据的程序段是 A *p=&a ; scanf%ld, p ;B p=long *mallo
11、c8; scanf%ld,p ;C scanf%ld,p=&a ;D scanf%ld,&a ;22 以下程序的输出结果是 A 1 B 4 C 7 名师归纳总结 - - - - - - -第 6 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆D 5 #include int a33=1,2,3, 4, 5,6,7, 8, 9, ,*p ; main p=int*mallocsizeofint; fp , a ; printf%d n,*p ; fint *s, int p3 *s=p11; 23 以下程序的输出结果是 A 9 B 6 C 36 D
12、18 #define fx x*x main int a=6 , b=2,c; c=fa / fb; printf%d n,c ; 24 以下程序运行后 , 输出结果是 A 49.5 B 9.5 C 22.0 D 45.0 #include #define PT 5.5 #define Sx PT* x * x main int a=1,b=2; printf%4.1fn,Sa+b; 25 以下程序运行后 , 输出结果是 A 1 B 7 C 9 D 11 名师归纳总结 futint *s, int p23 第 7 页,共 14 页- - - - - - -精选学习资料 - - - - - -
13、- - - 学而不思就惘,思而不学就殆 *s=p11; main int a23=1,3,5,7,9,11, *p; p=int * mallocsizeofint; fut&p,a; printf%dn,*P; 26 设有以下宏定义 : #define N 3 #define Yn N+1*n 就执行语句 :z=2 * N+Y5+1; 后,z 的值为A 出错B 42 C 48 D 54 27 如有说明, double *p,a; A)*p=&a; scanf%lf,p; 就能通过 scanf 语句正确给输入项读入数据的程序段是Bp=double *malloc8;scanf%f,p; C p
14、=&a;scanf%lf,a; Dp=&a; scanf%le,p; 28 执行下面的程序后 ,a 的值是 #define SQRX X*X main int a=10,k=2,m=1; a/=SQRk+m/SQRk+m; printf%dn,a; A 10 B 1 C 9 D 0 29 以下程序的输出结果是 fut int*s,int p23 *s=p11; main int a23=1,3,5,7,9,11,*p; p=int*mallocsizeofint; fut&p,a; 名师归纳总结 primtf%dn,*p; 第 8 页,共 14 页- - - - - - -精选学习资料 - -
15、 - - - - - - - 学而不思就惘,思而不学就殆A 1 B 7 C 9 D 11 30 如要用下面的程序片段使指针变量 int *p; p=_ malloc sizeofint; 就应填入 A int B inst * C *int D int * 31 请读程序 : #include #define SUBX,Y X*Y main int a=3, b=4; printf%d, SUBa+, b+; 上面程序的输出结果是 A 12 B 15 C 16 D 20 32 请读程序 : #include void funfloat *pl, float *p2, float *s s= f
16、loat * calloc 1, sizeoffloat; *s=*p1+ *p2+; main p 指向一个储备整型变量的动态储备单元: float a2=1.1, 2.2, b2=10.0, 20.0, *s=a; funa, b, s printf%fn,*s; 上面程序的输出结果是 A 11.100000 B 12.100000 C 21.100000 名师归纳总结 - - - - - - -第 9 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆D 1.100000 33 在宏定义 #define PI 3.14159中,用宏名PI 代替一
17、个A 单精度数 B 双精度数 C 常量 D 字符串34 请选出以下程序段的输出结果 #include #define MINx,y xy. x:y main int i,j,k; i=10; j=15; k=10*MINi,j; printf%dn,k; A 15 B 100 C 10 D 150 35 sizeofdouble是【35】 ;A)一种函数调用 B)一个双精度型表达式 C)一个整型表达式 D)一个不合法的表达式36 以下 for语句构成的循环执行了【 36】 次;# include # define N 2 # define M N+1 # define NUM M+1*M/2
18、main int i , n=0; for i=1;i=NUM;i + + ; n + + ; printf%d,n; printfn; A 5 B 6 C 8 D 9 名师归纳总结 - - - - - - -第 10 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆37 以下程序的输出结果是【37】 ;# include # define FUDGEy 2.84+y # define PRa printf%d,inta # define PRINT1a PRa;putcharn main int x=2; PRINT1FUDGE5*x; A 11
19、B 12 C 13 D 15 二、填空题 : (1)已有定义: double *p; ,请写出完整的语句,利用malloc 函数使 p 指向一个双精度型的动态储备单元【1】 ;2 以下程序运行后的输出结果是【 2】 . #define Sx 4*x*x+1 main int i=6,j=8; printf%dn,Si+j; 3 以下程序中, for循环体执行的次数是【 3】;#define N 2 #define M N+1 #define K M+1*M/2 main int i; fori=1;iK;i+ . . 4 以下程序中给指针 p 安排三个 double 型动态内存单元,请填空;#
20、 include main 名师归纳总结 double *p; 【4】; 第 11 页,共 14 页 p=double * malloc- - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆 p0=1.5;p1=2.5;p2=3.5; printf“ %f%f%f n” ,p0,p1,p2; 5 以下程序的输出结果是【5】 ;#defint MCRAm 2*m #define MCRBn,m 2*MCRAn+m main int i=2,j=3; printf%dn,MCRBj,MCRAi; 6 下面程序的运行结果是【6】 ;#define N
21、10 #define sx x*x #define fx x*x main int i1,i2; i1=1000/sN; i2=1000/fN; printf“ %dn” ,i1,i2; 7 设有如下宏定义#define MYSWAPz,x,y z=x; x=y; y=z; 以下程序段通过宏调用实现变量 a、b 内容交换 , 请填空;float a=5,b=16,c; MYSWAP 【 7】 ,a,b; 8 用以下语句调用库函数 malloc ,使字符指针 st 指向具有 11 个字节的动态储备空间,请填空;st=char* 【8】 ; 9 以下程序的输出结果是 9 ;#define MAXx
22、,y xy.x:y main int a=5,b=2,c=3,d=3,t; t=MAXa+b,c+d*10; printf“ %d n” ,t; 10 如要使指针 p 指向一个 double 类型的动态储备单元,请填空;名师归纳总结 p= 10 mallocsizeofdouble; 第 12 页,共 14 页- - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆11 下面程序的输出是【11】 ;#define PRar printf%d, ar main int j, a= 1,3,5,7,9,11,13,15, *p=a+5; forj=3;
23、 j; j- switchj case 1: case 2: PR*p+; break; case 3: PR*-p; 名师归纳总结 - - - - - - -第 13 页,共 14 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆答案:一、挑选题:01 C 02 C 03 C 04 D 05 C 06 A 07 A 08 C 09 A 10 D 11 C 12 A 13 A 14 B 15 A 16 D 17 B 18 C 19 B 20 B 21 A 22 D 23 C 24 B 25 C 26 C 27 D 28 B 29 C 30 D 31 A 32 D 33 D 34 A 35 C 36 C 37 B 二、填空题:1 p=double*mallocsizeofdouble 2 81 3 4 4 3*sizeofdouble 5 16 6 1000 10 7 c 8 Malloc 11 或 mallocsizeofchar*11 9 7 10 double * 11 9911 名师归纳总结 - - - - - - -第 14 页,共 14 页