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

.以下程序的运行结果是( )
A、运行后报错 B、6 6 C、6 12 D、5 5

第1个回答  2012-06-17
结果是是6,11..*p=a[0]+5=6;*q=*(p+5)=a[5]+5=11
第2个回答  2020-08-26
正确答案是这个但我也不太懂为什么,A) 运行后报错
第3个回答  2012-06-09
程序贴完整了先。。。追问

以下程序的运行结果是( )
 A、运行后报错 B、6 6 C、6 12 D、5 5#include "stdio.h"
 main( )
 {int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};
 int *p=a+5, *q=NULL;
 * q=*(p+5);
 printf("%d %d \n",*p,*q);
 }

追答

我了个X,算出来是结果是“6 11”。。。。。等别人吧,因为木有发现自己错哪
a是a[0]的地址,a+5就是a[5]的地址了,那*p就是地址上的值也就是6;
然后p+5对应的应该是a[10]的地址,*q就是a[10],是11。

追问

下面程序把数组元素中的最大值放入a[0]中,则在if 语句中的条件表达式应该是( )
 A、p>a B、*p>a[0] C、*p>*a[0] D、*p[0]> *a[0]main( )
 { int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=0;i<10;i++,p++)
if(________) *a=*p;
printf("%d",*a);
 }

追答

个人认为应该是B,指针运算优先于赋值和比大小,所以BC都是指p地址上的值进行比较,A是比较地址的大小,D是指针数组(还是数组指针的有点忘)。所以知道*p已经是数值了,直接和a[0]比较就行。

前面那道应该A是对的,*q=NULL,q是空指针,没法给空指针赋值,所以会运行报错

追问

下面程序把数组元素中的最大值放入a[0]中,则在if 语句中的条件表达式应该是( )
 A、p>a B、*p>a[0] C、*p>*a[0] D、*p[0]> *a[0]main( )
 { int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=0;i<10;i++,p++)
if(________) *a=*p;
printf("%d",*a);
 }

追答

B,不是和刚才一样的题嘛

追问

以下程序的输出结果是( )
main( )
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
   for(j=i;j<=i;j++)
    t=t+b[i][b[j][j]];
printf("%d\n",t);
}

A、3 B、4 C、1 D、9

追答

A

本回答被网友采纳
相似回答