2020-9-13 输出菱形图案

输出菱形图案

题目:编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依次类推,第n行为2n-1个相应的字母,以后每行递减,n有键盘输入。
感悟:关键在于利用for循环,控制每行输出的空格数及字母数。
关键:最关键的地方在于for循环中循环变量的取值及范围变化。
其实也是最简单数学数列的知识
先随便假如输入n=5为例
因为要输出一个菱形图案,
在控制每行空格的输入时需要用到一个数列 5,4,3,2,1,2,3,4,5;
如何去构造出呢? k=1-n; k的取值数列就是 -4,-3,-2,-1,0,1,2,3,4;k的值其实并无多大意义,目的就是为了构造下一个数列
i=n-abs(k);此时就构造出了i的取值数列1,2,3,4,5,4,3,2,1
在控制每行字母个数的输入时这就比较简单了,可以发现每行中字母的个数为一个等差数列:1,3,5,7,9,7,5,3,1;此时j的取值范围只需要是2*i-1即可
代码
/*2020年9月13日09:01:36
输出菱形图案(简单版)
/
#include<stdio.h>
#include<math.h>
int main()
{
char c;
int i,j,k,n;
printf(“输入n:”);
scanf("%d",&n);
printf(“对应的菱形图案\n”);
c=‘A’;
for(k=1-n;k<=n-1;k++)// 以n为5为例子,演示各变量依次取值 k:-4,-3,-2,-1,0,1,2,3,4
{ i=n-abs(k); // i:1,2,3,4,5,4,3,2,1
for(j=1;j<=n-i+1;j++)// j:5,4,3,2,1,2,3,4,5 所代表每行的空行数
printf(" ");
for(j=1;j<=2
i-1;j++)//还有这里的技巧 j:1,3,5,7,9,7,5,3,1
printf("%c",c);
printf("\n");
c++;
}
return 0;
}当n为5时的输出结果

猜你喜欢

转载自blog.csdn.net/brucecui1998/article/details/108560025