二级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
c语言struct头文件 #include <stdio.h>
main()
{ int i;
for(i=1; i<=NUM; i++);
printf("% d\n", 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("% d\n", 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("% d\n", 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("% d\n", 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("% d\n", *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.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("% d\n", 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.1f\n", 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("% d\n", 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("% d\n", 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("% d\n", 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("% d\n", 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("% d\n", *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("% d\n", sizeof(them));
}A.32 B.16 C.8 D.24
23. 以下程序的运行结果是______。
#include "stdio.h"
main()
{ struct date {
int year, month, day;
} today;
printf("% d\n", sizeof(struct date));
}A.6 B.8 C.10D.12
24. 若有以下结构体定义:
struct example {
int x;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论