0

有人可以帮帮我吗?我写了这段代码,它在第一轮编译得很好,但是当它循环时,它不能正确打印出来。我找不到错误..谢谢!当我首先用 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++;
        }
    }
}
4

2 回答 2

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 ();
}
于 2014-01-06T22:09:07.350 回答
0

你没有重置 a 和 b 变量,你需要把这些行

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

while(true)循环的开头

于 2013-08-28T21:00:32.270 回答