求c语言大佬解题

18题感觉答案错了15题需要详细解释30题懵... 18题感觉答案错了
15题需要详细解释
30题懵
展开
 我来答
caesarlih
2019-06-29 · TA获得超过1047个赞
知道小有建树答主
回答量:1046
采纳率:70%
帮助的人:234万
展开全部
18题就是B 啊,你觉得其他三个答案里面,哪个是对的呢?
15题先做的do{k++;},再判断while(a>d++);,而且这个判断,应当是先判断while(a>d),再做d++。所以k++做完第6次以后(即k=6),判断语句不成立,程序中断。
30题我觉得应当是D啊。如果是C的话,把a[0][0]位于数组第一个位置代进去,得a[0][0]的位置L=0*m+0-1=-1,怎么看也不对嘛。
更多追问追答
追问
18题第三个我觉得
追答
C语言中,对于数组元素的引用,允许使用这种数学表达式的形式吗?如果表达式中含有变量倒是没问题,但是纯数字运算式应该是不行的吧。而且答案C把行、列的表达分割开了,你在C语言环境下运行一下,答案C这样的引用方式应该会报错的。
匿名用户
2019-06-29
展开全部

如果有什么不同意见可以和我讨论

T15:  B:

a = 10, d = 5, k = 0;  do{k++} while(a>d++)

do while循环特点:先做后判断,也就是先执行k++,  

当++置于数的后面,则表明:先赋值(或使用)再自加1,

eg:int x = 1, y;      y = x++;    

                                                    y = x++执行过程:x的值先赋给y,再自加1

                                                    所以执行结果:x = 2; y = 1;

再看本题:

第一次循环:k++  =>   k = 1;  

a > d++ :  ++是后置的,所以d先与a比较,即10 > 5, 比较结果                                                           为真,会进行第二次循环,而d = 6;

第二次循环:k = 2; 10 > 6   ; d = 7 ;条件10 > 6判断为真,继续循环

……

第五次循环:k = 5; 10 > 9   ; d = 10 ;条件10 > 9判断为真,继续循环

第六次循环:k = 6;    10 > 10  ;   d = 11;条件10 > 10判断为假,结束循环

所以最后k的值为6;

T18:C, a[x][y]:  x<3,y<4,否则越界

T30:  B, 二维数组在内存中的存储是连续的,从一个元素即a[0][0],a[0][1],……,a[0][m-1],a[1][0]……a[1][m-1],a[2][0]……一直下去;a[0][0]的位置:0; a[0][1]的位置:1;……;a[1][0]的位置:m(因为一行有m个);…… ;a[i][j]的位置:前面有i行,i*m;a[i][j]处于当前行的第j+1个,所以i*m+j+1,但是开始位置为0 不是 1 ,所以i*m+j+1-1 = i*m+j;

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式