A) 非法 B) a[4]的地址 C) 3 D) 5
42.若有下列说明和语句:int a[4][5], (*p)[5]; p = a; 则对a数组元素的正确引用是 。
A) p+1 B) *(p+3) C) *(p+1)+3 D) *(*p+2)
44.若有以下定义和语句,则输出结果为 。
char *sp=”\\t\\b\\\\\\0English\\n”; printf(“%d”,strlen(sp));
A)12 B)3 C)17 D)13
47.设int x;,则经过 后,语句*px=0;可将x值置为0。
A) int * px; B)int * px=&x; C) float * px; D)float * px=&x;
48.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是 。
A) i=*p; B) *p=*&j; C) i=&j; D) i=**p;
51. 若有以下定义:
int a[10],*p=a; 则*(p+3)表示的是 。
A)元素a[3]的地址 B)元素a[3]的值 C)元素a[4]的地址 D)元素a[4]的值 52. 若有如下语句: int *p1,*p2;则其中int所指的是 。
A)p1的类型 B)*p1和*p2的类型
C)p2的类型 D)p1和p2所能指向变量的类型 53. 有如下语句:
int a=5,b=8,*p1,*p2; p1=&a; p2=&b;
若有如下表达式: p1=p2; 则能正确表示该语句执行后变量在内存中的存储结构的图示为 。
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所示的存储结构,可选用的赋值语句是: 。
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)*p=*&j ; B)i = *p C)i=&j ; D)i=**p 56. 以下程序的输出结果是 。 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]的表达式是 。 A)*((*ptr+1)[2]) B)*(*(p+5))
C)(*ptr+1)+2 D)*(*(a+1)+2) 58. 执行以下程序后,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(\ }
A) 17 B) 18 C) 19 D) 20 59. 阅读程序
#include
{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a;
printf(\ printf(\ }
该程序有两个printf语句,假设第一个printf语句输出的是194,则第二个printf语句输出结果是 。
A)203 B) 204 C) 1a4 D) 1a6
61.以下程序的输出结果是 。 #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;下列表达式正确的是 。
A) p=a; B) p=a[0]; C) *p=&a[0]; D) p=&a;
63. 执行以下程序段后y的值为 。 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的值是 。 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的值为 。 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) 无定值 67.以下程序的输出结果是 。 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的表达式是 。 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数组元素的表达式是 。 A) *p B) a[10] C) *a D) a[p-a] 四、读程序写结果题 1.以下程序的执行结果是 。 # include { int i, j; int ﹡p,﹡q; i=2; j=10; p=&i; q=&j; ﹡p=10; ﹡q=2; printf(〞i=%d, j=%d\\n 〞, i, j); } 2.以下程序的执行结果是 。 # include { int ﹡﹡p,﹡q,i; i=10; q=&i; p=&q; printf(〞%d\\n 〞, ﹡﹡p); } 4.以下程序的执行结果是 。 # include { int ﹡p, i; i=5; p=&i; i=﹡p+10; printf(〞i=%d\\n〞, i); } 5.以下程序的执行结果是 。 # include { char s[ ]=”abcdefg”; char ﹡p; p=s; printf(〞ch=%c\\n〞, ﹡(p+5)); } 6.以下程序的执行结果是 。 # include main ( ) { int a[ ]={2,3,4}; int s, i,﹡p; s=1; p=a; for (i=0; i<3; i++) s﹡=﹡(p+i); printf(〞s=%d\\n〞, s); } 7.以下程序的执行结果是 。 # include main ( ) { int a[ ]={1,2,3,4,5,6},﹡p; for (p=&a[5];p>=a;p﹣﹣) printf(〞%d〞, ﹡p); printf(〞\\n〞); } 8.以下程序的执行结果是 。 # include { char ch[2][5]={”6934”,”8254”},﹡p[2]; int i, j, s=0; for (i=0; i<2; i++) p[i]=ch[i]; for (i=0; i<2; i++) for (j=0; p[i][j]>?\\0?&& p[i][j]<=?9?; j+=2) s=10﹡s+p[i][j]-?0?; printf(〞%d\\n〞, s); } 9.以下程序的执行结果是 。 # include main ( ) { char ﹡p1,﹡p2, str[20]=”xyz”; p1=”abcd”; p2=”ABCD”; strcpy (str+1, strcat (p1+1,p2+1)); printf(〞%s〞, str); } 10.以下程序的执行结果是 。 #include void main(void) {char *s, *s1 = “here is”, *s2 = “key”; s = s1; while (*s1!=?\\0?) s1++; while (*s1++=*s2++); s2 = s; while (*s2!=?\\0?) s2++; printf(“%d\\n”, s2-s); } 11.以下程序的执行结果是 。 #include {static int a[] = {1, 3, 5, 7}; int *p[3] = {a+2, a+1, a}; int **q = p; printf(“%d\\n”, *(p[0]+1) + **(q+2)); } 12.以下程序的执行结果是 。 #include fut(int **s, int p[2][3]) { **s=p[1][1]; } void main(void) { int a[2][3] = {1,3,5,7,9,11}, *p; p = (int *) malloc(sizeof(int)); fut(&p,a); printf(\} 13.以下程序的执行结果是 。 #include { static char a[]=\char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if (*(p1+k)==*(p2+k)) printf(\ printf(\ }