1Y27周末

1.变量的指针,其含义是指该变量的_B

a)值

b)地址

c)名

d)一个标志

2.若有语句int *point,a=4:和point=&a;下面均代表地址的一组选项是__D_

a)a,point,*&a

b)&*a,&a, *point

c)*&point, *point,&a

d)&a,&*point. point

3.若有说明;int *p,m=5,n;以下正确的程序段的是_D_.

a)p=&n;   scanf("%d". ,&p); .

b)p=&n;  scanf("%d",*p);

c)scanf"%d", ,&n);  *p=n;

d)p=&n;   *p=m;

4.以下程序中调用scanf函数给变量s输入数值的方法是错误的,其错误原因是_一B

main{}

int *p,*q,a,b;

p=&a;

printf("input a:");

scanf"%d",*p);

}

a)*p表示的是指针变量p的地址

b)*p表示的是变量a的值,而不是变量a的地址

c)*p表示的是指针变量p的值

d)*p只能用来说明p是一个指针变量

5.贿变量定义和函数调用语句: int a=25; print_ value(&a);" 下面函数的正确输出结果是_D_.

void print_ _value(int *x)

{ printf("%d\n",++*x);}

a)23 b)24 c)25 d)26

6.若有说明: long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是  B

A) *p=&a; seanf("%l!", p);

B) p=(long *)malloe(8); scanf("%!", p);

C) scanf("%ld",p=&a);

D) scaf("%l!",&a);

7.有以下程序    B

#include<stdio.h>

main()

{ int m=1,n=2,*p=&m, *q=&n,*r;

R=P:P=q;q=r;

printf("%d,%d,%d,%d\n" ,m,n,*p.*q); .

}程序运行后的输出结果是

A) 1,2, 1, 2

B) 1,2, 2, 1

C)2,1,2,1

D)2,1,1,2

8.有以下程序  B

main()

{ int a=1, b=3, c=5;

int *p1=&a, *2=&b, *p=&c; .

*p=*p1*(*R2);

printf("%d\n",c); .

}执行后的输出结果是

A) 1

B) 2

D) 4

9.有以下程序  C

main()

{ int a,k=4,m=4,*1=&k,*p2=&m;

a=p!== &m;

pxint("%d\n",a);

}程序运行后的输出结果是( )

A) 4  B)1  C)0   D)运行时出错,无定值

10.在16位编译系统上,若有定义int a[]={10.20,30}, *p=&a;,当执行p++;后,下列说法错误的是(   A )

A) p向高地址移了-个字节

B) p向高地址移了一个存储单元

C) p向高地址移了两个字节

D) p与a+1等价

11.有以下程序段

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], b; b=p[5]; b中的值是(D )

A)5   B)6   C)8    D)9

12.若有以下定义,则对a数组元素的正确引用是   D

int a[5];*p=a;

a)*&a[5]   b)a+2    c)*(p+5)   d)*(a+2)

13.若有以下定义,则p+5表示__.A

int a[10],*p=a;

a)元素a[5]的地址

b)元素a[5]的值

c)元素a[6]的地址

d元素a[6]的值

14.设已有定义: int a[10]={15,12,731.47,20,16,28,13,19}, *p; 下列语句中正确的是(     )

A) for(p=a;a<(p+10);a++);

B) for(p=a;p<(a+10);p++);

C) for(p=a;a=a+10;p<a;p++);

D) for(p=a;a<p+10; ++a);

15.有以下程序段

#include <stdio.h>

int main(

{

intx[]= {10, 20, 30};

int *px=x;

print("%d,", ++*px); print("%d,", *px); .

px=x;

print("%d,", (*px)++); printf("%d,", *px); .

px=x;

printf("%d,", *px++); printf("%d,", *px);

px=x;

printf("%d.,", *++px); printf("%dn", *px); .

return 0;

}程序运行后的输出结果是(  A )

A) 11,11,11,12,12,20,20,20

B) 20,10,11,10,11,10,11,10

C) 11,11,12,12,13,20,20

D) 20,10.11,20.11,12,20,20

16.设有如下定义则程序段的输出结果为 D

int ar[]={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

17.若有定义:int a[={2.4,6,8,10,12},*p=a; 则*(p+1)的值是   4   , *(a+5)的值是  12    

18.若有以下说明和语句,int c[4][5](*p)[5]; p=c;能正确引用c数组元素的是__D

A)p+1  B) *(p+3)  C) *(p+1)+3   D) *(p[0]+2))

19.若有定义: int a[2][3].则对a数组的第i衍j列元素地址的正确引用为     a[i][j],*(*(a+i)+j),*(a[i]+j)    

20.若有以下定义:int a[2][3]={2,4.6,8,10,12};则a[1][0]的值是      8    . *(*(a+1)+0)的值是  8     

21.有以下定义char a[10].*b=a;不能给数组a输入字符串的语句是(   B   )

A)gets(a)   B)gets(a[0])   C)gets(&a[0]);   D)gets(b); .

22.下面程序段的运行结果是__   C.

char *s="abcde*";

s+=2;  printf("%d", s);

a)ede   b)字符   c )字符c的地址    d)无确定的输出结果

23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(   C  )

A) char s[10]="abcdefg";   B) char t[]="abcdefg",*s=t;

C) char s[10];s="abcdefg";  //s单独存在时是常量   D) char s[0];tcpy(,"abcdefg");

24.设已有定义: char *st="how are you";下列程序段中正确的是(  D      )

A) char a[11], *p; strcpy(p=a+1,&st[4);

B)char a[11]; strcpy(++a, st);

C)char a[11]; strcpy(a, st);

D) char a[], *p; strcpy(p=&a[1], st+2);

25.有以下程序输出结果是(   D  )

main()

char a[]="programming" ,b[]="language";

char *p1,*p2;

int i;

p1=a:p2=b;

for(i=0;i<7;i++)

if(*(p1+i)==*(p2+i))

printf("%c",*(p1i));

A)gm B)rg   C) or    D)ga

26.设p1和p2是指向同一个字符串的指针变量, c为字符变量,则以下不能正确执行的赋值语句    B

a)c=*p1+*p2;   b)p2=c    c)p1=p2    d)c=*p1*(*p2);

27.以下正确的程序段是_

a)char str[20];

b)char *p;

scanf("%s" ,&str); .

scanf("%s";p);

c)char str[20];

d)char str[20],*p=str;

scanf("%s" ,&str[2]);

scanf("%s" , p[2]);

28.若有说明语句则以下不正确的叙述是 A

char a[]="It is mine";

char *p="It is mine'";

a)a+1表示的是字符的地址

b)p指向另外的字符串时,,字符串的长度不受限制

c)p变中存放的地址值可以改变

d)a中只能存放10个字符

29. 下面程序的运行结果是  B

#include <stdio.h>

#include <string.h>

main()

{ char *s1="AbDeG";

char *s2="AbdEg";

s1+=2;s2+=2;

printf("%d\n",strcmp(51.s2));

  1. 正数  b)负数 c)零  d)不确定的值

30.有以下程序运行后的输出结果是_。A

void f(int *x,nt *y)

intt;

t=*x;*x=*y;*y=t;

main()

int a[8-={1,23.4.5,6.7,8},i=0.*p.*q:

p=a;q=&a[7];

while(*p!=*q && i<8){f(p,q); p++;q--;i++;}

for(i=0;i<8;i+ +) printf("%d," ,a[i]);

A) 8,2,3,4,5,6,7,1, B) 5,6.7,8.1.2.3.4.

C) 1,2,3,4,5,6,7,8, D) 8,7,6,5,4,3,2,1,

31.定义以下函数  C

fum (int *p)

{ return *p; }

该函数的返回值是

A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D) 形参p的地址值

32.有以下程序

int f(int b[[4])

{

int i,j,s=0;

for(j=0; j<4; j++)

{

 i=j

if(i>2) i=3-j;

s+=b[i][i];

}

return s;

}

main()

{

int a[4]4] = {{1,2,3,4},{0,2,4,5}.{3,6,9,12}, {3,2,1,0}};

printf("%d\n" f(a));

}执行后的输出结果是  D

A)12   B)11 C)18   D) 16

33.若有以下函数首部则下面针对此函数的函数声明语句中正确的是  D

int fun(double x[10], int *n)

A) int fun(double x, int *n); B) int fun(double , int );

c) int fun(double *x, int n); D) int fun(double *, int *);

34.有以下程序执行后的输出结果是( )  A

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--) sum(&aa[i]);

printf("%d\n", aa[0]);

A)4   B)3   C)2   D)1

35.下段代码的运行结果是:  D

int main()

char a;//段错误

char *str=&a;

strcpy(st "hello");

puts(str);

return 0;

}

  1. hello B)null C)h D)发生异常

36.下段程序的运行结果是  B

void main()

char *p, *q; .

char str[]="Hello,World\n";

q=p= str;

p++;

print(q);

print(p);

void print(char *s){printf(“%s”, s);}

A)H e

B)Hello, World elle, World

C)Hello, World Hello, Worl

D)elle, World ell, World

37.有以下程序    D

void fiun(char *c; int d){

*c=*c+1;

d=d+1;

pintf("%c,%c" ,*c, d);

}

void main(){

char a='A',b='a';

fun(&b,a);

printf("%c,%c\n", a,b);

}

程序运行后的输出结果是_。

A)B.,a,B,a B)a,B,a,B

C)A,b,A,b D) b,B,A,b

38、下面选项属于函数指针的是:   A

A. (int*)p(int, int)  B. int *p(int, int)   c、两者都是   D.两者都不是

39、若有函数max(a,b), 并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是_D

A)(*p)max(a, b);

B)*pmax(a,b);

C)(*p)(a,b); D) *p(a,b);

41、下列选项中声明了一个指针数组的是 : B

A)int *p[];   B)int (*p)[2];

C)typedef int* intPtr; intPtr p[2];

D)A和B

E)A和C

F)B和C

42、下面代码能通过编译的是: A

A)int main( ){

int a[3]={1,2,3};

int *b[3]={&a[1].&a[2],&a[3]};

int**p=b;

return 0;

}

B)int main(){

int a[3]={1,2,3};

int *b[3]= {a[1],a[2], a[3]};

int**p=b;

}

C)int main(){

int a[3]={1,2,3};

int *b[3]={&[1].&a[].&a[3]};

int*p=b;

return 0;

}

D)int main(){

int a[3]={.23};

int *b[3]={&a[1],&a[2],&a[3};

int *p= &b;

return 0;

}

A) pa是一个指向数组的指针,所指向的数组是5个int型元素int (*p)[5]   D

B)pa是一个指向某数组中第5个元素的指针,该元素是nt型变量

C)pa [5]表示某个元素的第5个元素的值

D) pa是一-个具有5个元素的指针数组,每个元素是一个int型指针

44、若有以下定义,且0<=i<4, 则不正确的赋值语句是

int b[4][6], *p, *q[4]:

A)q[i]=b[i];  B)p=b;  C) p=b[i]    D) q[i] = &b[0][0];

45、若要对进行++运算,则a应 具有下面说明__    C D

A) int a[3][2];  B) char *a[]= {“12”,"ab"};

C) char (*a)[3];  D) int b[10], *a=b; .

46、 若有以下说明语句:   C

char *language[]= {'FORTRAN","BASIC'","PASCAL","JAVA","C"};  char**q;  q= language +2;

printf(“%o\n”, *q);

A) lnguage[2]元素的地址;

B)字符串PASCAL

C) language[2]元素的值,它是字符串PASCAL的首地址

D)格式说明不正确,无法得到确定的输出

47、 若有以下程序:C

void main)

char *a[3]= {'"Iove","China"};

char **ptr=a;

print("%c %s" , *(*(a+1)+1), *(ptr+1) );

这段程序的输出是()

A)I  l

B)o o

C)o love

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值