34. 结果是678910分析:在C语言中,作为函数参数的数组退化为了指针。这样函数void change(int k[ ]){k[0]=k[5];} 其实相当于void change(int *k){ *k = *(k+5);}也就是相当于,指针k所指向的值被更改为,指针k+5所指向的值了。n=0时,指针k指向数组x的x[0],k+5就是x[5]了,所以这次就是相当于 x[0]=x[5]=6 展开
34. 结果是678910分析:在C语言中,作为函数参数的数组退化为了指针。这样函数void change(int k[ ]){k[0]=k[5];} 其实相当于void change(int *k){ *k = *(k+5);}也就是相当于,指针k所指向的值被更改为,指针k+5所指向的值了。n=0时,指针k指向数组x的x[0],k+5就是x[5]了,所以这次就是相当于 x[0]=x[5]=6;n=1时,指针k指向数组x的x[1],k+5就是x[1+5]=x[6]了,所以这次就是相当于 x[1]=x[6]=7;同理n=2时是x[2]=x[7]=8;n=3时是x[3]=x[8]=9;n=4时是x[4]=x[9]=10;所以最后的结果是 678910.36.这道题楼主应该是写错了,如果按照原题输出结果应该为6 0 0分析:这是因为,在循环输出的时候,每次的值都被保存在x[0][0]了,即保存数据的位置没有变化。如果,原题改为for(I=0;I<3;I++) scanf("%d",x+I);则结果为2 0 4分析:根据C语言规则,数组名可以看成是指向该数组类型的指针,由于x是二维数组int [3][2]的数组名,那么x就相当于一个指向一维数组int [2]的指针,那么x+I中的I所代表的步长就是一个int [2]的数组了。这样 x+0 指向 x[0][0], x+1 指向 x[1][0],x+2 指向 x[2][0].那么读入的数据也就保存在x[0][0]=2,x[1][0]=4,x[2][0]=6,在输出的是由于x[0][1]被初始化为0(int x[3][2]={0}),而没有被更改过,仍然为0,所以结果为2 0 4.28. 答案是 2分析:这是典型的C语言递归函数,做题的时候只要逐步展开就可以了。要求的是fun(7)根据函数的规则可知fun(n)=n - fun(n-2) (n>1)fun(1)=fun(0) = 3好了因为7>1fun(7) = 7 - fun(7-2) = 7 - fun(5)因为 5>1fun(5) = 5 - fun(5-2) = 5 - fun (3)因为 2>1fun(3) = 3 - fun(3-2) = 3 - fun(1) = 3 - 3 = 0那么fun(5) = 5 - fun(3) = 5 - 0 = 5 fun(7) = 7 - fun(5) = 7 - 5 = 2 收起