101地方特考 程式語言 - 特考

Table of Contents

題目如下 http://imgur.com/LeuhmC4

前三次輸出的答案為 i=3 j=9 k=1 s=2 a=2
i=4 j=8 k=2 s=2 a=0
i=6 j=7 k=3 s=7 a=10


但是我算出來第一次答案為
i=2 j=9 k=1 s=1 a=2

想法如下

for(i=1;i<j-- -k;)
{
if(j>k++*3&&(a=madta[i++])>0)
s+=i++;
cout<<"i="<<i<<"j="<<j<<"k="<<k<<"s="<<s<<"a="<<a<<endl;
};

首先一開始程式有宣告 int i=11,j=10,k=0,s=0,a=0;

for(i=1;i<j-- -k;)===>這裡 i<j-- -k 為關係運算只看j=j-1得到i=1,j=9(因為j=j-1)

if(j>k++*3&&(a=madta[i++])>0)===>為邏輯運算只得k=1(k=k+1),a=2

s+=i++ ===>s=s+i 得到 s=1(s一開始為0) 然後i=i+1 得到i=2

總結輸出 i=2 j=9 k=1 s=1 a=2

第一次解答為 i=3 j=9 k=1 s=2 a=2

請問一下我的想法有甚麼問題嗎??

謝謝各位教導

--

All Comments

Franklin avatarFranklin2016-06-24
第一次cout時 i已經++兩次了喔
Hedwig avatarHedwig2016-06-25
這一題基本上小部分考程式理解 大部分考視力的
Xanthe avatarXanthe2016-06-29
mate[i++] 就i就+1變成2了
Yedda avatarYedda2016-07-03
所以s=2 之後i再加1 變3
Audriana avatarAudriana2016-07-06
我懂了 謝謝
Ivy avatarIvy2016-07-09
第4次 *i=11,j=6,k=3,s=7,a=10;第5次 *i=13其他不變
Doris avatarDoris2016-07-13
請問怎麼會跳過 *i=12,謝謝!!
Audriana avatarAudriana2016-07-17
歡迎入我們資訊處理的賴群組喔!一起解題,站內信給我你
的賴即可
Doris avatarDoris2016-07-19
因為回圈跑了兩次才進入最後一次輸出