c++中编写一个程序,读取一个正方形的边长,然后利用星号和空格,打印具有该边长的一个空心正方形。

程序应生成边长在1~20之间的所有正方形。假如输入5,则输出效果为
*****
* *
* *
* *
*****
我编的程序为
int number;
int number1;
cout<<"Enter a number."<<endl;
cin>>number;

for(int number;number >= 1 ; number -- )
cout<<"*";

cout<<endl;

for(int number1 ;number1 == (number - 2),number1 >=1 ;number1 --){
cout<<"*";
for(int number1 ;number1==(number-2),number1 >= 1 ;number1 --)
cout<<" ";
cout<<"*"<<endl;
}

for(int number ;number >=1 ;number --)
cout<<"*";

cout<<endl;

可是总是出不来所要的图形,麻烦各位看看,指点一下怎样修改或怎样编更好。谢谢了!

#include "stdafx.h"

#include "iostream"

using namespace std; 

int main(int argc, char* argv[])

{

 int number;

    cout<<"Enter a number:";

    cin>>number;

 cout<<endl;

    

 for (int i=1; i<=number; i++)

 {

  if (i==1 || i==number)

  {

   for(int j=1; j<=number; j++)

    cout<<"*";

   cout<<endl;

  }

  else

  {

   cout<<"*";

   for(int j=2;j<=number-1;j++)

    cout<<" ";

   cout<<"*"<<endl;

  }

 }

    cout<<endl<<"OK..."<<endl;

 return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-25
int number;
int number1;
cout<<"Enter a number."<<endl;
cin>>number;

for(int number;number >= 1 ; number -- )
cout<<"*";
这是你程序的前部分。显然你重复定义了变量number和number1.你的编译器没报错吗?number1是做什么用的?而且没赋初值。把中间那段改成
for(number1 = (number - 2),number1 >=1 ;number1 --){
cout<<"*";
for(number1 =(number-2),number1 >= 1 ;number1 --)
cout<<" ";
cout<<"*"<<endl;
}
试试先,不行再问
第2个回答  2011-01-26
#include <iostream.h>
int main(void)
{
int i,j,a;
char c('y');
do{
do{cout<<"请输入菱形的边长:";
cin>>a;cout<<endl;}while(a<=0);
for(i=0;i<=a;++i)
{
for(j=0;j<a-i;++j)cout<<' ';
for(j=0;j<=i;++j)cout<<'*'<<' ';
cout<<endl;
}
for(i=0;i<a;++i)
{
for(j=0;j<=i;++j)cout<<' ';
for(j=0;j<a-i;++j)cout<<'*'<<' ';
cout<<endl;
}
cout<<endl;
cout<<"继续?(y/n):";
cin>>c;
}while(c=='y'||c=='Y');
return 0;
}
这个比一楼的简洁,比二楼的安全些,重复运行很方便~~望采纳~~
第3个回答  2011-01-28
用个二维数组可能会简单点
相似回答