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 关注
- 2235 浏览
添加回答
举报
0/150
提交
取消