内容发布更新时间 : 2024/12/22 14:45:34星期一 下面是文章的全部内容请认真阅读。
#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”,++*x);} void main() {
)。 - 32 -
int a=25;prtv(&a); }
9、以下程序的输出结果是( )。
A.运行出错 B.100 C.a的地址
#include
int **k,*a,b=100;
a=&b;k=&a;
printf(“%d\\n”,**k);
}
D.b的地址
10、以下程序运行后,输出结果是( )。
A. 8 B. 7 C. 6
#include
{ char *p=s; while(*p) p++; return(p-s); }
main()
{ char *a=\ int i; i=ss(a);
printf(\ }
D.5
二、填空题
1、若有定义:char ch;
(1)使指针p指向变量ch的定义语句是 。
(2)若已定义char *p;,使指针p指向变量ch的赋值语句是 。
(3)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是 。 (4)在(1)的基础上,通过指针p给变量ch赋字符’a’的语句是 。
(5)在(1)的基础上,通过指针p用格式输出函数输出ch中字符的语句是 。 2、以下程序输出的是 。
void main( ) { int i=3, j=2;
char *a=\DCBA\
- 33 -
printf(\ }
3、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。
void exchange(int *x, int *y) { int t;
t=*y; *y= ; *x= ; }
三、判断题
( )1、若定义 int a[5],*p=a; 则 *&a[5] 是对a数组元素的正确引用。 ( )2、若定义 int a[2][3]; 则 *(*(a+i)+j) 是对a数组第i行第j列元素的正确引用。
( )3、指针变量用于存放指针所指对象的地址。 ( )4、指针就是变量的地址。
( )5、通过指针可以间接引用指针所指的变量。 ( )6、“指针”与“指针变量”是同一个概念。 ( )7、一个指针变量只能指向同一类型的变量。 ( )8、可以给指针变量赋一个整型值。
( )9、所谓数组的指针就是指数组元素的地址。
五、选做题
程序填空:
1、下面程序的输出结果是 。 char b[]=\ABCD\ void main() { char *chp;
for(chp=b; *chp: chp+=2) printf(\ printf(\}
2、下面是一个字符串连接函数,请补充完整。
void mystrcat(char *s1,char *s2) { char *p,*q; for(p=s1; ; ); for( ;*q;q++) ; ;
}
- 34 -
- 35 -