.以下程序的运行结果是( )
A、运行后报错 B、6 6 C、6 12 D、5 5
以下程序的运行结果是( )
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
本回答被网友采纳