C程序设计语言练习题
第三部分
63.已知:int x; 则下面说明指针变量pb的语句 是正确的。
A) int pb=&x; B)int *pb=x; C)int *pb=&x D)*pb=*x;
64.有如下程序段:
int *p,a,b=1;
p=&a;*p=10;a=*p+b;
执行该程序段后,a值是 。
A) 12 B) 11 C) 10 D) 编译出错
65.若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是 。
A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;
66.已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为______。
A) *&p B) *p C) p[0] D) *&a
67.已知static int a[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__。
A) *(a+1) B) a[1]+2 C) a[1]+3 D) a[0][0]
68.已知int a[3][4],*p=*a; p+=6;那么*p和______的值相同。
A) *(a+6) B) *(&a[0]+6) C) *(a[1]+2) D) *(&a[0][0]+6)
69.已知说明int (*p)[M]; 其中p是______。
A) M个指向整型变量的指针
B) 指向M个整型变量的函数指针
C) 一个指向具有M个整型元素的一维数组的指针
D) 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
70.若有定义和语句:int c[4][5], (*cp)[5]; cp=c;则对c数组元素的引用正确的是哪个?
A)cp+1 B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2)
71.设有以下定义 :
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是__________。
A) *((*prt+1)[2]) B) *(*(p+5)) C) (*prt+1)+2 D) *(*(a+1)+2)
72.若有以下定义和语句:
int w [2][3],(*pw)[3]; pw=w;
则对w数组元素的非法引用是_________。
A) *(pw[0]+2) B) *(pw+1)[2] C) pw[0][0] D)*(pw[1]+2)
73.若有以下说明和定义:
fun(int *c) {…}
void main()
{int(*a)(int*)=fun,*b(),w[10],c;
:
}
在必要的赋值之后,对fun()函数的正确调用语句是______。
A)a=a(w); B)(*a)(&c); C)b=*b(w); D)fun(b);
74.已知double *p[6]; 它的含义是______。
A) p是指向double类型变量的指针 B) p是double类型数组
C) p是double类型指针数组 D) p是double类型数组指针
75.设有定义:int n=0,*p=&n,**q=&p; 则______是正确的赋值语句。
A) p=1; B) *q=2; C) q=p; D) *p=5;
76.以下选项中,错误的赋值是_________
A) char s1[10]; s1=”Ctest”;
B) char s2[]={‘C’,‘t’,‘e’,‘s’,‘t’};
C) char s3[20]=”Ctest”;
D) char *s[4]={”Ctest\n”};
77.若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p; p=&b;printf(“%d,%d\n”,*p,**pp);
则输出的结果是______。
A) 10,20 B) 10,10 C) 20,10 D) 20,20
78.以下程序编译连接后生成的可执行文件是,若运行时输入带参数的命令行是:ex1 abcd efg 10<回车> ,则运行的结果是什么?9
#include <string.h>
main(int argc,char *argv[])
{int i,len=0;
for(i=1;i<argc;i++) len+=strlen(argv[i]);
printf("%d\n",len);
}
79.说明语句int (*p)();的含义是______。
A) p是一个指向一维数组的指针变量
B) p是一个指针变量,指向一个整型数据
C) p是一个指向函数的指针,该函数的返回值是一个整型数据
D) 以上都不对
80.说明语句int *(*p)();的含义是______。
A) p是一个指向int 型数组的指针
B) p是一个指针变量,它构成了指针数组
C) p是一个指向函数的指针,该函数的返回值是一个整型数据
D) p是一个指向函数的指针,该函数的返回值是一个指向整型数据的指针
81.说明语句void *f();的含义是______。
A) 函数f的返回值是一个通用型的指针
B) 函数f的返回值可以是任意的数据类型
C) 函数f没有返回值
D) 指针f指向一个函数,该函数无返回值
82.已知char **s; 正确的语句是_______。
A)s=“book” B)*s=“book”;
C)**s=“book” D)strcpy(*s, “book”);
83.阅读以下函数,说出每个函数的作用
(1)计算1+2+3+.....+n
sum(int n)
{ if(n==1) return 1;
else return sum(n-1)+n;
}
(2)计算字符串的长度
int strtry(char *s)
{ if(*s==’\0’) return 0;
else return strtry(s+1)+1;
}
(3)有n个元素的数组逆置
void change(int *a,int n)
{ int t;
t=*a; *a=*(a+n-1); *(a+n-1)=t;
if(n>2) change(a+1,n-2);
}
(4) 字符串的长度加1
ABC(char *ps)
{ char *p;
p=ps;
while(*p++);
return p-ps;
}
84.对于基类型相同的两个指针变量之间,不能进行的运算是______。
A) < B) = C) + D) -
85.不合法的main函数命令行参数表示形式是
A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
86.写出下面各程序段的输出结果
(1)
static char a[]=”Basic”;
char *p;
for(p=a; p<a+5; p++) printf(“%s\n”,p);
for(p=a; p<a+5; p++) printf(“%c\n”,*p);
Basic
asic
sic
ic
c
B
a
s
c语言中structi
c
(2) a=36 b=16 c=19
void main()
{ int a=1,b=2,c;
c=func(a,&b);
b=func(c,&a);
a=func(b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
int func(int a,int *p)
{ a++;
*p=a+2;
return(*p+a);
}
(3) 2 1 4 3
void fun (int *x,int *y)
{printf(“%d %d”,*x,*y);
*x=3;
*y=4;
}
main()
{int x=1,y=2;
fun(&y,&x);
printf(“%d %d”,x,y);
}
(4)5
ss(char *s)
{char *p=s;
while (*p) p++;
return (p-s);
}
main()
{ char *a= “abded”;
int i;
i=ss(a);
printf(“%d\n”,i);
}
(5)0
void fun(int *n)
{ while((*n)--);
printf(“%d”,++(*n));
}
main()
{int a=100;
fun(&a);
}
(6) 2 4
main()
{int a[5]={2,4,6,8,10},*p,**k;
p=a; k=&p;
printf(“%d”,*(p++));
printf(“%d\n”,**k);
}
(7) 9
main()
{int a[2][3]={1,3,5,7,9,11},*s[2],**pp,*p;
s[0]=a[0],s[1]=a[1];
pp=s;
p=(int*)malloc(sizeof(int));
**pp= s[1][1];
p=*pp;
printf(“%d\n”,*p);
}
(8)字符串的长度
func( char str[] )
{int num=0;
while (*(str+num)!=‘\0’)
num++;
return (num);
}
main()
{char str[10],*p=str;
gets(p);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论