C++ 使用星号(*)绘制X字母形状
我想写一个程序,用星号(*)画X字母的形状 我现在就是这么做的C++ 使用星号(*)绘制X字母形状,c++,visual-c++,C++,Visual C++,我想写一个程序,用星号(*)画X字母的形状 我现在就是这么做的 include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { int i, d, a=1,b=12,c; for(i = 1; i <= 6; i++) { for (d=1; d<i;d++) {cout <<" ";} cout<<"***"; for
include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i, d, a=1,b=12,c;
for(i = 1; i <= 6; i++)
{
for (d=1; d<i;d++) {cout <<" ";}
cout<<"***";
for (c=a+1; c<b;c++) {cout <<" ";}
{cout<<"***";}
for(b=12-i;b<i;b++)
{cout<<"***";}
cout<<endl;
a++;
}
return 0;
}
包括“stdafx.h”
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
int i,d,a=1,b=12,c;
对于(i=1;i
首先,请原谅我的不均匀X。作为初学者,我会给你一个算法供你思考,而不是填鸭式地输入代码
- 口译员不知道如何返回到已经打印的行。
因此,您必须在循环的一次迭代中绘制X的两侧
- 在那之后,你减少你的星数(星号-)并画一条线#2
- 当你的星星为0时,重复到中间标记
- 当您的代码看到星号为0时,则从相同的循环开始,但这次是每次迭代中的星号+
- 在我的例子中,这会一直重复,直到开始计算星号,即4
如果有任何问题,您可以在网站上发布代码:)您应动态评估每行的间距区域。在一张纸上手动绘制所需形状,并尝试创建函数,该函数以行号作为参数,并返回特定行中所需的空间量。例如:
* *
* *
*
* *
* *
每行中的空格数等于:
0 [*] 3 [*]
1 [*] 1 [*]
2 [*]
1 [*] 1 [*]
0 [*] 3 [*]
请注意,在每一行中,您需要两个循环:第一个循环用于初始空间和中间空间。我20年前写的解决方案(当时我还在学习):
- 制作一个行-列数组,例如
char-screen[80][25];
- 通过将所有条目设置为
''
- 通过设置
screen[x][y]='*';
- 完成后,通过调用
cout
2080次来渲染整个屏幕[80][25]
(字符2000次,endl
80次)
在您的例子中,您知道如何绘制\
。您可以轻松地进行调整。但是使用我的方法,您可以在相同的屏幕中绘制/
数组。完成后,在最后一步中,您会有一个重叠的/
和\
:X
我用这个方法,因为我们不得不画一个圆,这真的是非常困难。而且,是的,现在我可能会使用<代码> STD::向量屏幕但是屏幕是80x25:( < p>我已经在java中写下了以下函数/方法。你可以将它转换成C++,
public static void printX(int x) {
char[] chars = new char[x];
for (int i = 0; i < x; i++) {
chars[i] = '*';
chars[x - 1 - i] = '*';
for (int j = 0; j < x; j++) {
if (j == i || j == (x - 1 - i)) {
continue;
}
chars[j] = ' ';
}
System.out.println(new String(chars));
}
}
#包括“stdafx.h”
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
int i,d,a=1,b=12,c,e=1;
对于(i=1;iintn=11,i=0,k=0,j=0;
对于(i=0;i#包括
使用名称空间std;
int main()
{
int i,j;
对于(i=1;i#包括“stdafx.h”
#包括
使用名称空间std;;
int _tmain(int argc,_TCHAR*argv[]
{
int i,k,j;
对于(i=1;i如何制作x形状?我只制作了形状(\)而不是整个x,经过这么多的努力,解决方案是#包括“stdafx.h”#包括使用名称空间std;int main(int argc,char*argv[]){int i,d,a=1,b=12,c,e=1;例如(i=1;i如何在整个程序中仅使用一个星号?虽然此代码确实绘制了一个“X”,但您可能希望解释各个部分,以便OP能够理解,甚至可能修改它以满足他/她自己的需要(例如,修改线条的厚度)
* *
* *
*
* *
* *
0 [*] 3 [*]
1 [*] 1 [*]
2 [*]
1 [*] 1 [*]
0 [*] 3 [*]
public static void printX(int x) {
char[] chars = new char[x];
for (int i = 0; i < x; i++) {
chars[i] = '*';
chars[x - 1 - i] = '*';
for (int j = 0; j < x; j++) {
if (j == i || j == (x - 1 - i)) {
continue;
}
chars[j] = ' ';
}
System.out.println(new String(chars));
}
}
* *
* *
*
* *
* *
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i, d, a=1,b=12,c ,e=1;
for(i = 1; i <= 6; i++)
{
for (d=1; d<i;d++) {cout <<" ";}
cout<<"***";
for (c=a+1; c<b;c++) {cout <<" ";}
{cout<<"***";}
for(b=12-i;b<i;b++)
{cout<<"***";}
cout<<endl;
a++;
}
for( i = 1; i <= 3; i++)
{
for ( d=6; d>i;d--) {cout <<" ";}
cout<<"***";
for (c=0; c<e-1;c++) {cout <<" ";}
{cout<<"***";}
cout<<endl;
e++;
}
return 0;
}
int n=11,i=0,k=0,j=0;
for(i=0;i<n;i++)
{
if(i<(n/2))
{
cout<<endl;
for(j=0;j<i;j++)
{
cout<<" ";
}
cout<<"*";
for(k=n/2;k>i;k--)
{
cout<<" ";
}
cout<<"*";
}
else
{
cout<<endl;
for(k=n-1;k>i;k--)
{
cout<<" ";
}
cout<<"*";
for(j=n/2;j<i;j++)
{
cout<<" ";
}
cout<<"*";
}
}
#include<iostream>
using namespace std;
int main()
{
int i, j;
for(i = 1;i<= 5;i++)
{
for(j = 1;j<= 5;j++)
{
if((i == j)||(j==(5+1)-i))
{
cout << "*";
}
else{
cout << " ";
}
}
cout<< endl;
}
system("pause");
}
#include "stdafx.h"
#include <iostream>
using namespace std;;
int _tmain(int argc, _TCHAR* argv[])
{
int i,k,j;
for (i=1;i<8;i++)
{
for (int k=0;k<i;k++)
{
cout<<" ";
}
cout<<"*";
for (int k=8;k>i;k--)
{
cout<<" ";
}
cout<<"*";
cout<<endl;
}
for (i=1;i<8;i++)
{
for (int k=8;k>i;k--)
{
cout<<" ";
}
cout<<"*";
for (int k=0;k<i;k++)
{
cout<<" ";
}
cout<<" *";
cout<<endl;
}
system("Pause");
return 0;
}