CPP-方形空心 - 错误是什么?

时间:2013-08-28 20:35:13

标签: c++ xcode square

有人可以帮帮我吗?我把这个代码编写成第一轮编译好但是当它循环时它没有正确打印出来。我找不到错误..谢谢! 当我用Xcode编译它时,它给了正确的方形空心,但是当我第二次输入时它没有打印出任何正方形。

#include <iostream>
using std::cout;
using std::cin;
using std::endl;


#include <string>
using std::string;
#include <cstdlib>

int main()
{
    int a;
    int b;
    int num=0;
    string buf;

    //initialize a and b
    a = 1;
    b = 1;

    // ask user to repeat the process again at end of the first promt
    while( true )
    {
        cout << "Please enter size of square between #1-20: \n";
        cin >> buf; num = atoi (buf.c_str());
        cin.ignore(1000, 10);

        if( num < 1 || num > 20 )
            break;

        //process of printing square
        while ( num >= a)
        {
            b = 1;
            while ( num >= b )
            {
                if ( a == 1 || a == num || b == 1 || b == num )
                    cout << "*";
                else
                    cout << " ";
                b++;
            }
            cout << endl;
            a++;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您没有重置a和b变量,需要设置这些行

//initialize a and b
a = 1;
b = 1;

while(true)循环内部的开头

答案 1 :(得分:0)

#include<iostream>
#include<conio>
main()
{
    int squareHeight, squareWidth;
    cout<< "Enter Height:  ";
    cin>>  squareHeight;
    cout<< "Enter Widht:   ";
    cin>>  squareWidth;
  for(int width=1; width<=squareHeight; width++)
    {
   if(width <= 1)
   for(int width=1; width<=squareWidth; width++)
            {
                cout<< "*";
            }
        else if(width<squareHeight)
        {
            cout<< endl;
for(int width2=1; width2<=squareWidth; width2++)
      {
      if(width2==1 || width2==squareWidth)
                    cout<< "*";
                else
                    cout<< " ";
            }
        }
        else
        {
            cout<< endl;
for(int width3=1; width3<=squareWidth; width3++)
   {
                cout<<"*";
            }
        }
    }
    getch ();
}