用c++创建模式
Creating Patterns in C++
可能有一个非常简单的解决方案,但我就是想不出来。我已经创建了由以下代码生成的星号模式:
#include <iostream>
using namespace std;
int main()
{
int i, j;
for (i = 0; i<=10; i++)
{
for (j = 0; j<i; j++)
cout << "*";
cout << "n";
}
cout << "nn";
for (j = 10; j>0; j--)
{
for (i = 0; i<j; i++)
cout << "*";
cout << "n";
}
cout << "n";
for (j = 10; j>0; j--)
{
for (i = 0; i<j; i++)
cout << "*";
cout << "n";
}
cout << "n";
for (i = 0; i<=10; i++)
{
for (j = 0; j<i; j++)
cout << "*";
cout << "n";
}
return 0;
}
如您所见,代码生成了四个星号模式块。我的问题是,我需要最后两个块看起来像这样:
**********
*********
********
*******
******
*****
****
***
**
*
*
**
***
****
*****
******
*******
********
*********
**********
我认为我需要另一个for循环在这两个将使每行以适当数量的空格开始,但我坚持试图制定这个。如有任何建议,不胜感激。
#include使用命名空间std;
int main (){
int i, j;
for (j = 10; j>0; j--)
{
for(i=j;i<10;i++)
cout<< " ";
for (i = 0; i<j; i++)
cout << "*";
cout << "n";
}
cout << "n";
for (i = 0; i<=10; i++)
{
for(j=i;j<10;j++)
cout<< " ";
for (j = 0; j<i; j++)
cout << "*";
cout << "n";
}
return 0;
}
我认为你可以使用上面的代码,你应该计算在你循环打印"*"之前有多少空格
如果使用iomanip为输出定义宽度,并打印由星号组成的字符串,该怎么办?这将使代码更简单!
为了避免重复,你可以将它嵌入到一个循环中(一次迭代将相当于你之前的一个块),并根据计数器z是奇数(z & 1
假)还是偶数来切换增减。
所以你的整个程序看起来像:
for (int z=0; z<4; z++) {
for (int i=0; i<10; i++)
cout << setw(10) << string( (z&1 ? i:10-i), '*')<<endl;
}
<<p> 在线演示/strong> 最简单的(没有奇怪的语法&
#include <iostream>
#include <iomanip>
int main(){
const int SIZE = 10;
for (int i = 0; i < SIZE; ++i){ //increment index
std::cout << std::setw(i + 1); //print whitespace
for (int j = 0; j < SIZE - i; j++){
std::cout << '*'; //print asterisks
}
std::cout << std::endl;
}
for (int i = SIZE; i >= 0; --i){ //decrement index
std::cout << std::setw(i + 1); //print whitespace
for (int j = 0; j < SIZE - i; j++){
std::cout << '*'; //print asterisks
}
std::cout << std::endl;
}
return 0;
}
输出:**********
*********
********
*******
******
*****
****
***
**
*
*
**
***
****
*****
******
*******
********
*********
**********
你也可以改变SIZE
因为fun:
******************************
*****************************
****************************
***************************
**************************
*************************
************************
***********************
**********************
*********************
********************
*******************
******************
*****************
****************
***************
**************
*************
************
***********
**********
*********
********
*******
******
*****
****
***
**
*
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
****************
*****************
******************
*******************
********************
*********************
**********************
***********************
************************
*************************
**************************
***************************
****************************
*****************************
******************************
相关文章:
- 当注入程序的内存空间时,如何读取从 0 到 0xFFFFFFFFF 的每个字节?我正在创建模式扫描仪
- 在C++中创建观察器设计模式的好方法
- 基于模式创建位掩码作为 constexpr
- 无法在硬件模式下创建 SGX 安全区 - "invalid launch token"即使文档将无效的启动令牌指定为第一个
- 为什么隐藏文件无法在 MFC 中的创建和写入模式下打开?
- 如何创建一个新过程,而没有从管理模式运行的MFC应用程序中的管理特权
- 用于存储由第一个功能创建的指针的设计模式将在以后使用
- 替换decorator模式以强制执行创建顺序
- 当主GUI线程被阻塞时,如何从工作线程创建无模式对话框
- 模板化的使用是否为具有自定义键的unordered_map/set创建了一个良好的模式
- Qt:当主窗口被模式QDialog阻止时,如何聚焦从主窗口创建的无模式QDialog
- C 双重调度,出厂模式或一种从接收到的序列数据创建派生对象的方法
- 如何创建一个可以在GUI对话模式下或通过命令行启动的C MFC程序
- 如何在 3D 模式下为 VTK 创建等值线
- 如何删除在设计器模式下创建的插槽
- 使用嵌套 while 循环创建模式
- 当周围有线程时,创建类的许多实例会失败吗?- 单例模式
- 为什么每当我创建一个新的C++项目时,Eclipse都默认为调试模式
- 如何使用基于现有文件数据库的模式创建内存中数据库
- 从用户模式创建BSOD