【C++】实心改空心菱形

能用C++语言改写成空心菱形吗


#include 
#include 
using namespace std;
int main()
{
 char ch;
 int i, j;
 //上半部分
 i = 1;
 while (i <=7) //图形上半部分有 7 行
 { 
 j = 0;
 cout << setw(30 - i);
 
 while (j <=(2 * i - 1)/2) //行的前部分字母
 {
 ch = 'A' + j;
 cout << ch; 
 j++;
 } 
 while (j < 2 * i - 1) //行的后部分字母
 {
 ch = ch - 1;
 cout << ch; 
 j++;
 }
 cout << endl;
 i++;
 }
 //下半部分
 i = 7-1; //图形下半部分有 7-1 行
 while (i>0)
 { 
 j = 0;
 cout << setw(30 - i);
 while (j <= (2 * i - 1) / 2)
 {
 ch = 'A' + j;
 cout << ch;
 j++;
 }
 while (j < 2 * i - 1)
 {
 ch = ch - 1;
 cout << ch;
 j++;
 }
 cout << endl;
 i--;
 }
}


参考如下:


#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
 char ch;
 int i, j;
 //上半部分
 i = 1;
 while (i <=7) //图形上半部分有 7 行
 { 
     j = 0;
     cout << setw(30 - i);
 
     while (j <=(2 * i - 1)/2) //行的前部分字母
     {
         ch = 'A' + j;
         if (j != 0) 
             cout << ' ';
         else
             cout << ch; 
         j++;
     } 
     while (j < 2 * i - 1) //行的后部分字母
     {
         ch = ch - 1;
         if (ch == 'A')
             cout << ch; 
         else
             cout << ' ';
         j++;
     }
     cout << endl;
     i++;
 }
 //下半部分
 i = 7-1; //图形下半部分有 7-1 行
 while (i>0)
 { 
     j = 0;
     cout << setw(30 - i);
     while (j <= (2 * i - 1) / 2)
     {
         ch = 'A' + j;
         if (j != 0) 
             cout << ' ';
         else
             cout << ch; 
         j++;
     }
     while (j < 2 * i - 1)
     {
         ch = ch - 1;
         if (ch == 'A')
             cout << ch; 
         else
             cout << ' ';
         j++;
     }
     cout << endl;
     i--;
 }
}