CPP-方形空心-怎么了

CPP- Square Hollow- What is the mistake?

本文关键字:怎么了 空心 方形 CPP-      更新时间:2023-10-16

有人能帮我吗?我担心这段代码,它在第一轮编译时编译得很好,但当它循环时,它不会正确打印出来。我找不到错误。。非常感谢。当我第一次用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++;
        }
    }
}

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

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

while(true)循环内部的开始

#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 ();
}