头歌C语言实验 辅助练习7:多行多列的图形输出

第1关:定制长方形

问题描述

根据用户的输入数据,输出满足要求的定制长方形。 正整数n控制长方形的宽度和高度。 字符c指定长方形由指定的字符c构成。 若字符solid的值为‘y’表示需要输出实心长方形,否则需要输出空心长方形。 空心长方形的中心部分用空格填充。

例如: 当n = 4,c = ‘#’,solid = ‘y’时应该输出:

####
####
####
####

n = 4, c = ‘x’, solid = ‘n’时应该输出:

xxxx
x x
x x
xxxx

输入

输入数据只有一行,由一个正整数和两个字符构成,分别表示长方形尺寸n、组成字符c和是否实心solid,三个数据两两之间都用一个空格分开。

输出

根据输入数据输出定制的长方形。

输入示例

4 x n

输出示例

xxxx
x x
x x
xxxx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>

int main() {
int n, i, j;
char c, solid;
scanf("%d %c %c", &n, &c, &solid);

if (solid == 'y') {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%c", c);
}
printf("\n");
}
} else {
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (i == 0 || i == n - 1 || j == 0 || j == n - 1) {
printf("%c", c);
} else {
printf(" ");
}
}
printf("\n");
}
}

return 0;
}

第2关:字母三角形

问题描述

根据用户输入的正整数n,输出如示例所示的字母三角形。

输入

一个正整数n。

输出

输出如示例所示的字母三角形。 同一行的每两个大写字母之间用一个空格分开。 为简化程序起见,每一行的末尾有一个多余的空格。 最后一行的行首不要有多余的空格。

输入示例

4

输出示例

A
B A B
C B A B C
D C B A B C D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

int main() {
int n, i, j;

scanf("%d", &n);

for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++) {
printf(" ");
}
for (j = i; j >= 0; j--) {
printf("%c ", 'A' + j);
}
for (j = 1; j <= i; j++) {
printf("%c ", 'A' + j);
}
printf("\n");
}
return 0;
}

第3关:倒置的字母三角形

问题描述

请你编写一段程序,输出一个由指定行数的大写字母构成的倒置三角形,这个字母三角形必须满足下列条件(请参照示例):

  • 倒置三角形的最下角顶点是固定字符‘A’;
  • 倒置三角形的中心线上的字符从下到上依次是‘A’、‘B’、‘C’、……;
  • 倒置三角形每一行上的字母必须按中心线左右对称:在中心线左侧,字母依次减小,在中心线右侧,字母依次增大;
  • 倒置三角形每一行上的每两个字母之间用一个空格分开,第一行的第一个字母前没有空格。

输入

一个正整数n。

输出

输出指定行数的倒置字母三角形。 同一行的每两个大写字母之间用一个空格分开。 为简化程序起见,每一行的末尾有一个多余的空格。 第一行的行首不要有多余的空格。

输入示例

4

输出示例

G F E D E F G
E D C D E
C B C
A

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>

int main() {
int n;
int i, j, t;
char c = 'A';
scanf("%d", &n);
for (i = n; i >= 0; i--) {
// 第一个字母为 'A' + 2(n-1)
t = 2 * (i - 1);
for (j = 0; j < n - i; j++)
printf(" ");
for (j = t; j >= i - 1; j--) {
printf("%c ", c + j);
}
for (j = i; j <= t; j++) {
printf("%c ", c + j);
}
if (i > 1) {
printf("\n");
}
}
return 0;
}