我想编写一个程序,用星号(*)
绘制X字母的形状#include "stdafx.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
int i, j;
for(i = 1; i <= 9; i++){
for(j = 1; j <= 12; j++){
if(i == j){
cout << "***";
}else{
cout << " ";
}
}
cout<< endl;
}
return 0;
}
我是编程新手
我只做了(\)如何制作整个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 (c=a+1; c<b;c++) {cout <<" ";}
{cout<<"***";}
for(b=12-i;b<i;b++)
{cout<<"***";}
cout<<endl;
a++;
}
return 0;
}
我将(\ //)的顶部分为三部分 [空间] [] [空间] [
答案 0 :(得分:3)
我在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));
}
}
如果将上述函数/方法称为printX(5);输出将是5x5大小并包含X字符。
* *
* *
*
* *
* *
答案 1 :(得分:1)
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
首先,请原谅我非常不平衡的X.对于初学者来说,我会给出一个算法供你思考,而不是用勺子喂一个代码。
解释程序不知道如何回到已经打印机的行。 因此,您必须在循环的一次迭代中绘制X的两侧。
之后,你减少星数(星号 - )并画出第2行。
当你的星星为0时重复到中间标记。
当你的代码看到星号是0时,那么从相同的循环开始,但这次是每次迭代中的星星。
这种情况一直持续到明星的起始数,即我的情况。
如果有任何问题,您可以在网站上发布您的代码:)
答案 2 :(得分:0)
您应动态评估每行的间距区域。在纸上手动绘制所需的形状并尝试创建函数,该函数将行号作为参数并返回特定行中所需的空间量。例如:
* *
* *
*
* *
* *
每行中的空格量等于:
0 [*] 3 [*]
1 [*] 1 [*]
2 [*]
1 [*] 1 [*]
0 [*] 3 [*]
注意,在每行内部你需要两个循环:首先是初始和中间空间。
答案 3 :(得分:0)
我20年前写的解决方案(当时我还在学习的时候):
char screen[80][25];
' '
screen[x][y]='*';
screen[80][25]
2080次渲染整个cout
。 (字符为2000次,endl
为80次)在您的情况下,您知道如何绘制\
。你可以轻松地适应这一点。但是使用我的方法,您可以在同一个/
数组中绘制screen
。当您完成后,最后一步有/
和\
重叠:X
我使用这种方法,因为我们必须绘制一个圆圈,这真的要困难得多。是的,现在我可能会使用std::vector<std::string> screen
,但当时屏幕确实是80x25:)
答案 4 :(得分:0)
#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;
}
答案 5 :(得分: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<<"*";
}
}
答案 6 :(得分:0)
#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");
}
答案 7 :(得分:-1)
#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;
}