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

上传人:b****3 文档编号:8137500 上传时间:2023-05-10 格式:DOCX 页数:12 大小:19.56KB
下载 相关 举报
编译预处理和动态存储分配及答案Word格式.docx_第1页
第1页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第2页
第2页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第3页
第3页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第4页
第4页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第5页
第5页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第6页
第6页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第7页
第7页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第8页
第8页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第9页
第9页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第10页
第10页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第11页
第11页 / 共12页
编译预处理和动态存储分配及答案Word格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《编译预处理和动态存储分配及答案Word格式.docx》由会员分享,可在线阅读,更多相关《编译预处理和动态存储分配及答案Word格式.docx(12页珍藏版)》请在冰点文库上搜索。

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

6

 C)7 

 D)6 

(4)以下叙述中正确的是 

 A)预处理命令行必须位于源文件的开头

 B)在源文件的一行上可以有多条预处理命令

 C)宏名必须用大写字母表示

 D)宏替换不占用程序的运行时间

(5)有以下程序

main()

chara[]=”abcdefg”,b[10]=”abcdefg”;

printf(“%d 

%d\n”,sizeof(A),sizeof(B));

执行后输出结果是

 A)7 

 

 B)88 

 C)810 

 D)1010

(6)有以下程序

#define 

x*x

inti;

i=f(4+4)/f(2+2);

printf(“%d\n”,i);

 A)28 

 B)22 

 C)16 

 D)4

(7)有以下程序

#include 

<

stdio.h>

F(X,Y)(X)*(Y)

main()

a=3,b=4;

printf("

%d\n"

F(a++,b++));

 A)12 

 B)15 

 D)20

(8)有以下程序

char 

s[]="

\n123\\"

%d,%d\n"

strlen(s),sizeof(s));

 A)赋初值的字符串有错 

 B)6,7 

 C)5,6 

 D)6,6

(9)有以下程序

main(int 

arge,char 

*argv[])

n,i=0;

while(arv[1][i]!

='

\0'

n=fun();

i++;

printf(%d\n"

n*argc);

fun()

staticint 

s=0;

s+=1;

return 

s;

假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行

exam 

123<

回车>

则运行结果为

(10)有以下程序

{chara[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’,‘\0’};

int 

i=sizeof(a);

printf(“%d,%d\b”i,j);

 A)9,9 

 B)8,9 

 C)1,8 

 D)9,8

(11)程序中头文件typel.h的内容是:

5

M1 

N*3

程序如下:

“type1.h”

M2 

N*2

{inti;

i=M1+M2;

程序编译后运行的输出结果是:

 A)10 

 B)20 

 C)25 

 D)30

(12)有以下程序

stdlib.h>

{char*p,*q;

p=(char*)malloc(sizeof(char)*20);

q=p;

scanf(“%s%s”,p,q);

printf(“%s%s\n”,p,q);

若从键盘输入:

abcdef<

,则输出结果是:

 A)defdef 

 B)abcdef 

 C)abcd 

 D)dd

(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)以下程序的输出结果是

st[20]=“hello\0\t\\\”;

printf(%d%d\n”,strlen(st),sizeof(st));

 A)99 

 B)520 

 C)1320 

 D)2020

(15)以下程序的输出结果是

amovep(int 

p,int 

(a)[3],int 

n)

i,j;

for(i=0;

i<

i++)

for(j=0;

j<

n;

j++){ 

*p=a[i][j];

p++;

}

*p,a[3][3]={{1,3,5},{2,4,6}};

p=(int*)malloc(100);

amovep(p,a,3);

printf(“%d%d\n”,p[2],p[5]);

free(p);

 A)56 

 B)25 

 C)34 

 D)程序错误

(16)以下程序的输出结果是

M(x,y,z) 

x*y+z

a=1,b=2,c=3;

printf(“%d\n”,M(a+b,b+c,c+a));

 A)19 

 B)17 

 C)15 

 D)12

(17)以下程序的输出结果是

 A)16 

 B)2 

 C)9 

 D)1

SQR(X) 

X*X

a=16,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

printf(“d\n”,a);

(18)若定义了以下函数:

voidf(……)

{……

*p=(double*)malloc(10*sizeof(double));

……

p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是

 A)double 

*p 

 B)float 

**p 

 C)double 

 D)float 

*p

(19)有如下程序

N+1

NUM 

2*M+1

#main()

i;

for(i=1;

=NUM;

i++)printf(“%d\n”,i);

该程序中的for循环执行的次数是

 A)5 

 B)6 

 C)7 

 D)8

(20)下列程序执行后的输出结果是

 A)6 

 B)8 

 C)10 

#define 

MA(x)x*(x-1)

main()

{inta=1,b=2;

%d\n"

MA(1+a+b));

(21)若有说明:

long*p,a;

则不能通过scanf语句正确给输入项读入数据的程序段是

 A)*p=&

a;

scanf("

%ld"

,p);

 B)p=(long*)malloc(8);

 C)scanf("

,p=&

a);

 D)scanf("

,&

(22)以下程序的输出结果是

 A)1 

 B)4 

 D)5

#include 

a[3][3]={1,2,3,4,5,6,7,8,9,},*p;

main( 

p=(int*)malloc(sizeof(int));

f(p,a);

,*p);

f(int*s, 

p[][3])

*s=p[1][1];

(23)以下程序的输出结果是

 A)9 

 C)36 

 D)18

a=6,b=2,c;

c=f(a)/f(b);

,c);

(24)以下程序运行后,输出结果是

 A)49.5 

 B)9.5 

 C)22.0 

 D)45.0

#include<

stdio,h>

PT 

5.5

S(x) 

PT*x*x

a=1,b=2;

%4.1f\n"

S(a+b));

(25)以下程序运行后,输出结果是

 B)7 

 D)11

fut(int 

**s,int 

p[2][3])

**s=p[1][1];

a[2][3]={1,3,5,7,9,11}, 

*p;

p=(int 

*)malloc(sizeof(int));

fut(&

p,a);

*P);

(26)设有以下宏定义:

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;

%lf"

p);

 B)p=(double*)malloc(8);

scanf("

%f"

 C)p=&

a);

 D)p=&

%le"

(28)执行下面的程序后,a的值是

{inta=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

 B)1 

 D)0

(29)以下程序的输出结果是

fut(int**s,intp[2][3])

inta[2][3]={1,3,5,7,9,11},*p;

p=(int*)malloc(sizeof(int));

fut(&

primtf("

*p);

(30)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:

int*p;

p=__________malloc(sizeof(int));

则应填入

 A)int 

 B)inst* 

 C)(*int) 

 D)(int*)

(31)请读程序:

#include<

#defineSUB(X,Y)(X)*Y

{inta=3,b=4;

%d"

SUB(a++,b++));

上面程序的输出结果是

(32)请读程序:

voidfun(float*pl,float*p2,float*s)

{s=(float*)calloc(1,sizeof(float));

*s=*p1+*(p2++);

{floata[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;

fun(a,b,s)

%f\n"

*s);

 A)11.100000 

 B)12.100000 

 C)21.100000 

 D)1.100000

(33)在宏定义#definePI3.14159中,用宏名PI代替一个

 A)单精度数 

 B)双精度数 

 C)常量 

 D)字符串

(34)请选出以下程序段的输出结果

#defineMIN(x,y) 

(x)<

(y)?

(x):

(y)

{inti,j,k;

i=10;

j=15;

k=10*MIN(i,j);

k);

 A)15 

 B)100 

 D)150

(35)sizeof(double)是 【35】。

 A)一种函数调用 

 B)一个双精度型表达式

 C)一个整型表达式 

 D)一个不合法的表达式

(36)以下for语句构成的循环执行了【36】次。

#include<

(M+1)*M/2

i,n=0;

for(i=1;

i++);

{n++;

n);

\n"

);

 C)8 

 D)9

(37)以下程序的输出结果是 【37】。

#include<

FUDGE(y) 

2.84+y

PR(a) 

(int)(a))

PRINT1(a) 

PR(a);

putchar('

\n'

{intx=2;

PRINT1(FUDGE(5)*x);

 A)11 

 B)12 

 C)13 

 D)15

二、填空题:

(1)已有定义:

double 

,请写出完整的语句,利用malloc函数使p指向一个双精度型 

的动态存储单元【1】。

(2)以下程序运行后的输出结果是【2】 

.

4*x*x+1

{

i=6,j=8;

S(i+j));

(3)以下程序中,for循环体执行的次数是【3】 

N2

MN+1

KM+1*M/2

for(i=1;

K;

{...}

...

(4)以下程序中给指针p分配三个double型动态内存单元,请填空。

main()

double*p;

p=(double*)malloc(【4】);

p[0]=1.5;

p[1]=2.5;

p[2]=3.5;

printf(“%f%f%f\n”,p[0],p[1],p[2]);

(5)以下程序的输出结果是【5】。

#defint 

MCRA(m) 

2*m

MCRB(n,m) 

2*MCRA(n)+m

i=2,j=3;

MCRB(j,MCRA(i)));

(6)下面程序的运行结果是【6】。

10

s(x) 

inti1,i2;

i1=1000/s(N);

i2=1000/f(N);

printf(“%d 

%d\n”,i1,i2);

(7)设有如下宏定义

MYSWAP(z,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]。

MAX(x,y) 

(x)>

(x):

a=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

printf(“%d\n”,t);

(10)若要使指针p指向一个double类型的动态存储单元,请填空。

p= 

[10] 

malloc(sizeof(double));

(11)下面程序的输出是 

【11】。

#definePR(ar)printf("

ar)

{intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;

for(j=3;

j;

j--)

{switch(j)

{case1:

case2:

PR(*p++);

break;

case3:

PR(*(--p));

答案:

一、选择题:

01) 

 02) 

C  

03) 

 04) 

 05) 

06) 

A  

07) 

 08) 

 09) 

 10) 

D

11) 

 12) 

 13) 

 14) 

 15) 

16) 

 17) 

 18) 

 19) 

 20) 

B

21) 

 22) 

 23) 

 24) 

 25) 

26) 

 27) 

 28) 

 29) 

 30) 

31) 

 32) 

 33) 

 34) 

 35) 

36) 

 37) 

二、填空题:

(1)p=(double*)malloc(sizeof(double))

(2)81

(3)4

(4)3*sizeof(double)

(5)16

(6)1000 

(7)c

(8)Malloc(11)或malloc(sizeof(char)*11)

(9)7

(10)(double*)

(11)9911

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2