31、若有以下定义和语句:
char
*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是_____ A)4 B)5
C)9 D)10
[A] 教师批改:A
32、下面程序的输出是
#include
main()
{
char*a="abcdefgh";
fun(a);puts(a); }
fun (char
* s)
{ int
x=0,y;char c;
for(y=strlen(s)-1;x
c=s[x];s[x]=s[y];s[y]=c;} }
A)abcdefgh B)hgfdecba
C)dcbahgfe D)hgfedcba
[D] 教师批改:D
33、设有如下函数定义:
int
f(char *s)
{ char *p=s;
while(*p!=‘\0‘) p++;
return(p-s); }
如果在主程序中用下面的语句调用上述函数,则输出结果为
printf("%d\n",f("goodbey!")); A) 3 B)
6
C) 8 D) 0
[C] 教师批改:C
34、下面函数的功能是
int
funl(char * x)
{ char *
y=x;
while(*y++);
return(y-x-1);} A) 求字符串的长度 B)
比较两个字符串的大小
C) 将字符串x复制到字符串y D)
将字符串x连接到字符串y后面
[A] 教师批改:A
35、请读程序片段:
char
str[]="ABCD", *p=str;
printf("%d\n",*(p+4));
上面程序的输出结果是 A) 68 B) 0
C) 字符"D"的地址 D) 不确定的值
[B] 教师批改:B
36、设有如下的程序段:
char str[
]="Hello";
char
*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为 A) ‘o‘ B)
‘\0‘
C) 不确定的值 D) ‘o‘的地址
[B] 教师批改:B
37、设有以下语句:
char
str[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4];
int
i;
for(i=0;i<4;i + + )strp[i]=str[i];
(
)不是对字符串的正确引用,其中0≤k<4。 A) strp B)
str[k]
C) strp[k] D) *strp
[A] 教师批改:A
38、假设指针p1已经指向了某个整型变量,要使指针p2也指向同一个变量,则下面各项中正确的是:
A.p2=**p1 B.p2=*&p1
C.p2=*p1 D.p2=&*p1
[D] 教师批改:D
39、若有以下定义和语句:
char *s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是 A.4 B.5
C.9 D.10
[A] 教师批改:A
40、下列程序段的输出结果是
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);
} A.2 1 4 3 B.1 2 1 2
C.1 2 3 4 D.2 1 1 2
[A] 教师批改:A
41、以下程序的输出结果是
fut( int **s,int p[2][3])
{ **s=p[1][1];}
main( )
{ int a[2][3]={1,3,5,7,9,11},*P;
p=(int *)malloc(sizeof(int));
fut(&p,a);
print("% ",*p);
}
A.1 B.7
C.9 D.11
[C] 教师批改:C
42、假设指针p已经指向某个整型变量x,则*p相当于:
A.&x B.&p
C.x D.*x
[C] 教师批改:C
43、若有定义:int a[3][4];不能表示数组元素a[1][1]的是
A.*(a[1]+1) B.*(&a[1][1])
C.(*(a+1))[1] D.*(a+5)
[D] 教师批改:D
44、若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;
printf("%d,%d\n",*p,**pp);
则输出结果是() A.10,10 B.10,20
C.20,10 D.20,20
[D] 教师批改:D
45、若有以下的定义: int a[]={1,2,3,D,5,6,7,8,9,10},*p=a 则值为3的表达式是
A.p+=2,*(p++) B.p+=2,*++p
C.p+=3,*p++ D.p+=2,++*p
[A] 教师批改:A
46、若有以下定义和语句:
int a[10]={1,2,3,D,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是 A.*p B.a[10]
C.*a D.a[p-a]
[B] 教师批改:B
47、若有以下定义和语句: int w[2][3],(*pw)[3];pw=w; 则对w数组元素的非法引用是()
A.*(w[0]+2) B.*(pw+1)[2]
C.pw[0][0] D.*(pw[1]+2)
[A] 教师批改:A
48、设有定义:
struct sk{
int a;
float b;
}data,*p;
若有p=&data;,则对data中的a域的正确引用是
A.(*p).data.a B.(*p).a
C.p->data.a D.p.data.a
[B] 教师批改:B
49、设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是
A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组
C.aa数组的两个元素分别存放的是含有D个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址
[D] 教师批改:D
50、以下c语言函数声明中,不正确的是: A.void fun (int x, int
y); B.fun (int x, int y);
C.int fun (int x,y); D.char *fun (char
*s);
[C] 教师批改:C
51、以下程序输出的值为?
main()
{ int a[ ]={1,2,3,D,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*p+9);
} A.1 B.9
C.10 D.0
[C] 教师批改:C
52、有以下程序
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},
*p=&a[3], *q=p+2;
printf("%d\n", *p + *q);
}
程序运行后的输出结果是_____。 A)16 B)10
C)8 D)6
[B] 教师批改:B
53、若有语句:char *line[5];,以下叙述中正确的是( )
A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针
[A] 教师批改:A
54、有以下程序
main()
{ int a[]={2,4,6,8,10}, y=0, x, *p;
p=&a[1];
for(x= 1; x<3; x++) y += p[x];
printf("%d\n",y);
}
程序运行后的输出结果是_____。 A)10 B)11
C)14 D)15
[C] 教师批改:C
55、有以下程序
prt(int *m,int n)
{
int i;
for(i=0;i
m[i]++;
}
main()
{
int a[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是_____。 A)1,2,3,4,5, B)2,3,4,5,6,
C)3,4,5,6,7, D)2,3,4,5,1,
[B] 教师批改:B
56、有以下程序
#include
main()
{int
a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d %d\n",*p,*q);
}
程序运行后的输出结果是_____。 A) 运行后报错 B) 6
6
C) 6 11 D) 5 10
[A] 教师批改:A
57、已有定义:int i,a[10],*p;,则合法的赋值语句是_____。 A)
p=100; B) p=a[5];
C) p=a[2]+2; D) p=a+2;
[D]
教师批改:D
58、有以下程序段
int
a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是_____。 A) 5 B) 6
C) 8 D) 9
[D] 教师批改:D
59、有以下程序
void
sum(int *A)
{
a[0]=a[1];}
main(
)
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) &nb
sp; sum(&aa[i]);
printf(“%d\n”,aa[0]);
}
执行后的输出结果是_____。 A) 4 B) 3
C) 2 D) 1
[A] 教师批改:A
60、有以下程序
main()
{ int
x[8]={8,7,6,5,0,0},*s;
s=x+3
printf("%d\n",s[2]);
}
执行后输出结果是_____。 A) 随机值 B) 0
C) 5 D) 6
[B] 教师批改:B
61、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#define N 10
void arrin(int x[N])
{ int
i=0;
while(i
scanf("%d", );
}
在下划线处应填入的是_____。 A) x+i B)&x[i+1]
C)x+(i++) D)&x[++i]
[C] 教师批改:C
62、以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
{
int *p,*s;
for(p=a,s=a; p-a
if
( ) s=p;
return(*s);
}
main()
{
int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是_____。 A) p>s B)
*p>*s
C) a[p]>a[s] D)
p-a>p-s
[B] 教师批改:B
63、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是_____。 A)
&aa[0]+1 B)
&aa[1]
C) &aa[0]++ D)
aa+1
[C] 教师批改:C
64、下列程序的输出结果是_____。
main()
{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf(“%d”,*--p);
} A)
非法 B)a[4]的地址
C)5 D)3
[C] 教师批改:C
65、下面程序的输出结果是_____。
main()
{ int a[
]={1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
printf(“%d\n”,*p+9);
} A)
0 B) 1
C) 10 D) 9
[C] 教师批改:C
66、以下程序的输出结果是_____。
main()
{ int i, k, a[10], p[3];
k=5;
for
(i=0;i<10;i++) a[i ]=i;
for
(i=0;i<3;i++) p[i ]=a[i *(i+1)];
for
(i=0;i<3;i++) k+=p[i] *2;
printf(“%d\n”,k);
} A)
20 B) 21
C) 22 D)23
[B] 教师批改:B
67、以下函数返回a所指数组中最小的值所在的下标值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;i
if(a[i]
return(p);
}
在下划线处应填入的是_____。 A) i=p B)
a[p]=a[i]
C) p=j D) p=i
[D] 教师批改:D
68、若已定义:
int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;
其中 0≤i≤9, 则对a数组元素不正确的引用上_____。 A) a[p-a] B)
*(&a[i])
C) p[i] D) a[10]
[D] 教师批改:D
69、下列程序执行后的输出结果是_____。
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{ int a,b[5];
a=0; b[0]=3;
func(&a,b); printf("%d
\n,b[0]);
} A) 6 B) 7
C) 8 D) 9
[A] 教师批改:A
70、若有以下调用语句,则不正确的fun函数的首部是_____。
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
} A) void fun(int m, int x[]) B) void fun(int s,
int h[41])
C) void fun(int p, int *s) D) void fun(int n,
int a)
[C] 教师批改:C
71、以下程序的输出结果是_____。
main( )
{ char a[10]={‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,0},*p;
int i;
i=8;
p=a+I;
printf("%s\n",p-3);
} A)6 B) 6789
C) ‘6‘ D) 789
[B] 教师批改:B
72、下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是_____。
main( )
{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I;
for(i=o;i<10;i++,p++)
if(________) *a=*p;
printf("%d",*a);
} A) p>a B)
*p>a[0]
C) *p>*a[0] D)
*p[0]> *a[0]
[B] 教师批改:B
73、设有如下定义:
int
arr[]={6,7,8,9,10};
int *
ptr;
则下列程序段的输出结果为_____。
ptr=arr;
*
(ptr+2)+=2;
printf
("%d,%d\n",*ptr,*(ptr+2)); A) 8,10 B)
6,8
C) 7,9 D) 6,10
[D] 教师批改:D
74、若有以下定义和语句:
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]
[B] 教师批改:B
75、若有以下的定义:
int
a[]={1,2,3,4,5,6,7,88,9,10}, *p=a;
则值为3的表式是_____。 A) p+=2, *(p++) B)
p+=2,*++p
C) p+=3, *kp++ D)
p+=2,++*p
[A] 教师批改:A
76、若有以下说明:
int
a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为6的表达式是_____。 A) *p+6 B)
*(p+6)
C) *p+=5 D) p+5
[C] 教师批改:C
77、下列程序的输出结果是_____。
main(
)
{ int
a[5]={2,4,6,8,10},*P,* *k;
p=a; k=&p;
printf("%d",*(p++)); printf("%d\n",*
*k); } A) 4 4 B) 2 2
C) 2 4 D)
4 6
[C] 教师批改:C
78、执行以下程序后,y的值是_____。
main (
)
{ int
a[]={2,4,6,8,10};
int
y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++) y + = * (p +
x);
printf("%d\n",y); } A) 17 B) 18
C) 19 D) 20
[C] 教师批改:C
79、下面程序的输出是_____。
main()
{ int
a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));} A) 3 B)
4
C) 1 D) 2
[A] 教师批改:A
80、以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
# include
findmax (
s , t , k )
int *s , t , *k;
{ int p; for(p=0,*k=p;p
if ( s[p] > s[*k] )_________; }
main()
{ int a[10] , i , k ;
for ( i=0 ; i<10 ; i + + ) scanf("%d",&a[i]);
findmax ( a,10,&k );
printf ( "%d,%d\n" , k , a[k]
); } A) k=p B)
*k=p-s
C) k=p-s D) *k=p
[D] 教师批改:D