#include <cstdlib> #include <iostream> using namespace std; #define MAXLEN 40 void printline(int i) {//i用来指示当前行剩余钻石的个数 char cstr[MAXLEN] = {0}; memset(cstr, '\0', MAXLEN); int mid = MAXLEN / 2; int j, k; //初始化,根据奇偶决定是否打印第一行 if (i % 2 != 0) { cstr[mid] = '*'; j = mid - 2; k = mid + 2; i --; } else { j = mid - 1; k = mid + 1; } //从奇数的第二行和偶数的第一行开始,打印算法相同 while (i > 0) { cstr[j] = cstr[k] = '*'; j -= 2; k += 2; i -= 2; } for (int x = 0; x < MAXLEN; x++) { cout<<cstr[x]; } cout<<endl; } int main(int argc, char *argv[]) { for (int i = 1; i < 20; i++) { printline(i); } system("PAUSE"); return EXIT_SUCCESS; }