已定义数组inta[5]={1,2,3,4,5},*p;下列顺正确的是()A、for(p=a;a(p+5);a++){}B、for(p=a;p(a+5);p++){}C、for(p=a,a=a+5;p++){}D、for(p=a;a(a+5);++a){}

题目

已定义数组inta[5]={1,2,3,4,5},*p;下列顺正确的是()

  • A、for(p=a;a<(p+5);a++){}
  • B、for(p=a;p<(a+5);p++){}
  • C、for(p=a,a=a+5;p++){}
  • D、for(p=a;a<(a+5);++a){}
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

对于如下的表达式:inta[3][4],*p;p=*a;执行p++操作之后,*p表示取()的内容。

A、a[0][0]

B、a[1][0]

C、a[1][1]

D、a[0][1]


参考答案:D

第2题:

以下程序的输出结果是( )。 define PR(ar)printf("ar=%d”,ar) main() {int j,a[]={1,8,3,7,6,13,17,15},*p=a+5; for(j=3;j;j--) switch(j) {case 1: case 2:PR(*p++);break; case 3:PR(*(--p)); } }


正确答案:ar=6 ar=6 ar=13
ar=6 ar=6 ar=13 解析:通过*p=a+5将指针P指向a[5],第1次循环,i=3时,switch(3),执行case 3,*(-p)-a[4]=6,所以输出ar=6;第2次循环,j=2时,switch(2),执行case 2,(*p++)是先引用a[4]的值6,输出ar=6,再将指针P移位指向a[5];第3次循环,j=1时,switch(1),执行case 1,case 1后没有break语句,接着执行case 2,(*p++)是先引用a[5]的值13,输出ar=13,再将指针P移位指向a[6]。

第3题:

以下与库函数strcpy(char *p, char *q)功能不相等的程序段是()。

A.strcpy1(char *p, char *q)

{ while ((*p++=*q++)!='\0')

}

B.strcpy2( char *p, char *q)

{ while((*p=*q)!='\0')

{p++ q++}

}

C.strcpy3(char*p, char *q)

{ while (*p++=*q++)

}

D.strcpy4(char *p, char *q)

{ while(*p)

*p++=*q++

}


答案:D

第4题:

以下程序的输出结果是【 】。include main() {int j,a[]={1,3,5,7,9,11,13,15},*P=a+5; f

以下程序的输出结果是【 】。

include <stdio.h>

main()

{ int j,a[]={1,3,5,7,9,11,13,15},*P=a+5;

for(j=3; j;j-)

{ switch(i)

{ case 1:

case 2: printf("%d",*p++); break;

case 3: printf("%d",* (-p));

}

}

}


正确答案:9911
9911 解析:switch语句的一般格式如下:
switch(表达式)
{case 常量表达式 1:语句1
case 常量表达式 2:语句2

case 常量表达式 n:语句n
default:语句n+1}
switch语句在执行的先计算表达式的值,当表达式的值与某—个case后面的常量表达式的值相等时,就执行此case后面的语句系列。由于“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断,所以当根据switch后面表达式的值找到匹配的入口标号时,就从此标号开始执行下去,不再进行判断,直到在执行某个case分支后,遇到break语句才会跳出switch结构,即终止switch语句的执行。
本题定义并初始化了一个一维数组a,同时将指针变量p指向了a[5]的地址。在for循环中,首先j=3,执行case3后面的语句,由于--p是将p的地址前移一位,所以*(--p)的值为a[4]的值,即输出9;当j=2时,执行case2后面的语句。由于 *p++中++与*同优先级,结合方向为自右而左,因此它等价于*(p++),作用是先得到p指向的变量的值(即*p),然后再使p+1赋给p,所以j=2时先输出a[4]的值9,再使得p指向a[5]的地址;当j=1时,执行case1后面的语句,由于case1后面没有终业语句,所以继续执行case2后面的语句,此时*p的值即a[5]的值,所以输出11,然后p地址后移。故本程序的输出结果为9911。

第5题:

有以下程序:includemain(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q

有以下程序: #include <stdio.h> 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.66

C.611

D.510


正确答案:A
解析:本题中首先定义了一个一维数组a并初始化,该数组的长度为初值的个数即12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,还一个指针变量q,q为空指针,实际上程序并没有在内存中为指针q开辟存储空间。语句 *q=*(p+5);向q的存储空间赋值是错误的,故该程序运行后报错。

第6题:

以下程序的输出结果是 【 9 】 。

#include<stdio.h>

main()

{ int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;

for(j=3;j;j--)

{ switch(j)

{ case 1:

case 2:printf( " %d " ,*p++); break;

case 3:printf( " %d " ,*(--p));

}

}

}


正确答案:

第7题:

有以下程序includemain(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL; *q

有以下程序 #include<stdio.h> 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
解析:本题中首先定义了一个一维数组。并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。

第8题:

( 15 ) 以下程序的功能是 : 借助指针变量找出数组元素中的最大值及其元素的下标值 。 请填空。

#include <stdio.h>

main ()

{ int a[10],*p,*s;

for ( p=a;p-a<10;p++ ) scanf ( " %d " ,p ) ;

for ( p=a,s=a;p-a<10;p++ ) if ( *p>*s ) s= 【 15 】 ;

printf ( " index=%d\n " ,s-a ) ;

}


正确答案:

第9题:

以下程序的输出结果是【19】。

#define PR(ar)printf("%d,",ar)

main()

{ int j, a[]={1, 3, 5, 7, 9, 11, 15}, *p=a+5;

for(j=3; j; j--)

switch(j)

{ case 1:

case 2: PR(*p++); break;

case 3:PR(*(--p));

}

printf("\n");

}


正确答案:
9,9,11

第10题:

对于int*p;inta[];p=a,的合法运算()。

A.p=a;p++相当于a++

B.++p;相当于a[1]

C.a++

D.若p中的地址为100则p++;运算后则其值为100


参考答案:D

更多相关问题