admin 管理员组

文章数量: 1086019


2024年5月21日发(作者:reward和award区别)

二级C语言-编译预处理和动态存储分配、结构体和共用体、

文件(一)

(总分100,考试时间90分钟)

一、选择题

1. 以下函数的功能是,通过键盘输入数据,为数组中的所有元素赋值。在下划线处应填入

的是______。

#define N 10

void arrin(int x[N])

{ int i=0; while(i<N)

scanf("% d", ______);

}A.x+i B.&x[i+1] C.x+(i++) D.&x[++i]

2. 下面是对宏定义的描述,不正确的是______。A.宏不存在类型问题,宏名无类型,它的

参数也无类型 B.宏替换不占用运行时间 C.宏替换时先求出实参表达式的值,然后代入形

参运算求值 D.其实,宏替换只不过是字符替代而已

3. 有以下程序:

#define N 2

#define M N + 1

#define NUM (M+1)*M/2

#include <stdio.h>

main()

{ int i;

for(i=1; i<=NUM; i++);

printf("% dn", i);

}

for循环执行的次数是______。A.5 B.6 C.8 D.9

4. 以下程序的输出结果为______。

#include <stdio.h>

#define SQR(x) x*x

main()

{

int a, k=3;

a=++SQR(k+1);

printf("% dn", a);

}A.6 B.10 C.8D.9

5. 以下叙述中,正确的是______。A.用#include包含的头文件的后缀不可以是“.a” B.若一

些源程序中包含某个头文件,当该头文件有错误时,只需对该头文件进行修改,包含此头文

件的所有源程序不必重新进行编译 C.宏命令行可以看做是一行C语句 D.C编译中的预处

理是在编译之前进行的

6. 程序中头文件typel.h的内容是:

#define N 5

#define M1 N * 3

/ *程序如下: * /

#include "stdio.h"

#include "typel.h"

#define M2 N * 2

main()

{ int i;

i=M1+M2;

printf("% dn", i);

}

程序编译后运行的输出结果是______。A.10 B.20 C.25 D.30

7. 有以下程序:

#include <stdio.h>

#include <stdlib.h>

int fun(int n)

{ int * p;

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

*p=n;

return * p;

}

main()

{ int a;

a=fun(10);

printf("% dn", a+fun(a));

}

程序的运行结果是______。A.0 B.10 C.20 D.出错

8. 以下程序的输出结果是______。

#include

void fut(int * *s, int p[2][3])

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

main()

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

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

fut(&p, a);

printf("% dn", *p);

free (p);

}A.1 B.7 C.9D.11

9. 对下面程序段,正确的判断是______。

#define A 3

#define B(a) ((A+1) *a)

x=3 * (A+B(7));A.程序错误,不许嵌套宏定义 B.x=93 C.x=21 D.程序错误,宏定义不许

有参数

10. 以下程序的输出结果为______。

#include <stdio.h>

#define F(y) 3.84+y

#define PR(a) printf("% d", (int) (a))

#define PRINT(a) PR(a); putchar('n')

main()

{ int x=2;

PRINT(F(3) *x);

}A.8 B.9 C.10D.11

11. 以下说法中,正确的是______。A.#define和printf都是C语句 B.#define是C语句,而

printf不是 是C语句,但#define不是 D.#define和printf都不是C语句

12. 以下程序的输出结果是______。

#define f(x) x*x

#include <stdio.h>

main()

{ int a=6, b=2, c;

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

printf("% dn", c);

}A.9 B.6 C.36D.18

13. 以下程序运行后,输出的结果是______。

#define PT 5.5

#define S(x) PT*x*x

#include <stdio.h>

main()

{ int a=1, b=2;

printf("% 4.1fn", S(a+b));

}A.49.5 B.9.5 C.22.0 D.45.0

14. 下列程序执行后的输出结果是______。

#define MA(x) x* (x-1)

#include <stdio.h>

main()

{ int a=1, b=2; printf("% dn", MA(1+a+b));

}A.6 B.8 C.10D.12

15. 有以下程序:

#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.7D.8

16. 程序中头文件typel.h的内容是:

#define N 5

#define M1 N * 3

程序如下:

#include "typel.h"

#define M2 N * 2

main()

{ int i;

i=M1+M2; printf("% dn", i);

}

程序编译后运行的输出结果是______。A.10 B.20 C.25 D.30

17. 以下正确的描述为______。A.每个C语言程序必须在开头使用预处理命令#include B.

预处理命令必须位于C源程序的首部 C.在C语言中预处理命令都以“#”开头 D.C语言的预

处理命令只能实现宏定义和条件编译的功能

18. 从下列选项中选择不会引起二义性的宏定义是______。A.#define

POWER(x)x*x B.#define POWER(x)(x)*(x) C.#define POWER(x)(x*x) D.#define

POWER(x)((x)*(x))

19. 设有以下宏定义:

#define N 3

#define Y(n) ((N+1)*n)

则执行语句"z=2 * (N+Y(5+1));"后, z的值为______。A.出错 B.42 C.48 D.54

20. 若有宏定义#define MOD(x, y) x%y,则执行以下语句后的输出为______。

int z, a=15, b=100;

z=MOD (b, a);

printf("% dn", z++);A.11 B.10 C.6D.宏定义不合法

21. 以下程序的输出结果是______。

#include <stdio.h>

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

f(int *s, int p[][3])

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

main()

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

f(p, a);

printf("% dn", *p);

free(p);

}A.1 B.4 C.7D.5

22. 以下程序的输出结果是______。

#include <stdio.h>

typedef union {

long x[2];

int y[4];

char z[8];

} MYTYPE;

MYTYPE them;

main()

{ printf("% dn", sizeof(them));

}A.32 B.16 C.8 D.24

23. 以下程序的运行结果是______。

#include "stdio.h"

main()

{ struct date {

int year, month, day;

} today;

printf("% dn", sizeof(struct date));

}A.6 B.8 C.10D.12

24. 若有以下结构体定义:

struct example {

int x;

int y;

} v1;

则______是正确的引用或定义。e, x=10; e v2;

v2.x=10; v2; v2.x=10; example v2={10};

25. 有以下程序:


本文标签: 程序 输出 定义 编译