本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。
输入格式:
输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。
输出格式:
输出空心字符菱形。
输入样例:
B 5
结尾无空行
输出样例:
B C C D D C C B
结尾无空行
思路:
将上下两部分分开输出
通过选择输出每行字符之间的空格
通过ASCII码控制字符变化
代码如下:
//7-3 编程打印空心字符菱形 (15 分)
#include<stdio.h>
int main()
{
int n,i,j,m;
char c;
scanf("%c %d", &c, &n);
m = n/2;
//先输出菱形的上部分
for (i=1; i<=m+1; i++) {
for (j=0; j<m+1-i; j++) { //每一行先输出字符前的空格
printf(" ");
}
for (j=0; j<=i*2-2; j++) {
if ( j==0||j==i*2-2 ) { //利用选择输出每行字符之间的空格
printf("%c", c);
} else {
printf(" ");
}
}
c ++; //控制字符变化
printf("\n");
}
c--; //使字符为中间内行的字符
//再输出菱形的下部分
for (i=m; i>=1; i--) { //与上部分思路相同
for (j=0; j<m+1-i; j++) {
printf(" ");
}
c --;
for (j=0; j<=i*2-2; j++) {
if ( j==0||j==i*2-2 ) {
printf("%c", c);
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}