亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++小題目,有沒有會做的?

C++小題目,有沒有會做的?

C++
天將明96 2017-08-16 17:35:44
C++小題目問題描述:輸入:一個任意整數N(0<N<20)輸出:首先打印整數N和冒號并換行;然后打印N*N的“*”符號的矩陣,如下面兩幅圖:特殊要求:代碼中不許用到任何循環語句(for, while, do while等),也不許使用條件分支語句(if, switch 等)提示:沒有任何提示!? <(?????)>優先采納最簡單的解決方法(使用的函數越少,引用的庫越少即為簡單) ? 最好附上你們的代碼喲 (??`ω′?)------------------------------------------------------------------------------------------------------------ ? ? ? ??? ?? ? ? 分割線? ? ? ? ? ? ? ? ------------------------------------------------------------------------------------------------------------我自己的答案:????C++是面向對象的語言,解決問題時,我們應該用面向對象的思想來思考。????分析題目要求,輸入整數N,要輸出N*N的“*”矩陣,平時我們可以用循環很簡單地解決這個問題,但是這種方法是面向過程的,這樣解決問題和C語言沒有什么區別了。????為了利用C++面向對象的特性,我們可以將每一行“**……**\n”視為一個對象,這些相同的對象屬于同一個Row類,所以輸出N行字符就是創建N個Row類的對象;在每一行中,又有N個“*”,我們還是可以將其視為對象,讓它們屬于Star類。每創建一個Row類對象時,就相當于創建了N個Star類對象(加上一個 '\n')。代碼實現:#include?<iostream> using?namespace?std; int?n?=?0; class?Star{ public: ????Star(){cout?<<?"*";} }; class?Row{ public: ????Row()?{ ????????Star?star[n]; ????????cout?<<?endl; ????} }; int?main()?{ ????cout?<<?"Input?a?number?:"; ????cin?>>?n; ????cout?<<?n?<<?":"?<<?endl; ????Row?row[n]; ????return?0; }面向對象思想使代碼開發模塊化,更易維護和修改。增強代碼的可靠性和靈活性。增加代碼的可理解性。以上是我的愚見,有不對的地方還請大家指教!(●'?'●)??
查看完整描述

3 回答

已采納
?
fatewa

TA貢獻40條經驗 獲得超8個贊

#include<iostream>
using?namespace?std;
int?row(int?n){
????cout<<'*';
????n?=?n?-1;
??return?n==0?0:row(n);
}

int?Print(int?n,int?count){
????????row(count);
????????cout<<endl;
????????n?=??n?-?1;
????????return?n==0?0:Print(n,count);
}
?
int?main(void){
????int?n?=?0;
????cout<<"Input?a?number?:";
????cin>>n;
????cout<<n<<":"<<endl;
????Print(n,n);
????return?0;
}

就是這個咯 最簡單的實現 數組也免了

http://img1.sycdn.imooc.com//599461dc0001669d02320155.jpg

查看完整回答
1 反對 回復 2017-08-16
?
fatewa

TA貢獻40條經驗 獲得超8個贊

二維數組可以做但是不用循環代碼量扎心

查看完整回答
反對 回復 2017-08-16
  • 天將明96
    天將明96
    可不可以寫下你的實現方法呢?(??ˇ∀ˇ?)
  • fatewa
    fatewa
    說下思路吧 你可以定義一個一維數組然后根據n的大小用memset全部設置為'*',再通過三目運算符對n進行判斷 定義一個函數用來輸出一行星號 內容大概是這樣 void Print(){ count<<(Array[0]=='*'?':' ') <<(Array[1]=='*'?':' ') <<(Array[2]=='*'?':' ') .... <<(Array[19]=='*'?':' ') <<endl; //因為最多不超過20個 } 然后在通過判斷n的大小決定Print的運行次數 n==1?one():n==2?two():n==3?three().....:n==19?nineteen():""; 然后one two 這些函數里放執行Print函數的對應數量數量
  • fatewa
    fatewa
    代碼量會很多但是這樣不需要引入庫
點擊展開后面2
?
什么鬼_呀你

TA貢獻46條經驗 獲得超35個贊

memset函數

查看完整回答
反對 回復 2017-08-16
  • 天將明96
    天將明96
    可不可以寫下你的實現方法呢?(??ˇ∀ˇ?)
  • 什么鬼_呀你
    什么鬼_呀你
    額,思路是:創建方法1,利用meset創建一個一維數組的; 創建方法2,利用函數的遞歸或遞進打印一維數組(調用方法1);最后創建main()方法,調用方法2
  • 3 回答
  • 3 關注
  • 2321 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號