29
main()
{ int a=3,b=5,c; c=2*MIN(a,b); printf(\ } A. 3 B. 5 C.6 D.10
51407下列#include命令中,正确的是( A )。 A. #include \ B. #include [math.h] C.#include (math.h) D.#include {math.h} 51408下面程序的输出结果是( C )。 #include #define MON 1
#define TUE 2*MON #define WED 3*TUE void main()
{printf(\ } A. 2 B. 3 C.4 D.5
51409下面错误的叙述是( A )。
A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以\开头
C.C程序在开头可以不包含预处理命令行:#include D.C语言的预处理可以实现宏定义和条件编译的功能
51410以下程序的运行结果是( B )。 #define MUL(r) r*r main()
{int a=2,b=3,c; c=MUL(a+b)*2; printf(\ } A. 10 B. 14 C.36 D.50
51411下面程序的运行结果是( C )。 #define N 10
#define K(x) x*x #define T(x) (x*x) main( )
{int a,b; a=9%K(N); b=9%T(N); printf(\ } A. 9,9 B. 9,90 C.90,9 D.90,90
51412以下在任何情况下计算平方数时都不会引起二义性的宏定义是( D )。 A. #define XPF(x) x*x B. #define XPF(x) (x)*(x)
30
C.#define XPF(x) (x*x) D.#define XPF(x) ((x)*(x)) 51413以下程序的运行结果是( C )。 #define X a+b main( )
{ int a=3,b=4,s1; s1=2*X;
printf(\ } A. 14 B. 6 C.10 D.8
51414下面叙述错误的是( C )。
A. “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE B. 预处理命令行都必须以“#”开头
C.预处理命令行必须以分号结束 D.C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率
51415下面叙述正确的是( A )。
A. 宏展开不占用运行时间,只占用编译时间 B. 预处理命令也是C语句,必须以分号结束
C.一个源程序只能有一个预编译处理命令行 D.宏名必须用大写字母表示
51416下面叙述错误的是( D )。
A. “#inclue ”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令 B. “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE C.C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 D.宏定义也是C语句,必须在行末加分号
51417若有定义:#define PI 3,则表达式PI*2*2的值为( A )。 A. 12 B. 4
C.322 D.不确定
51418若有定义:#define F 2+3,则表达式F*F的值为( C )。 A. 25 B. 13 C.11 D.17
51500下程序的运行结果是( A )。 void ast (int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main()
{ int a=4,b=3,c,d; ast(a,b,&c,&d);
printf(\ } A. 7,1 B. 1,7
C.7,-1 D.c、d未赋值,编译出错
31
51501有以下语句: int a[5]={0,1,2,3,4},i; int *p=a; 设0≤i<5,对a数组元素不正确的引用是( C )。 A. *(&a[i]) B. a[p-a] C.*(*(a+i)) D.p[i]
51502若有定义int *p1,*p2; 则错误的表达式是( A )。 A. p1+p2 B. p1-p2 C.p151503以下叙述错误的是( D )。
A. 存放地址的变量称为指针变量 B. NULL可以赋值给任何类型的指针变量
C.一个指针变量只能指向类型相同的变量 D.两个相同类型的指针变量可以作加减运算
51504以下程序段运行后,表达式*(p+4)的值为( B )。 char a[]=\ char *p; p=a;
A. 'n' B. 'a'
C.存放'n'的地址 D.存放'a'的地址
51505以下程序段运行后,表达式*(p++)的值为( A )。 char a[5]=\ char *p=a;
A. 'w' B. 存放'w'的地址 C.'o' D.存放'o'的地址
51506若有定义: int *p,k=4; p=&k; 以下均代表地址的是( C )。 A. k, p B. &k, &p C.&k, p D.k, *p
51507若有定义:double *q,p;则能给输入项读入数据的正确程序段是( B )。 A. q=&p;scanf(\ B. q=&p;scanf(\C.*q=&p;scanf(\ D.*q=&p;scanf(\
51508若已定义: int q=5; 对① int *p=&q;和② p=&q; 这两条语句理解错误的是( C )。 A. ①是对p定义时初始化,使p指向q;而②是将q的地址赋给p B. ①和②中的&q含义相同,都表示给指针变量赋值
C.①是对p定义时初始化,使p指向q;而②是将q的值赋给p所指向的变量 D.①和②的执行结果都是把q的地址赋给p
51509下面语句错误的是( A )。
A. int *p; *p=20; B. char *s=\C.char *str=\ D.char *str;str=\
51510若有定义int a[2][3],*p=a;,则能表示数组元素a[1][2]地址的是( D )。 A. *(a[1]+2) B. a[1][2] C.p[5] D.p+5
32