Phần này xem cách tạo kim tự tháp rỗng và hình thoi (diamond) dùng C. Kim tự tháp đặc dễ tạo. Để làm rỗng, thêm vài thủ thuật.
Kim tự tháp rỗng (Hollow Pyramid)
Dòng đầu in 1 sao, dòng cuối in n sao. Các dòng khác in đúng 2 sao ở đầu và cuối dòng, giữa có khoảng trống.
Ví dụ mã
#include <stdio.h>
int main() {
int n, i, j;
printf("Nhập số dòng: ");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
for(j = 1; j <= (n-i); j++) { // in khoảng trống trước sao
printf(" ");
}
if(i == 1 || i == n) { // dòng đầu/cuối in sao liên tục
for(j = 1; j <= i; j++) {
printf("* ");
}
} else {
printf("*"); // sao đầu và cuối dòng
for(j = 1; j <= 2*i-3; j++) { // in khoảng trống làm rỗng
printf(" ");
}
printf("*");
}
printf("\n");
}
}Kết quả
Nhập số dòng: 20
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * * * * * * * * * * * * * *Hình thoi rỗng (Hollow Diamond)
Dòng đầu và cuối in 1 sao. Các dòng khác in 2 sao đầu/cuối, giữa có khoảng trống. Hình thoi có 2 phần: nửa trên và nửa dưới. Nửa trên tăng khoảng trống, nửa dưới giảm. Chia số dòng bằng biến mid.
Ví dụ mã
#include <stdio.h>
int main() {
int n, i, j, mid;
printf("Nhập số dòng: ");
scanf("%d", &n);
if(n % 2 == 1) { // n lẻ, tăng 1 thành chẵn
n++;
}
mid = (n/2);
for(i = 1; i <= mid; i++) {
for(j = 1; j <= (mid-i); j++) {
printf(" ");
}
if(i == 1) {
printf("*");
} else {
printf("*"); // sao đầu và cuối dòng
for(j = 1; j <= 2*i-3; j++) {
printf(" ");
}
printf("*");
}
printf("\n");
}
for(i = mid+1; i < n; i++) {
for(j = 1; j <= i-mid; j++) {
printf(" ");
}
if(i == n-1) {
printf("*");
} else {
printf("*"); // sao đầu và cuối dòng
for(j = 1; j <= 2*(n-i)-3; j++) {
printf(" ");
}
printf("*");
}
printf("\n");
}
}Kết quả
Nhập số dòng: 15
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*