#define NUM (M+1)*M/2 void main() { int i; for(i=1;i<=NUM;i++); printf(“%d\\n”,i); }
2、以下程序的输出结果是 。 #define A 3
#define B(a) ((A+1)*a) void main() {
int x;
x=3*(A+B(7));
printf(“x=%d\\n”,x);
}
三、判断题
( )1、宏替换时先求出实参表达式的值,然后代入形参运算求值。 ( )2、宏名无类型,其参数也无类型。
( )3、使用宏次数多时,宏展开后源程序不会变长。
( )4、调用函数只能得到一个返回值,而用宏可以得到几个结果。
( )5、在一被包含文件中又可以包含另一被包含文件,文件包含是可以嵌套的。
( )6、用一个指定的标识符来代表一个字符串,它的一般形式为 #define 标识符 字符串;
( )7、在宏定义#define PI 3.l4l59中,如果将1误输成小写的L,则编译时不出错,运行时出错。
( )8、取消PI的宏定义为 #undef PI 0 ( )9、#include和 #define不是C语句。
10 指针
一、单项选择题
1、若有定义:int x,*pb;则以下正确的表达式是( ) A.pb=&x B.pb=x C.*pb=&x D.*pb=*x 2、以下程序的输出结果是( )
A.因变量无定义输出不定值 B.0 C.-1 D.1
- 31 -
#include
{printf(“%d\\n”,NULL);}
3、以下程序的输出结果是( )
A.5,2,3 B.-5,-12,-7 C.-5,-12,-17 D.5,-2,-7 #include
void sub(int x,int y,int *z) {*z=y-x;} void main() {
int a,b,c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(“%d,%d,%d\\n”,a,b,c); }
4、以下程序的输出结果是( ) A.4 B.6 C.8 D.10 #include
int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(“%d\\n”,n); }
5、已知指针p的指向(图一)的a[1],则执行语句*p++;后,*p的值是(A.20 B.30 C.21 D.31 a[0] a[1] a[2] a[3] a[4]
10 20 30 40 50 (图一)
6、已知指针p的指向(图一)的a[1],则表达式*++p的值是( )。 A.20 B.30 C.21 D.31
7、已知指针p的指向(图一)的a[1],则表达式++*p的值是( )。 A.20 B.30 C.21 D.31 8、以下程序的输出结果是( )。
A.23 B.24 C.25 D.26
#include
{printf(“%d\\n”,+