Cho chuỗi str, in mẫu ngược dần: hàng 1 in 1 ký tự, hàng 2 in 2 ký tự ngược, hàng 3 in 3 ký tự ngược... Nếu hết chuỗi thì điền *.
Ví dụ
Input: "abcd" Output: a c b * * d
Input: "tutorialspoint" Output: (mẫu hình tam giác ngược với * điền)
Phương pháp:
- Duyệt
itừ 0, tínhk = (i*(i+1))/2 - 1. - Với mỗi
jtừ 0 đếni-1: nếuk >= n-1in*, ngược lại instr[k]; giảmk.
Mã nguồn C
#include <stdio.h>
int reverse_it(char str[], int n) {
int i, j, k;
for (i = 0; i < n && k < (n-i)*2; i++) {
k = (i * (i + 1)) / 2 - 1;
for (j = 0; j < i && k < (n-i)*2; j++) {
if (k >= n-1) printf("* ");
else printf("%c ", str[k]);
k--;
}
printf("\n");
}
return 0;
}
int main() {
char str[] = "tutorialspoint";
int size = sizeof(str) / sizeof(str[0]);
reverse_it(str, size);
return 0;
}
Kết quả
Hiển thị mẫu tam giác chuỗi ngược với * điền (xem hình ảnh).