C++如何跳出多層循環
雖然說語言是互通的,各種計算機語言的基本邏輯結構是類似的,但不同的語言之間還是有一些差別的。如循環中的break,在java中可以后面帶標志:**break?[flag]**(flag為要結束的循環層數),但在C++中沒有這個標志。
那C++中如何跳出多重循環呢?
# 以問題為例:
<table border="1" style="font-family:Simsun; border-collapse:collapse; padding:0pt 5.4pt"><tbody><tr><td width="568" valign="top" style="width:500pt; padding:0pt 5.4pt; border:0.5pt solid rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"><strong>問題主題:抽簽</strong></span><span style="font-size:14pt; font-family:宋體"/></p></td></tr><tr><td width="568" valign="top" style="width:426.1pt; padding:0pt 5.4pt; border-left-width:0.5pt; border-style:none solid solid; border-left-color:rgb(0,0,0); border-right-width:0.5pt; border-right-color:rgb(0,0,0); border-bottom-width:0.5pt; border-bottom-color:rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"><strong>問題描述:</strong></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">將寫有數字的<span style="font-family:Times New Roman">numOfCard</span><span style="font-family:宋體">個卡片放入口袋中,從口袋中抽取</span><span style="font-family:Times New Roman">4</span><span style="font-family:宋體">次卡片,每次記錄卡片的數字后將其放回口袋中。設卡片上寫的數字為</span><span style="font-family:Times New Roman">k</span></span><span style="font-size:14pt; font-family:宋體; vertical-align:sub">1</span><span style="font-size:14pt; font-family:宋體">、<span style="font-family:Times New Roman">k</span></span><span style="font-size:14pt; font-family:宋體; vertical-align:sub">2</span><span style="font-size:14pt; font-family:宋體">、<span style="font-family:Times New Roman">k</span></span><span style="font-size:14pt; font-family:宋體; vertical-align:sub">3</span><span style="font-size:14pt; font-family:宋體">...k</span><span style="font-size:14pt; font-family:宋體; vertical-align:sub">n</span><span style="font-size:14pt; font-family:宋體">,</span><span style="font-size:14pt; font-family:宋體">如果這<span style="font-family:Times New Roman">4</span><span style="font-family:宋體">個數字的和為</span><span style="font-family:Times New Roman">sum</span><span style="font-family:宋體">,則輸出</span></span><span style="font-size:14pt">”</span><span style="font-size:14pt; font-family:宋體">Yes</span><span style="font-size:14pt">”</span><span style="font-size:14pt; font-family:宋體">,否則輸出</span><span style="font-size:14pt">”</span><span style="font-size:14pt; font-family:宋體">No</span><span style="font-size:14pt">”</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"><strong>限制條件:</strong></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">1<=numOfCard<=50</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">1<=sum<=10</span><span style="font-size:14pt; font-family:宋體; vertical-align:super">8</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">1<=k</span><span style="font-size:14pt; font-family:宋體; vertical-align:sub">i</span><span style="font-size:14pt; font-family:宋體"><=10</span><span style="font-size:14pt; font-family:宋體; vertical-align:super">8</span><span style="font-size:14pt; font-family:宋體; vertical-align:super"/></p></td></tr><tr><td width="568" valign="top" style="width:426.1pt; padding:0pt 5.4pt; border-left-width:0.5pt; border-style:none solid solid; border-left-color:rgb(0,0,0); border-right-width:0.5pt; border-right-color:rgb(0,0,0); border-bottom-width:0.5pt; border-bottom-color:rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"><strong>樣例<span style="font-family:Times New Roman">1</span><span style="font-family:宋體">:</span></strong></span><span style="font-size:14pt; font-family:宋體"><strong/></span></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">輸入</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">numOfCard?=?3</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">Sum?=?10</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">K?=?{1,?3,?5}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">輸出</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">Yes</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"><strong>樣例<span style="font-family:Times New Roman">2</span><span style="font-family:宋體">:</span></strong></span><span style="font-size:14pt; font-family:宋體"><strong/></span></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">輸入</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">numOfCard?=?3</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">Sum?=?9</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">K?=?{1,?3,?5}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">輸出</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'; text-indent:28pt"><span style="font-size:14pt; font-family:宋體">No</span><span style="font-size:14pt; font-family:宋體"/></p></td></tr></tbody></table>
# 可能的解決方法
你可能會將程序寫成這樣:
<table border="1" style="font-family:Simsun; border-collapse:collapse; padding:0pt 5.4pt"><tbody><tr><td width="568" valign="top" style="width:500pt; padding:0pt 5.4pt; border:0.5pt solid rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">void??drawLots()?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???//<span style="font-family:宋體">從標準輸入讀入</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?numOfCard,?sum;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?k[MAX_N];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">輸入</span><span style="font-family:Vijaya">numOfCard</span><span style="font-family:宋體">和</span><span style="font-family:Vijaya">sum"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cin>>numOfCard>>sum;?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">請輸入這</span><span style="font-family:Vijaya">sum</span><span style="font-family:宋體">張卡片的數字</span><span style="font-family:Vijaya">"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?i=0;?i<numOfCard;?i++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cin>>k[i];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???bool?result?=?false;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?_sum?=?0;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?a?=?0;?a?<?numOfCard;?a?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????for(int?b?=?0;?b?<?numOfCard;?b?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????for(int?c?=?0;?c?<?numOfCard;?c++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????for(int?d?=?0;?d?<?numOfCard;?d?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">_sum?=?k[a]?+?k[b]?+?k[c]?+?k[d];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????if(_sum?==?sum)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">? ? ? ? ? ? ? ? ? ? result?=?true;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????????????????????break;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????}</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???if(result){</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cout<<"Yes"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}?else</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????cout<<"No"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">}</span><span style="font-size:14pt; font-family:宋體"/></p></td></tr></tbody></table>
# 出現的問題
**但是上面的break并沒有結束循環(即沒有跳出多層循環),而只是跳出了本層循環。**如果你不明白為什么會這樣,可以參考我之前寫的一篇文章:[再探java基礎——break和continue的用法](http://blog.csdn.net/luoweifu/article/details/10756017)
或者,你可以將程序稍微改動一下來驗證:
<table border="1" style="font-family:Simsun; border-collapse:collapse; padding:0pt 5.4pt"><tbody><tr><td width="568" valign="top" style="width:500pt; padding:0pt 5.4pt; border:0.5pt solid rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">void??drawLots()?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???//<span style="font-family:宋體">從標準輸入讀入</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?numOfCard,?sum;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?k[MAX_N];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">輸入</span><span style="font-family:Vijaya">numOfCard</span><span style="font-family:宋體">和</span><span style="font-family:Vijaya">sum"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cin>>numOfCard>>sum;?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">請輸入這</span><span style="font-family:Vijaya">sum</span><span style="font-family:宋體">張卡片的數字</span><span style="font-family:Vijaya">"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?i=0;?i<numOfCard;?i++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cin>>k[i];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???bool?result?=?false;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?_sum?=?0;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?a?=?0;?a?<?numOfCard;?a?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????for(int?b?=?0;?b?<?numOfCard;?b?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????for(int?c?=?0;?c?<?numOfCard;?c++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????for(int?d?=?0;?d?<?numOfCard;?d?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">_sum?=?k[a]?+?k[b]?+?k[c]?+?k[d];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????if(_sum?==?sum)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">? ? ? ? ? ? ? ? ? ? result?=?true;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????????????????????break;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????}</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout?<<?"_sum:"?<<?_sum?<<?"??"?<<?"sum:"?<<?sum?<<?endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???if(result){</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cout<<"Yes"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}?else</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????cout<<"No"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">}</span><span style="font-size:14pt; font-family:宋體"/></p></td></tr></tbody></table>
輸入**樣例1**,結果為:
_sum:20??sum:10
Yes
原因:_sum:20是因為**break并沒有結束循環(即沒有跳出多層循環),而只是跳出了本層循環**,運行到循環最后一次時?k[a]?==?k[b]?==?k[c]?==?k[d]?==?5;
那么,如何讓程序跳出多重循環呢?
# 我的解題思路是:
**1.?**java中有break?[flat]的用法,可以解決這個問題,試了一下,但發現C++里不行,會報錯,可能C++里沒有這個用法;**2.?**C/C++有個強制跳轉的語法goto;**3.?**加判斷標志,不滿足條件時逐層終止
# 我的解決方法:
### 一、使用goto
<table border="1" style="font-family:Simsun; border-collapse:collapse; padding:0pt 5.4pt"><tbody><tr><td width="568" valign="top" style="width:500pt; padding:0pt 5.4pt; border:0.5pt solid rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">void??drawLots()?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???//<span style="font-family:宋體">從標準輸入讀入</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?numOfCard,?sum;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?k[MAX_N];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">輸入</span><span style="font-family:Vijaya">numOfCard</span><span style="font-family:宋體">和</span><span style="font-family:Vijaya">sum"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cin>>numOfCard>>sum;?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">請輸入這</span><span style="font-family:Vijaya">sum</span><span style="font-family:宋體">張卡片的數字</span><span style="font-family:Vijaya">"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?i=0;?i<numOfCard;?i++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cin>>k[i];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???bool?result?=?false;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?_sum?=?0;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?a?=?0;?a?<?numOfCard;?a?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????for(int?b?=?0;?b?<?numOfCard;?b?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????for(int?c?=?0;?c?<?numOfCard;?c++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????for(int?d?=?0;?d?<?numOfCard;?d?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">_sum?=?k[a]?+?k[b]?+?k[c]?+?k[d];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????if(_sum?==?sum)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">? ? ? ? ? ? ? ? ? ? result?=?true;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????????????????????goto?breakLoop;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????}</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???breakLoop:?cout?<<?"_sum:"?<<?_sum?<<?"??"?<<?"sum:"?<<?sum?<<?endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???if(result){</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cout<<"Yes"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}?else</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????cout<<"No"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">}</span><span style="font-size:14pt; font-family:宋體"/></p></td></tr></tbody></table>
輸入樣例1.
結果:
_sum:10??sum:10
Yes
### 二、加判斷標志
<table border="1" style="font-family:Simsun; border-collapse:collapse; padding:0pt 5.4pt"><tbody><tr><td width="568" valign="top" style="width:500pt; padding:0pt 5.4pt; border:0.5pt solid rgb(0,0,0)"><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">void??drawLots()?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???//<span style="font-family:宋體">從標準輸入讀入</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?numOfCard,?sum;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?k[MAX_N];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">輸入</span><span style="font-family:Vijaya">numOfCard</span><span style="font-family:宋體">和</span><span style="font-family:Vijaya">sum"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cin>>numOfCard>>sum;?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout<<"<span style="font-family:宋體">請輸入這</span><span style="font-family:Vijaya">sum</span><span style="font-family:宋體">張卡片的數字</span><span style="font-family:Vijaya">"<<endl;</span></span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?i=0;?i<numOfCard;?i++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cin>>k[i];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???bool?result?=?false;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???bool?isBreakLoop?=?true;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???int?_sum?=?0;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???for(int?a?=?0;?a?<?numOfCard?&&?isBreakLoop;?a?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????for(int?b?=?0;?b?<?numOfCard?&&?isBreakLoop;?b?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????for(int?c?=?0;?c?<?numOfCard?&&?isBreakLoop;?c++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????for(int?d?=?0;?d?<?numOfCard?&&?isBreakLoop;?d?++)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">_sum?=?k[a]?+?k[b]?+?k[c]?+?k[d];</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????if(_sum?==?sum)?{</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"><span style="font-family:宋體; font-size:19px; text-align:justify">? ? ? ? ? ? ? ? ? ? ??</span>result?=?true;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體"><span style="font-family:宋體; font-size:19px; text-align:justify">? ? ? ? ? ? ? ? ? ? ??</span>isBreakLoop?=?false;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????????}</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">?</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">??????}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???cout?<<?"_sum:"?<<?_sum?<<?"??"?<<?"sum:"?<<?sum?<<?endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???if(result){</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???</span><span style="font-size:14pt; font-family:宋體"/><span style="font-size:14pt; font-family:宋體">cout<<"Yes"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">???}?else</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">????cout<<"No"<<endl;</span><span style="font-size:14pt; font-family:宋體"/></p><p class="p0" style="margin:0pt; text-align:justify; font-size:14pt; font-family:'Times New Roman'"><span style="font-size:14pt; font-family:宋體">}</span><span style="font-size:14pt; font-family:宋體"/></p></td></tr></tbody></table>
輸入樣例1.
結果:
_sum:10??sum:10
Yes
### 說明:
本人還是建議采用方法二,因為方法二更符合結構化的程序設計,使代碼更整潔,可讀性更強!我還是盡量避免使用goto。
歡迎加入"C/C++夢之隊" 學習群:226157456