C语言第八章 指针(2)

2019-08-20 18:44

int *p, a = 10, b=1; p = &a; a = *p*b;

A) 12 B) 编译出错 C) 10 D) 1

37.以下各语句或语句组中,正确的操作是 C 。(1级)

A) char s[5]=\B) char *s; gets(s);

C) char *s; s=\ D) char s[5]; scanf(\

38.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是 C 。(1级)

A) p+1 B) a+1 C) a++ D) ++p

39.下列语句行中,哪些语句能正确进行字符串赋值操作 B 。(1级)

A) char st[4][5]

B) char s[5]={?A?, ?B?, ?C?, ?D?, ?E?} C) char *s; s = “ABCDE”; D) char *s; scanf(“%s”,s);

40.以下程序的输出结果是 D 。(1级) #include void main(void)

{ char a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, *p = a+5;

printf(“%d”, *--p);

}

A) 非法 B) a[4]的地址 C) 3 D) 5

41.以下程序的运行结果是 C 。(2级)

#include void main(void)

{int a[4][3]={ 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12}; int *p[4], j;

for (j=0; j<4; j++) p[j]=a[j];

printf(\

}

A) 4, 4, 9, 8 B) 程序出错 C) 4, 2,12,11 D) 1, 1, 7, 5

42.若有下列说明和语句:int a[4][5], (*p)[5]; p = a; 则对a数组元素的正确引用是 B 。(1级)

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

43.若有以下定义和语句,则输出结果是 D 。(2级)

int **pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf(\

A)10,20 B)10,10 C)20,10 D)20,20 44.若有以下定义和语句,则输出结果为 A 。(1级)

char *sp=”\\t\\b\\\\\\0English\\n”; printf(“%d”,strlen(sp));

A)12 B)3 C)17 D)13

45.以下程序输出的结果是 C 。(2级)

void main()

{ int a=5,*p1,**p2; p1=&a,p2=&p1; (*p1)++;

printf(“%d\\n”,**p2); }

A) 5 B) 4 C) 6 D) 不确定

46.设void f1(int * m,long n);int a;long b;则以下调用合法的是 B 。(2级) A)f1(a,b); B)f1(&a,b); C)f1(a,&b); D)f1(&a,&b);

47.设int x;,则经过 B 后,语句*px=0;可将x值置为0。(1级) A) int * px; B)int * px=&x; C) float * px; D)float * px=&x;

48.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是 B 。

(1级)

A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;

49.以下定义语句中,错误的是 D 。(1级)

A) int a[]={1,2}; B) char *a[3]; C) char s[10]=\ D) int n=5,a[n]; 50.阅读以下函数 fun(char *sl,char *s2) { int i=0;

while(sl[i]==s2[i]&&s2[i]!='\\0') i++; return(sl[i]=='\\0'&&s2[i]=='\\0'); }

此函数的功能是 C 。(2级) A) 将s2所指字符串赋给s1

B) 比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C) 比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0 D) 比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

51. 若有以下定义:

int a[10],*p=a; 则*(p+3)表示的是 B 。(01~02第二学期试题)

A)元素a[3]的地址 B)元素a[3]的值 C)元素a[4]的地址 D)元素a[4]的值 52. 若有如下语句: int *p1,*p2;则其中int所指的是 D 。(01~02第二学期试题)

A)p1的类型 B)*p1和*p2的类型

C)p2的类型 D)p1和p2所能指向变量的类型 53. 有如下语句:

int a=5,b=8,*p1,*p2; p1=&a; p2=&b;

若有如下表达式: p1=p2; 则能正确表示该语句执行后变量在内存中的存储结构的图示为 D 。(01~02第二学期试题)

A) B) p1 5 a p1 5 a p2 8 b p2 8 b

C) D) p1 5 a p1 5 a

p2 8 b p2 8 b

54. 有如下语句 int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 如图1所示;若实现如图2所示的存储结构,可选用的赋值语句是: B 。(往届试题)

p1 p2 p1 p2

a b a b 10 20 10 20 图1 图2

A)*p1=*p2 B)p1=p2 C)p1=*p2 D)*p1=p2

55. 若有说明:int i, j , *p=&i ;则下面语句中与i =j;等价的语句是: A 。(往届试题)

A)*p=*&j ; B)i = *p C)i=&j ; D)i=**p 56. 以下程序的输出结果是 。(2级) main()

{char *s=\int k=0,a=0,b=0; do {k++;

if (k%2==0) {a=a+s[k]-'0';continue;} b=b+s[k]-'0; a=a+s[k]-'0'; }while(s[k+1]);

printf(\}

A)k=3 a=2 b=3 B)k=3 a=3 b=2 C)k=2 a=3 b=2 D)k=2 a=2 b=3 57. 设有以下定义:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0];

则下列能正确表示数组元素a[1][2]的表达式是 。(1级) A)*((*ptr+1)[2]) B)*(*(p+5))

C)(*ptr+1)+2 D)*(*(a+1)+2) 58. 执行以下程序后,y的值是 。(1级) 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(\ }

A) 17 B) 18 C) 19 D) 20

59. 阅读程序

#include main()

{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(\ printf(\ }

该程序有两个printf语句,假设第一个printf语句输出的是194,则第二个printf语句输出结果是 。(1级)

A)203 B) 204 C) 1a4 D) 1a6 60.下列程序的输出结果是 。(2级) main()

{static int num[5]={2,4,6,8,10};

int *n,**m; n=num; m=&n;

printf(\ printf(\ }

A) 4 4 B) 2 2 C) 2 4 D) 4 6 61.以下程序的输出结果是 。(2级) #include 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);

printf(\ }

A) 1 B) 7 C) 9 D) 11

62. int a[10],*p;下列表达式正确的是 。(1级)

A) p=a; B) p=a[0]; C) *p=&a[0]; D) p=&a;

63. 执行以下程序段后y的值为 。(1级) static int a[]={1,3,5,7,9}; int y,x,*ptr; y=1;

ptr=&a[1];

for(x=0;x<3;x++) y*=*(ptr+x);

A) 105 B) 15 C) 945 D) 无确定值 64.执行以下程序段后,m的值是 。(1级) static int a[]={7,4,6,3,10};

int m,k,*ptr; m=10; ptr=&a[0];

for(k=0;k<5;k++)

m=(*(ptr+k)

A) 10 B) 7 C) 4 D)3 65.执行以下程序段后,m的值为 。(1级) static int a[2][3]={1,2,3,4,5,6}; int m,*ptr; ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4));

A) 15 B)48 C) 24 D) 无定值

66.若有以下定义和语句 int w[2][3],(*pw)[3];pw=w; 则对w数组元素的非法引用是 。(1级)

A) *(w[0]+2) B) *(pw+1)[2] C) pw[0][0] D) *(pw[1]+2)

67.以下程序的输出结果是 。(1级) Static int a[2][3]={1,2,3,4,5,6},(*p)[2],I; p=a;

for (I=0;I<3;I++)

printf(\

A) 输出不确定 B) 3 4 5 C) 2 3 4 D) 4 5 6

68.若有以下定义

int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的表达式是 。(1级)

A) p+=2,*(p++) B) p+=2,*++p C) p+=3,*p++ D)p+=2,++*p

69.若有以下定义和语句

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则不能表示a数组元素的表达式是 。(1级)

A) *p B) a[10] C) *a D) a[p-a] 70.设char ﹡﹡s;以下正确的表达式是 。(2级)

A)s=〞computer 〞; B)﹡s=〞computer 〞; C)﹡﹡s=〞computer 〞; D)﹡s=?c?;

二、填空题

1.若有定义:int a[2][3]={2,4,6,8,10,12};则﹡(&a[0][0]+2﹡2+1)的值是 ,﹡(a[1] +2)的值是 。(1级) 2.完成以下有关数组描述的填空。(0级)

(1) C语言中,数组名是一个不可改变的 ,不能对它进行赋值运算。 (2) 数组在内存中占用一段连续的存储空间,它的首地址由 表示。 3.定义语句int ﹡f ( );和int (﹡f) ( );的含义分别为 和 。 4.在C程序中,指针变量能够赋 值或 值。(0级)


C语言第八章 指针(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:功、功率、机械效率计算题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: