【C++]两个题不会

第一题:若有定义“floata[m][n];",且a[1][1]的地址为x,每个float元素占用4个字节,则a[i][j]的地址为()A.x+4*(i-1)*n+4*(... 第一题:若有定义“float a[m][n];",且a[1][1]的地址为x,每个float元素占用4个字节,则a[i][j]的地址为( )
A.x+4*(i-1)*n+4*(j-1)
B.x+(i-1)*n+(j-1)
C.x+4*(i-1)*j+(j-1)
D.x+4*i*j+4*j
答案是A
第二题:以下程序的输出结果是( )
cout<<strlen("china\012\1\0\\");
A.11 B,7 C,9 D.8
答案是B
求大神给个过程,本人新手
展开
 我来答
wchyumo2011
2015-11-25 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2736万
展开全部
第一题:首先求a[0][0]的地址,假设a[0][0]的地址为y,那么一行有n个元素,到a[1][1]就需要加n*4+4=x,就得到了a[0][0]的地址为x-n*4-4
接着就可以求任意位置的地址了,为a[0][0]+i*n*4+j*4=x-n*4-4+i*n*4+j*4,也接是A选项
第二题,这里需要知道一点,字符串需要'\0'结束,这个字符串中'\012'是一个转义字符,字符串长度函数strlen统计到'\0'为止,不包含'\0',所以统计的长度为7
447587096
2015-11-25 · TA获得超过5043个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1142万
展开全部
一。1.首先看纵向a[i][j]和a[1][1]差了有i-1行,每行有n个元素,所以1行的地址相差4*n,i-1行就是4*(i-1)*n。
2.看横向差了j-1个元素,每个元素4个字节,就是4*(j-1),所以总共相差4*(i-1)*n+4*(j-1)

二.strlen遇到'\0'就结束,‘\0’不算入长度,c h i n a \012 \1 有七个元素,注意\012 是一个元素,\1也是一个元素,所以\0之前有七个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式