c语言while循环输出倒三角形
时间: 2023-11-30 09:40:23 浏览: 187
这段C语言代码使用while循环输出倒三角形,具体实现方法是先根据输入的数字计算出需要输出的行数,然后分别输出上半部分和下半部分的倒三角形。其中,上半部分的行数从n开始递减,下半部分的行数从1开始递增。最后,还输出了中间三角形的角尖上的字符个数。
代码如下:
```
#include <stdio.h>
int main() {
int num, i, j, k;
char c;
scanf("%d %c", &num, &c);
int sum = 1; // 先假设需要sum个字符
int n = 0; // 给出的字符可以有n行的沙漏
while (sum <= num) {
sum += 2 * (2 * (n + 1) + 1);
n++; // 求出来的为上下两个倒三角形的行数,从0开始
}
for (i = n; i > 0; i--) {
for (j = 0; j < n - i; j++) {
printf(" ");
}
for (k = 0; k < 2 * i - 1; k++) {
printf("%c", c);
}
printf("\n");
} // 输出上半部分
for (i = 1; i < n; i++) {
for (j = 0; j < n - i - 1; j++) {
printf(" ");
}
for (k = 0; k < 2 * (i + 1) - 1; k++) {
printf("%c", c);
}
printf("\n");
} // 输出下半部分
printf("%d", (num - 2 * (n + n * (n - 1)) + 1)); // 运用了等差数列的前n项和公式来求。
// 因为2个n+n*(n-1)对于沙漏来说,中间三角形的角尖(1)被减了两次,所以要加回来。
return 0;
}
```
阅读全文