C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢

17. 若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是_______.
int t[3][3], *pt[3], k;
for (k=0;k<3;k++) pt[k]=&t[k][0];

A. t[2][0]
B. t[2][2]
C. t[l][2]
D. t[2][l]

答案是C 但是我没明白

还有
11. 以下程序执行后sum的值是__________
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf(“%d\n”,sum);
}

A. 15
B. 14
C. 不确定
D. 0

为什么答案是C 求指导
19. 以下程序的输出结果是____________.
int d=1;
fun(int p)
{ static int d=5;
d+=p;
printf("%d ",d);
return(d);}
main( )
{ int a=3; printf("%d \n",fun(a+fun(d)));}

A. 6 9 9
B. 6 6 9
C. 6 15 15
D. 6 6 15

这道呢

1 . 首先我们定义的是一个指针数组,pt[3] 它和数组类似,数组名表示的是第一个字符,而指针名则表示第一个指针,所以pt应该是pt[0],而pt[0]对应的是t[0][]
在 *(*(pt+l)+2) 中 先看pt+l 对于数组来说,每一行的内存是连续分配的, 所以pt+l就是pt当前这一行的下一行,即t[1][]
而 *(pt+l)+2 就是指向pt+1这一行的第三个字符 也就是t[1][2] 所以*(*(pt+l)+2) 就是指向t[1][2] 内容的

PS:for 循环中执行的意思就是: pt[0]→ a,b,c
pt[1]→ e,f,g
pt[2]→ h ,i, j
而pt对应的其实就是pt[0]所以 pt+1 =pt[1]
2.定义sum的时候 由于没有对sum进行初始化,所以编译器会对sum进行随机赋值,所以sum将会被分配到一个随机数,而在求和的时候累加之后的和当然不确定

3.C
第一次调用fun函数的时候,fun(a+fun(d)) 应该是在进入参数(a+fun(d)) 的时候遇到fun(d)
这时,由于还没有执行static int d=5 所以 ,传递进去的参数p(也就是d)依然为1 ,然后再执行 d+=p;
这时输出的d就等于6
之后再执行fun(a+fun(d)) 要再进入外层的fun函数 这时参数p就等于a+fun(d) 也就是9
这时候d是等于6的,所以d+=p之后就等于15了,所以,输出了15
然后返回值是d所以也是15
所以最后结果就是6 15 15
PS.需要说明的是static int d=5 这里d被声明为一个静态变量,那么也就是说在编译的时候d这个变量已经被分配好内存,那么重复执行fun()函数的时候,这个d变量是不会被重复定义的,
也就是说,当第二次执行fun函数的时候static int d =5 这一句是不用被执行的
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-21
第一个题,t是一个数组,pt是一个指针数组,做完循环后,指针数组就指向了t这个数组了。即pt和t应该是一个内容,只不过t是const的。*(pt+1)就是t[1],*(*(pt+l)+2)就是t[1][2]了。
第二个题,sum没有初始化,所以答案就选c了。记住一点哦,永远不要使用未初始化的变量!
第三个题,选c,关键是那个static int d,这个地址分配以后,里面的内容直到程序执行结束才释放,这是变量生存期的问题了。

最后多说一句,这些题,最好是自己动手敲到编译器里面执行一下,然后,用调试的功能,观察各变量的变化,这样理解起来会比较容易。本回答被提问者采纳
第2个回答  2012-04-21
呵呵 ,很高兴啊,我刚学完C语言。我看看啊
一:
int t[3][3], *pt[3], k;
for (k=0;k<3;k++) pt[k]=&t[k][0];
其中 *pt[3] :pt是指向一个有四个元素的一维数组
&t[k][0];//是第k行的地址
我们在来分析下执行过程:

for (k=0;k<3;k++) pt[k]=&t[k][0];
第一次 循环:pt[0] = &t[0][0]//把首地址赋给pt; ,*(*(pt+l)+2) 等价于:t[l][2] <因为*(pt+l) 等价于 t[l] ,所以就是t[l]+2 ,再加个* ,就是t[l][2]了
第二次循环:pt[1] = &t[1][0] ........................................(结果一样,,*(*(pt+l)+2) 结果为t[l][2] )
二:
main()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf(“%d\n”,sum);
}
sum 的值 没有初始化,所以他的值 是不可预料的、~
和sum进行运算的后值 肯定也是是不可预料的 哈

要采纳呐~
同学 , 还有什么不懂么?
第3个回答  2012-04-21
17.C *(pt+1)== t[1][0]; *(*(pt+1)+2) = t[1][2]

11.其实一般的编译器答案会是A,但是int sum;是没有初始值的,他得默认值是不是0要根据编译器的情况来决定,所以说是不确定
第4个回答  2012-04-21
17 c *(pt+1)指向的是t【1】【0】再加上2就是了

11 c 题是不确定的,因为初始值是随机的,不确定的

C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
1 . 首先我们定义的是一个指针数组,pt[3] 它和数组类似,数组名表示的是第一个字符,而指针名则表示第一个指针,所以pt应该是pt[0],而pt[0]对应的是t[0][]在 *(*(pt+l)+2) 中 先看pt+l 对于数组来说,每一行的内存是连续分配的, 所以pt+l就是pt当前这一行的下一行,即t[1][]...

C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
第一个题,t是一个数组,pt是一个指针数组,做完循环后,指针数组就指向了t这个数组了。即pt和t应该是一个内容,只不过t是const的。*(pt+1)就是t[1],*(*(pt+l)+2)就是t[1][2]了。第二个题,sum没有初始化,所以答案就选c了。记住一点哦,永远不要使用未初始化的变量!第三个题,...

一个C语言问题求解
我来告诉你吧。第一,i 是整型,所以 c1 = c2 = i = -159.123赋值时,对-159.123进行了截断,i 的值就成了-159.然后将-159赋给c2 和 c1,你可能不理解这里。第二,你定义的c1,c2是无符号字符类型,一个字节,即8个位。所以将-159赋给c1,c2就有问题了。首先来看-159的二进制表示,由于...

我是初学C语言,看不懂你这题(看不懂的地方我标注了一下啊)
(!c)因为c=5,不等于0,所以c是真值,前面加个!,就说明整体是假值,所以最后逻辑值为0 另外,扩展一下,对于这道题中的c,!!c的值应该为1。!!c=!(!c)=(!0)=1。这也是通过上述解释得到的。

C语言问题
实参:全称为"实际参数"是在调用时传递个该函数的参数.形参和实参的类型必须要一致,或者要符合隐含转换规则,当形参和实参不是指针类型时,在该函数运行时,形参和实 参是不同的变量,他们在内存中位于不同的位置,形参将实 参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变.而如果...

c语言基础问题
C语言中,和其他不一样的,是K前后缀操作的问题 比如: K++,是先取K,操作,然后对K 加1.如果在等式中,就要注意了。int a = 10;int k = 8;a = k++;先把k 赋值给a,然后k加1;结果是a = 8, k=9;如果反过来,就不一样了 int a = 10;int k = 8;a = ++k;先k加1,再把k...

排列组合 C语言的问题 请高手指教
3个数字都加到a的某一个元素中(都是同一个,那还有排列还有什么意义)?排列组合的概念搞懂没?排列就是排列,组合就是组合,是两个不同的概念啊。例如1 2 3排列有3!,组合就只有1了。

简单的C语言题目
0.结构数组是指类型是结构体类型的数组,每一个元素都是一个结构体形式,可能包含几个成员。如这道题的每一个学生可以定义为一个结构体,包含:姓名,平均成绩两个成员。1.反转多位数字在某些情况下可以把数字以字符串形式输入到如str[ ]的数组中,从下标strlen(str)-1开始,反向输出str[ ] 这个...

求大神讲解一下C语言汉诺塔递归算法的简易理解
hanoi塔问题, 算法分析如下,设a上有n个盘子,为了便于理解我将n个盘子从上到下编号1-n,标记为盘子1,盘子2...盘子n。如果n=1,则将“ 圆盘1 ” 从 a 直接移动到 c。如果n=2,则:(1)将a上的n-1(等于1)个圆盘移到b上,也就是把盘1移动到b上;(2)再将a上 “盘2” 移到...

一个奇怪的C语言问题,涉及到指针、数组、堆栈、以及printf,希望C语言大...
顺便再解释一下printf("%s\\n",p);得到的为什么是乱码。正如上面所说,先计算参数p的值保存栈顶。保存的值为arr的地址。然后调用printf函数,把栈顶空间内容修改了。虽然保存了地址,但是原来的内容已经修改了,所以得不到结果。whataplay,我只是鄙视你的回答,没有骂你。因为你的回答是答非所问!

相似回答
大家正在搜