我正在尝试打印这样的模式
*******
* *
* *
* *
* *
* *
*******
在这里,它应该看起来像一个空盒子。 但不知怎的,我没有更接近
到目前为止我编码了
#include <iostream>
using namespace std;
int main( int argc, char ** argv ) {
for(int i=1;i<=7;i++)
{
for(int j=1;j<=7;j++)
{
if(j==1||j==7)
printf("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
我的输出是
* *
* *
* *
* *
* *
* *
* *
只有循环
才会好答案 0 :(得分:11)
if(j==1||j==7)
printf("*");
else printf(" ");
此逻辑适用于除第一个和最后一个之外的所有行。因此,您必须考虑行值并对第一行和最后一行进行特殊检查。这两个没有空格。
[假设这是一个家庭作业,我只是给了一个提示。你几乎已经完成了它,上面的提示应该足以使这个工作。]
答案 1 :(得分:6)
您的if
条件只需要:
if (i==1 || i==7 || j==1 || j==7)
也就是说,您需要检查您是在第一行还是最后一行以及第一列还是最后一列,然后打印*
。
答案 2 :(得分:2)
您需要在第一行和最后一行中采取不同的行为:
int W = 7, H = 7;
for(int i=0;i<=H;i++)
{
for(int j=0;j<=W;j++)
{
// if row is the first or row is the last or column is the first of column is the last
if (i == 0 || i == H-1 || j == 0 || j == W-1)
printf("*");
else printf(" ");
}
printf("\n");
}
答案 3 :(得分:2)
你非常接近。问题出在这一行:
if(j==1||j==7)
更改它以便它还考虑顶行和底行。
祝你好运答案 4 :(得分:1)
此功能可以正常工作:
#include <iostream>
#include <string>
void printBox(int width, int height) {
if (width < 2 or height < 1) return;
for (int i = 1; i <= height; i++) {
if (i == 1 or i == height) {
std::string o(width, '*');
std::cout << o << std::endl;
} else {
std::string o(width-2, ' ');
o = '*' + o + '*';
std::cout << o << std::endl;
}
}
}
可以用作:
printBox(2, 2);
打印:
**
**
或者作为:
printBox(6, 4);
打印:
******
* *
* *
******
答案 5 :(得分:1)
由于我不是编程方面的专家,我想出了这个简单的代码:
#include <stdio.h>
int main(void)
{
int i,j,k,n;
printf("Enter no of rows : \n");
scanf("%d", &n);
for(i=0; i<n; i++)
{
if(i == 0 || i == (n-1))
{
for(j=0; j <n-1; j++)
printf("*");
}
else
{
for(k=0; k<n; k++)
{
if (k == 0 || k == (n-2))
printf("*");
else
printf(" ");
}
}
printf("\n");
}
return 0;
}
答案 6 :(得分:1)
for(int j=1;j<=7;j++)
{
if(j==1||j==7)
printf("*******\n");
else
printf("* *\n");
}
printf("\n");
答案 7 :(得分:0)
您正在平等对待所有行,并忽略必须以不同方式处理第一行和最后一行的事实。你需要像
这样的东西if (i == 1 || i == 7)
{
for (j=1;j<7;j++) printf("*");
printf("\n");
}
else { /* your routine */ }
答案 8 :(得分:0)
这就是你的代码应该是这样的:
#include <iostream>
using namespace std;
int main( int argc, char ** argv ) {
for(int i=1;i<=7;i++)
{
for(int j=1;j<=7;j++)
{
if(j == 1 || j == 7)
printf("*");
else if (i == 1 || i == 7 ) //added this check
printf ("*");
else printf(" ");
}
printf("\n");
}
return 0;
}
答案 9 :(得分:0)
你需要一个嵌套循环。因为你有两个选项,你需要两个嵌套循环。一个用于空格,一个用于在迭代1和7(0和6)中填充'*'。
用'*'打印第1行和第7行,填充边界星。 使用
if (i == 0 || i == 7) // in-case you're initializing i with 0
// loop for printf ("*");
答案 10 :(得分:0)
正如其他人所说,你需要处理第一行和最后一行。构建每一行的一种方法是使用一个字符串构造函数,因此您不需要编写内部循环。
#include <string>
#include <iostream>
using namespace std;
int main()
{
int height = 7, width = 7;
for( int i=0; i<height; i++ )
{
char c = (i == 0 || i == height-1) ? '*' : ' ';
string line(width, c);
line[0] = line[width-1] = '*';
cout << line << endl;
}
return 0;
}
答案 11 :(得分:0)
#include <iostream>
#include<iomanip>
using namespace std;
main()
{
int Width;
char MyChar;
int LCV; //Loop control
int LCVC, LCVR; //Loop control for LCVC=Columns LCVR=Rows
cout<<"\nEnter Width: "; cin>>Width;
cout<<"\nEnter a Character: "; cin>>MyChar;
for (LCV=1;LCV<=Width;LCV++)
{cout<<MyChar;}
cout<<endl;
for(LCVC=1;LCVC<=Width;LCVC++)
{ cout<<MyChar<<setw(Width-1)<<MyChar<<endl;
}
for (LCV=1;LCV<=Width;LCV++)
{cout<<MyChar;}
cout<<endl;
system("pause");
}
/*
Enter Width: 6
Enter a Character: #
######
# #
# #
# #
# #
# #
# #
######
Press any key to continue . . .
*/
答案 12 :(得分:0)
打印此图案 输入数字=每个数字,例如23517 **
*
然后 ** 的 * ***** * ******* 然后 ** * * * ***** *
和 * * * * *
答案 13 :(得分:0)
我想出了一个简单的解决方案。您可以使其非常简单,而不是使用以前使用的char数组指针。
#include <iostream>
using namespace std;
int main() {
int rows = 7;
for(int i = 1; i<=rows;i++){
if(i == 1 || i == rows){
cout<<"*******"<<endl;
}else{
cout<<"* *"<<endl;
}
}
return 0;
} // This code outputs 7 rows with 7 characters in 1st and 7 line each and 1 each character at the start and last position of the remaining rows
但是,如果您想要自定义行数,则可以尝试以下代码
#include <iostream>
using namespace std;
int main() {
int rows;
cout<<"Enter the number of rows: ";
cin>>rows; // gets input rows from the user
for(int i = 1; i<=rows;i++){
if(i == 1 || i == rows){
cout<<"*******"<<endl;
}else{
cout<<"* *"<<endl;
}
}
return 0;
}
答案 14 :(得分:0)
您可以添加:
`if(i==0 || i==6)
{
cout<<"*";
}`