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; }
就是這個咯 最簡單的實現 數組也免了
- 3 回答
- 3 關注
- 2321 瀏覽
添加回答
舉報
0/150
提交
取消