# 等腰三角形 本题目要求你在控制台输出一个由数字组成的等腰三角形。具体的步骤是: 先用1,2,3,…的自然数拼一个足够长的串 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。 比如,当三角形高度是8时: ![](https://img-blog.csdnimg.cn/20190203174943179.png) 输入,一个正整数n(3 using namespace std; string str; stringstream ss; ``` ### after ```cpp ``` ## 答案 ```cpp int main() { int n; cin >> n; int x = 2 * n - 1; for (int i = 1; i <= 1500; i++) { string str1; ss << i; ss >> str1; str += str1; ss.clear(); } int length = 4 * n - 4; for (int i = 1; i <= n; i++) { if (i != n && i != 1) { for (int j = 1; j <= n + i - 1; j++) { if (j == n - i + 1) { cout << str[i - 1]; } else if (j == 2 * n - (n - i + 1)) { cout << str[4 * n - 4 - (i - 1)] << endl; } else { cout << '.'; } } } else if (i == 1) { for (int x = 1; x <= n; x++) { if (x == n) { cout << '1' << endl; } else { cout << '.'; } } } else { for (int m = 1; m <= 2 * n - 1; m++) { cout << str[n + (m - 2)]; } } } return 0; } ``` ## 选项 ### A ```cpp int main() { int n; cin >> n; int x = 2 * n - 1; for (int i = 1; i <= 1500; i++) { string str1; ss << i; ss >> str1; str += str1; ss.clear(); } int length = 4 * n - 4; for (int i = 1; i <= n; i++) { if (i != n && i != 1) { for (int j = 1; j <= n + i - 1; j++) { if (j == n - i + 1) { cout << str[i - 1]; } else if (j == 2 * n - (n - i + 1)) { cout << str[4 * n - 4 - i] << endl; } else { cout << '.'; } } } else if (i == 1) { for (int x = 1; x <= n; x++) { if (x == n) { cout << '1' << endl; } else { cout << '.'; } } } else { for (int m = 1; m <= 2 * n - 1; m++) { cout << str[n + (m - 2)]; } } } return 0; } ``` ### B ```cpp int main() { int n; cin >> n; int x = 2 * n - 1; for (int i = 1; i <= 1500; i++) { string str1; ss << i; ss >> str1; str += str1; ss.clear(); } int length = 4 * n - 4; for (int i = 1; i <= n; i++) { if (i != n && i != 1) { for (int j = 1; j <= n + i - 1; j++) { if (j == n - i + 1) { cout << str[i - 1]; } else if (j == 2 * n - (n - i + 1)) { cout << str[4 * n - 4 - (i + 1)] << endl; } else { cout << '.'; } } } else if (i == 1) { for (int x = 1; x <= n; x++) { if (x == n) { cout << '1' << endl; } else { cout << '.'; } } } else { for (int m = 1; m <= 2 * n - 1; m++) { cout << str[n + (m - 2)]; } } } return 0; } ``` ### C ```cpp int main() { int n; cin >> n; int x = 2 * n - 1; for (int i = 1; i <= 1500; i++) { string str1; ss << i; ss >> str1; str += str1; ss.clear(); } int length = 4 * n - 4; for (int i = 1; i <= n; i++) { if (i != n && i != 1) { for (int j = 1; j <= n + i - 1; j++) { if (j == n - i + 1) { cout << str[i - 1]; } else if (j == 2 * n - (n - i + 1)) { cout << str[4 * n - 4 + i] << endl; } else { cout << '.'; } } } else if (i == 1) { for (int x = 1; x <= n; x++) { if (x == n) { cout << '1' << endl; } else { cout << '.'; } } } else { for (int m = 1; m <= 2 * n - 1; m++) { cout << str[n + (m - 2)]; } } } return 0; } ```