该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
编程实现打印字母金字塔
如以下形式:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
程序代码:
#include
#include
void print1(int i,int n);//打印每行的空格
void print2(int n);//打印字母
int main()
{
int n;
loop:printf("输入你要金字塔层数n:");
scanf("%d",&n);/*输入金字塔的层数*/
if(n>0&&n<27)
{
print2(n);//打印金字塔
}
else
{
printf("您的输入有误0
goto loop;
}
return 0;
}
void print1(int i,int n)/*打印每层前半部和后半部的空格*/
{
while(n-i-1>0)
{
printf(" ");
i++;
}
}
void print2(int n)
{ int i,j;
char *str;
printf("%d层字母金字塔:\n",n);
str=(char*)malloc(sizeof(char)*n);/*n层金字塔包含n个字母*/
str[0]='A';/*首字母为A*/
for(i=0;i
{
str[i+1]=str[i]+1;/*字母依次为ABC...*/
print1(i,n);//打印每层前半部分面的空格
for(j=0;j<2*(i+1)-1;j++)
{
if(j>i)
printf("%c",str[2*i-j]);
/*2*i-j=(i-(j-i)),在中间字母右边的字母与距中间字母等距离的左边字母*/
else
printf("%c",str[j]);/*顺序打印字母*/
}
print1(i,n);/*打印每层后半部分的空格*/
printf("\n");//换行
}
}