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; }
面向对象思想使代码开发模块化,更易维护和修改。增强代码的可靠性和灵活性。增加代码的可理解性。
以上是我的愚见,有不对的地方还请大家指教!(●'◡'●)ノ♥
fatewa
fatewa
什么鬼_呀你
相关分类