avg =
main( )
{ int i; a[5]={2,4,6,8,10}; float mean;
mean=average(a,5);
printf(“mean=% f \\n”,mean); }
第五章 指针
一、 判断题(正确的填A,错误的填B)
R1.变量的指针,其含义是指该变量的地址。(A) N2.有以下语句
static int a[]={0,1,2,3,4},*p; p=&a[2];
则表达式(*p)++执行后,指针p指向的元素值是2。( B ) 3 R3.变量的指针,其含义是指该变量的数值。( B ) 4. 有以下语句
static int a[]={0,1,2,3,4},*p; p=&a[1];
则表达式(*p)++执行后,指针p指向的元素值是2。( A ) B 5.若 p 是指向结构体 s 的指针,则 (*p).n 和 (&s)->n 等效。(B) 6、char *p[10];p是指向数组的指针。(B) (9)设:char *px;则赋值表达式px=\正确(A)
N(10)设:int a[3]={1,2,3},*pa;则赋值表达式px=&a正确(B) 7. int *p[5]定义的是一个指针数组。( A) 8. int (*p)[5]定义的是一个指针数组。( B ) 9.当main函数带有形参时,传给形参的值只能从命令行中得到。(A)
下列说法中不正确的是( )
R10.指针是一个变量 11.指针中存放的是地址值
12.指针可以进行加、减等算术运算 13.指针变量不占用存储空间 设变量定义为“int x, *p=&x;”,则&*p相当于___________。
N18)p 19)*p 20)x 21)*&x 设变量定义为“int a[4];”,则表达式 不符合C语言语法。
22)*a 23)a[0] 24)a 25)a++ 已知:int *p, a;则语句“p=&a; ”中的运算符“&”的含义是( )
26、位与运算 27、逻辑与运算 28、取指针内容 29、取变量地址 intn=0,*p=&n,**q=&p;则正确的赋值语句是
30 p=1;31)*q=2;32)q=p;33)*p=5; 二、
单项选择题
1有以下程序(设其文件名为2-5.c) #include
void main(int argc,char *argv[]) { int i; char *p;
printf(\ if(argc>2) p=argv[1]; puts(p+1); }
若运行该程序时,在命令行提示符后输入 2-5 file1 file2 file3
则执行printf(“%d”,argc);时,输出结果为( 4) A 1 B 2 C 3 D 4
2有以下程序(设其文件名为2-5.c) #include
void main(int argc,char *argv[]) { int i; char *p;
printf(\ if(argc>2) p=argv[1]; puts(p+1); }
若运行该程序时,在命令行提示符后输入 2-5 file1 file2 file3
则执行puts(p+1);时,输出结果为( ile1) A file1 B file2 C ile1 D ile2
R3. 变量I的值为3,I的地址为1000,若欲使p为指向I的指针变量,则下列赋值正确的是___________。
A)&I=3 B)*p=3 C)*p=1000 D)p=&I 4.
有如下程序
#include
void fun(int *x,int *y) { int *z; z=x;x=y;y=z; }
void fun2(int *x,int *y) { int z;
z=*x; *x=*y; *y=z; (*x)++; (*y)++; }
void main() { int a=5,b=9; fun1(&a,&b);
printf(“a=%d,b=%d\\n”,a,b); fun2(&a,&b);
printf(“a=%d,b=%d\\n”,a,b); }
main函数中第一个printf输出结果为()
(A)a=9,b=5 (B)a=5,b=9 (C)a=10,b=6 (D)a=6,b=10 R5、
若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10};*p=a; 则不能表示a数组元素的表达式是( )。 A、*p B、a[10] C、*a D、a[p-a] 6、有以下程序 main() {
int a[3][3],*p,i; p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf(\}
程序运行后的输出结果是
A 0 1 2 B 1 2 3 C 2 3 4 D 3 4 5 7以下程序的输出结果为_________。 char *alpha[6]={“ABCD”,”EFGH”,”IJKL”,”MNOP”,”QRST”,”UVWX”}; char **p; main() {
int i; p = alpha;
for(i=0;i<4;i++) printf(“%c”,*(p[i])); printf(“\\n”); }
A) AEIM B) BFJN C) ABCD D) DHLP 8.下面程序输出数组中的最大值,由s指针指向该元素。
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p,*s;
for(p=a,s=a;p-a<10;p++) if( ) s=p; printf(“The max:%d”,*s); }
则在if语句中的判断表达式应是( )
A、p>s B、*p>*s C、a[p]>a[s] D、p-a>p-s R9(3)若有定义int *x[3],b[10];则正确的赋值语句是( )
A.x=b[0]; B.x=b; C.x[0]=b[0]; D.x[0]=&b[0]; R10若有以下定义,则______是对数组元素的正确引用。 int a[5],*p=a
A). *&a[4] B、*(p+5) C、*++a D、*(p-1)
11.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是 A)chars[10]=”abcdefg”; B)chart[]=”abcdefg”,*s=t; C)chars[10];s=”abcdefg”;
D)chars[10];strcpy(s,”abcdefg”);
N12.#include
int find(char *s1, char *s2) {
int t;
char *p1,*p2;
for(t=0;s1[t];t++) {
p1=&s1[t]; p2=s2;
while(*p2&&*p2==*p1)//先算*p2==*p1 {
p1++; p2++; }
if(!*p2) return(t); }
return -1; } main() {
if(find(“c is fun”,”is”)!=-1) L1: printf(“is”);
if(find(“c is fun”,”Basic”)!=-1) L2:printf(“basic\\n”);
相关推荐: