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
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