ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:19.56KB ,
资源ID:11799332      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11799332.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译预处理和动态存储分配及答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译预处理和动态存储分配及答案.docx

1、编译预处理和动态存储分配及答案编译预处理和动态存储分配一、选择题(1)有以下程序main() char p=a, b, c, q=abc; printf(%d %dn, sizeof(p),sizeof(q);程序运行后的输出结果是A)4 4B)3 3C)3 4D)4 3(2)有以下程序# define f(x) (x*x)main() int i1, i2; i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ; printf(%d, %dn,i1,i2);程序运行后的输出结果是A)64, 28B)4, 4C)4, 3D)64, 64(3)有以下程序main() char a7=

2、a00a00;int i,j; i=sizeof(a); j=strlen(a); printf(%d %dn,i,j);程序运行后的输出结果是 A)2 2B)7 6C)7 2D)6 2(4)以下叙述中正确的是 A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间(5) 有以下程序main( ) char a=”abcdefg”,b10=”abcdefg”; printf(“%d %dn”,sizeof(A) ,sizeof(B) );执行后输出结果是A) 7 7 B) 8 8 C) 8 10 D) 10 10(6

3、) 有以下程序#define f(x) x*xmain( ) int i; i=f(4+4)/f(2+2); printf(“%dn”,i);执行后输出结果是A) 28 B) 22 C) 16 D) 4(7) 有以下程序#include #define F(X,Y) (X)*(Y)main () int a=3, b=4;printf(%dn, F(a+,b+);程序运行后的输出结果是A) 12 B) 15 C) 16 D) 20(8) 有以下程序main()chars=n123;printf(%d,%dn,strlen(s),sizeof(s);执行后输出结果是A) 赋初值的字符串有错B)

4、6,7C) 5,6 D) 6,6(9) 有以下程序main(intarge,char *argv)intn,i=0;while(arv1i!=0n=fun();i+;printf(%dn,n*argc);intfun()static ints=0;s+=1;returns;假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行exam123则运行结果为(10) 有以下程序main() char a =a,b,c,d, e, f, g,h,0; int i,j;i=sizeof(a); j=strlen(a);printf(“%d,%db”i,j);程序运行后的输出结果是A)9,

5、9 B)8,9 C)1,8 D)9,8(11) 程序中头文件typel.h 的内容是:#define N 5#define M1 N*3程序如下:#define “type1.h”#define M2 N*2main() int i;i=M1+M2; printf(“%dn”,i);程序编译后运行的输出结果是:A) 10 B) 20C) 25 D) 30(12) 有以下程序#include main() char *p,*q;p=(char*)malloc(sizeof(char)*20); q=p;scanf(“%s%s”,p,q); printf(“%s%sn”,p,q);若从键盘输入:a

6、bc def,则输出结果是:A) def defB) abc defC) abc dD) d d(13) 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是A) p=2*(int*)malloc(sizeof(int);B) p=(int*)malloc(2*sizeof(int);C) p=(int*)malloc(2*2);D) p=(int*)calloc(2,sizeof(int);(14) 以下程序的输出结果是main() char st20= “hello0t”;printf(%d %d n”,strlen(st),sizeof(st);A) 9 9 B) 5

7、 20C) 13 20 D) 20 20(15) 以下程序的输出结果是amovep(int p, int (a)3,int n) int i, j;for( i=0;i;i+)for(j=0;jn;j+) *p=aij;p+; main() int *p,a33=1,3,5,2,4,6;p=(int *)malloc(100);amovep(p,a,3);printf(“%d %d n”,p2,p5);free(p);A) 56 B) 25C) 34 D) 程序错误(16) 以下程序的输出结果是#define M(x,y,z) x*y+zmain() int a=1,b=2, c=3;prin

8、tf(“%dn”, M(a+b,b+c, c+a);A) 19B) 17C) 15D) 12(17) 以下程序的输出结果是A) 16B) 2C) 9 D) 1#define SQR(X) X*Xmain() int a=16, k=2, m=1; a/=SQR(k+m)/SQR(k+m); printf(“dn”,a);(18) 若定义了以下函数:void f() *p=(double *)malloc( 10*sizeof( double);p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是A) double *pB) float *p C) doub

9、le *p D) float *p(19) 有如下程序#define N 2#define M N+1#define NUM 2*M+1#main() int i;for(i=1;i=NUM;i+)printf(“%dn”,i);该程序中的for循环执行的次数是A) 5 B) 6 C) 7 D) 8(20) 下列程序执行后的输出结果是A) 6 B) 8 C) 10 D) 12 #define MA(x) x*(x-1) main() int a=1,b=2; printf(%d n,MA(1+a+b);(21) 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段

10、是A) *p=&a; scanf(%ld,p);B) p=(long *)malloc(8); scanf(%ld,p);C) scanf(%ld,p=&a);D) scanf(%ld,&a);(22) 以下程序的输出结果是A) 1 B) 4 C) 7 D) 5 #include int a33=1,2,3,4,5,6,7,8,9,*p; main( ) p=(int*)malloc(sizeof(int); f(p,a); printf(%d n,*p); f(int *s, int p3) *s=p11; (23) 以下程序的输出结果是A) 9 B) 6 C) 36 D) 18 #defi

11、ne f(x) x*x main( ) int a=6,b=2,c; c=f(a) / f(b); printf(%d n,c); (24) 以下程序运行后,输出结果是A) 49.5 B) 9.5 C) 22.0 D) 45.0 #include #define PT 5.5 #define S(x) PT* x * x main() int a=1,b=2; printf(%4.1fn,S(a+b); (25) 以下程序运行后,输出结果是A) 1 B) 7 C) 9 D) 11 fut(int *s, int p23) *s=p11; main() int a23=1,3,5,7,9,11,

12、 *p; p=(int *) malloc(sizeof(int); fut(&p,a); printf(%dn,*P); (26) 设有以下宏定义:#define N 3#define Y(n) ( (N+1)*n)则执行语句:z=2 * (N+Y(5+1);后,z的值为A) 出错 B) 42 C) 48 D) 54(27) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是A)*p=&a; scanf(%lf,p); B)p=(double *)malloc(8);scanf(%f,p);C) p=&a;scanf(%lf,a); D)p=&a; sca

13、nf(%le,p);(28) 执行下面的程序后,a的值是#define SQR(X) X*Xmain( ) int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+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*)malloc(sizeof(int);fut(&p,a);primtf(%dn,*p); A) 1 B) 7 C) 9 D) 11(30) 若要用下面的程序片段使指针变量p指向一个

14、存储整型变量的动态存储单元:int *p;p=_ malloc( sizeof(int);则应填入A) int B) inst * C) (*int)D) (int *)(31) 请读程序:#include#define SUB(X,Y) (X)*Ymain() int a=3, b=4;printf(%d, SUB(a+, b+);上面程序的输出结果是A) 12 B) 15 C) 16 D) 20(32) 请读程序:#includevoid fun(float *pl, float *p2, float *s) s=( float * )calloc( 1, sizeof(float);*s

15、=*p1+ *(p2+);main() float a2=1.1, 2.2, b2=10.0, 20.0, *s=a;fun(a, b, s)printf(%fn,*s);上面程序的输出结果是A) 11.100000 B) 12.100000 C) 21.100000 D) 1.100000(33) 在宏定义 #define PI 3.14159中,用宏名PI代替一个A) 单精度数 B) 双精度数 C) 常量 D) 字符串(34) 请选出以下程序段的输出结果#include#define MIN(x,y) (x)(y)? (x):(y)main() int i,j,k;i=10; j=15;k

16、=10*MIN(i,j);printf(%dn,k);A) 15 B) 100 C) 10 D) 150(35) sizeof(double)是【35】 。A)一种函数调用 B)一个双精度型表达式C)一个整型表达式 D)一个不合法的表达式(36) 以下for语句构成的循环执行了 【36】 次。# include # define N 2# define M N+1# define NUM (M+1)*M/2main() int i , n=0;for ( i=1;i=NUM;i + + ); n + + ; printf(%d,n); printf(n); A) 5 B) 6 C) 8 D)

17、9(37) 以下程序的输出结果是【37】 。# include# define FUDGE(y) 2.84+y# define PR(a) printf(%d,(int)(a)# define PRINT1(a) PR(a);putchar(n)main()int x=2; PRINT1(FUDGE(5)*x); A) 11 B) 12 C) 13 D) 15二、填空题:(1)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型 的动态存储单元 【1】 。(2)以下程序运行后的输出结果是 【2】 .#define S(x) 4*x*x+1main() in

18、t i=6,j=8; printf(%dn,S(i+j);(3) 以下程序中, for循环体执行的次数是 【3】 。#define N 2#define M N+1#define K M+1*M/2main() int i; for(i=1;iK;i+) . .(4) 以下程序中给指针p分配三个double型动态内存单元,请填空。# include main ( ) double *p; p=(double *) malloc(【4】); p0=1.5;p1=2.5;p2=3.5; printf(“%f%f%fn”,p0,p1,p2);(5) 以下程序的输出结果是【5】 。#defintMCR

19、A(m)2*m#defineMCRB(n,m)2*MCRA(n)+mmain()inti=2,j=3;printf(%dn,MCRB(j,MCRA(i);(6) 下面程序的运行结果是【6】 。#define N 10#define s(x) x*x#define f(x) (x*x)main() int i1,i2;i1=1000/s(N); i2=1000/f(N);printf(“%d %dn”,i1,i2);(7) 设有如下宏定义#define MYSWAP(z,x,y) z=x; x=y; y=z;以下程序段通过宏调用实现变量a、b内容交换,请填空。float a=5,b=16,c;M

20、YSWAP( 【7】 ,a,b); (8) 用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*) 【8】 ; (9) 以下程序的输出结果是 9 。#define MAX(x,y) (x)(y)?(x):(y)main() int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%dn”,t);(10) 若要使指针p指向一个double类型的动态存储单元,请填空。p= 10 malloc(sizeof(double); (11) 下面程序的输出是 【11】 。#define PR(ar) print

21、f(%d, ar)main() int j, a= 1,3,5,7,9,11,13,15, *p=a+5;for(j=3; j; j-) switch(j) case 1:case 2: PR(*p+); break;case 3: PR(*(-p);答案:一、选择题:01)C02)C03)C04)D05)C06)A07)A08)C09)A10)D11)C12)A13)A14)B15)A16)D17)B18)C19)B20)B21)A22)D23)C24)B25)C26)C27)D28)B29)C30)D31)A32)D33)D34)A35)C36)C37)B二、填空题:(1) p=(double*)malloc(sizeof(double)(2) 81 (3) 4(4) 3*sizeof(double)(5) 16(6) 1000 10(7) c(8) Malloc (11) 或malloc(sizeof(char)*11)(9) 7(10) (double *)(11) 9911

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1