#include <iostream>
using namespace std;
int main()
{
int a, b, c, i;
cin >> a >> b >> c;
for ( i = 0; i < a; i++)
cout << "*" << endl;
for ( i = 0; i < b; i++)
cout << "*" << endl;
for ( i = 0; i < c; i++)
cout << "*" << endl;
}
我知道输出与:
相同for ( i = 0; i < a + b + c; i++ ){
cout << "*" << endl;
}
因此对于2 3 1我得到:
*
*
*
*
*
*
我想要的是:
*
* *
* * * //Horizontal distance between 2 shapes don't matter.
考虑到打印必须从上到下完成,我不知道如何将光标放在正确的位置。
编辑:我不清楚打印的顺序。我希望以下示例有所帮助,如果可能的话,每列的打印必须使用单独的功能。
第一循环:
*
*
第二次循环:
*
* *
* *
最后一个循环:
*
* *
* * *
打印必须完全按照该顺序进行。打印第一列,然后打印第二列,然后继续打印。
答案 0 :(得分:5)
您需要重新考虑一下您的打印。首先,您需要找出最高的列,因为这是您将拥有的行数。
我会做这样的事情:
int high = std::max(std::max(a, b), c);
for (int i = high; i > 0; i--)
{
if (i <= a)
std::cout << " * ";
else
std::cout << " ";
if (i <= b)
std::cout << " * ";
else
std::cout << " ";
if (i <= c)
std::cout << " * ";
else
std::cout << " ";
std::cout << std::endl;
}
如果您想要任意数量的列,您可能希望将它们放在std::vector
中,并为此设置内部循环。
对于任意数量的列,您可以使用以下内容:
// Get the input
std::cout << "Please enter numbers, all on one line, and end with ENTER: ";
std::string input;
std::getline(std::cin, input);
// Parse the input into integers
std::istringstream istr(input);
std::vector<int> values(std::istream_iterator<int>(istr),
std::istream_iterator<int>());
// Get the max value
int max_value = *std::max_element(values.begin(), values.end());
// Print the columns
for (int current = max_value; current > 0; current--)
{
for (const int& value : values)
{
if (current <= value)
std::cout << " * ";
else
std::cout << " ";
}
std::cout << std::endl;
}
答案 1 :(得分:0)
代码:
#include <iostream>
using namespace std;
int f[3];
int main()
{
int a, b, c, i;
cin >> f[0] >> f[1] >> f[2];
int m = max(max(f[0],f[1]),f[2]);
for(int i=m;i>=1;i--)
{
for(int j=0;j<3;j++)
if (f[j]<i) cout <<' ';
else cout <<'*';
cout<<endl;
}
}
测试:
Input: 2 3 1
Output:
*
**
***
答案 2 :(得分:-1)
好的代码检查这个
#include<conio.h>
void main()
{
int a[5];
int i,j,max;
clrscr();
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
max=a[0];
if(max<a[i])
max=a[i];
}
printf("\n");
for(i=0;i<max;i++)
{
putchar(max);
}
printf("\n");
printf("\n");
for(i=0;i<5;i++)
{
printf("%d \t--->\t",a[i],putchar(max));
for(j=1;j<=a[i];j++)
{
printf("*");
}
printf(" ");
printf("\n");
}
printf("\n");
for(j=max;j>0;--j)
{
putchar(max);
}
getch();`
}
&GT;