二级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小时内删除。