C语言实验与习题(注释版) 下载本文

C语言练习题

8. 第九章 预处理命令

1. 若有定义:#define F 2+3 ,则表达式F*F的值为( )

A) 17 B) 11 C) 13 D) 25

2. 下面叙述错误的是()

A) “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE

B) “#include”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令 C) C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 D) 宏定义也是C语句,必须在行末加分号

3. 下面叙述正确的是()

A) 预处理命令也是C语句,必须以分号结束 B) 宏展开不占用运行时间,只占用编译时间 C) 宏名必须用大写字母表示

D) 一个源程序只能有一个预编译处理命令行

4. 以下程序运行后,屏幕输出为( )。

#define MIN(a,b) ((a)<(b)?(a):(b)) main()

{int x=2,y=3,z;

z=2*MIN(x,y); printf(\}

A) 2 B) 3 C) 4

5. 若有定义:#define PI 3,则表达式PI*2*2的值为( )。

A) 12 B) 4 C) 3

6. 若有以下宏定义,

#define MOD(x,y) x%y

则执行以下程序段后,z的值是( )。 int z,a=15,b=100; z=MOD(b,a); A) 100 B) 15 C) 11

7. 以下程序的运行结果是()。

#define X a+b main()

{ int a=3,b=4,s1; s1=2*X;

printf(\}

A) 6 B) 8 C) 10

D) 6 D) 不确定 D) 10 D) 14

21

期末复习题集

8. 若有定义:

typedef int NUM[100]; NUM n;

则()语句是正确的。

A) n[0]=2;

B) n=2;

C) NUM=2;

D) NUM=n;

9. 若有定义:

typedef int * INTEGER; INTEGER p;

则下面叙述正确的是()。

A) p是与INTEGE相同的类型 B) p是一个整型变量

C) 程序中可用INTEGER定义int类型指针变量 D) 程序中可用INTEGER定义int类型变量

10. 以下叙述中,正确的是( )。

A) “#define PRICE=30”定义了与30等价的符号常量PRICE B) 预编译处理命令行都必须以“#”开头 C) 宏名只能包含大写字母和数字字符

D) 在程序的一行上可以书写几个有效的宏定义

11. 以下的叙述中不正确的是( )。

A) 宏展开不占用运行时间,只占用编译时间 B) 宏名无类型

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

D) 预处理命令行都必须以#号开始

22

C语言练习题

9. 第十章 指针

1. 若有定义:int a=4,*p=&a;,则以下()均表示地址。

A) a,p B) a,*p C) &a,p

2. 若有定义:int *p1,*p2;,则不能用于指针变量p1、p2之间的运算符是()。

A) + B) = C) = =

3. 执行以下程序段的输出结果是( )。 int a=10,*p=&a; printf(\

A) 10 C) 变量a的地址 B) 11 D) 变量a的地址 + 1

4. 以下程序段运行后x的值为( )

int a[]={1,2,3},b[]={4,3,3}; int *p,*q ; int i,x; p=a;q=b;

for(i=0;i<3;i++)

if(*(p+i)= =*(q+i)) x=*(p+i)*2;

A) 不确定

B) 4 C) 6

5. 以下程序段运行后*(++p)的值为( )。 char a[5]=\ char *p; p=a;

A) 'w' C) 'o' B) 存放'w'的地址 D) 存放'o'的地址

6. 以下程序段运行后*(p+3)的值为( )。 char a[]=\ char *p; p=a;

A) 'd' C) 存放'd'的地址 B) '\\0' D) 'o'

7. 设有以下语句,则( )是对a数组元素的不正确引用,其中0≤i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;

A) a[p-a] B) *(&a[i]) C) p[i]

8. 以下程序段运行结果是()

int x[3]={1,2,3}; int *p;

D) &a,*p

D) –

D) 2

D) *(*(a+i))

23

期末复习题集

p=x;

for(p++;p<&x[2];p++) printf(“%d”,*p); A) 3

B) 2 3 C) 2 D) 1 2

9. 以下程序的运行结果是()。

main() {int x,y; int *p,*q,*t; x=23;y=45; p=&x;q=&y; t=p; p=q; q=t;

printf(\}

A) 23,23

B) 23,45

C) 45,45

D) 45,23

10. 下列程序段运行后,( )对数组a元素的引用是错误的。(其中0≤i<4, 0≤j<3)

int i,j,(*p)[3];

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

A) *(p[i]+j) C) *(*(a+i)+j) B) p[i][j] D) *(*(p+i)[j])

11. 若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a;,()对数组a元素的引用是正确的。

A) (**p)[2] B) **(p+4) C) *(p[2]+3) D) *(p[4])

12. 以下程序的运行结果是()

main() {

int a[3]={1,2,3}; int *num[3]; int **p,i;

for(i=0;i<3;i++) num[i]=&a[i];

p=num;

printf(“%d”,**p); } A) 1 B) num C) 3 D) &a[0]

13. 以下程序的运行结果是()

main()

{ char a[]=”137”,*p; for(p=a;p

24