#include <stdio.h>
int main()
{
int i,j,k,ch,n;
printf("请输入行数:");
scanf("%d",&n);
for(i=1;i<n+1;i++)
{
for(k=1;k<n+1-i;k++)
{
printf(" ");
}
for(j=1,ch='A';j<=i;j++,ch++)
{
printf("%c",ch);
}
ch=ch-2; //关键
for(j=1;j<i;j++,ch--)
{
printf("%c",ch);
}
printf("\n");
}
for(i=1;i<n;i++)
{
for(k=1;k<=i;k++)
{
printf(" ");
}
for(j=n,ch='A';j>i;j--,ch++)
{
printf("%c",ch);
}
ch=ch-2;
for(j=n;j>i;j--,ch--)
{
printf("%c",ch);
}
printf("\n");
}
}
为什么会出现右边的@啊
下半部分有个地方多循环了一次,打印一行的后半部分应该比前半部分少循环一次(改的地方我标注在代码里了)
#include <stdio.h>
int main()
{
int i,j,k,ch,n;
printf("请输入行数:");
scanf("%d",&n);
for(i=1;i<n+1;i++)
{
for(k=1;k<n+1-i;k++)
{
printf(" ");
}
for(j=1,ch='A';j<=i;j++,ch++)
{
printf("%c",ch);
}
ch=ch-2; //关键
for(j=1;j<i;j++,ch--)
{
printf("%c",ch);
}
printf("\n");
}
for(i=1;i<n;i++)
{
for(k=1;k<=i;k++)
{
printf(" ");
}
for(j=n,ch='A';j>i;j--,ch++)
{
printf("%c",ch);
}
ch=ch-2;
for(j=n;j>i;j--,ch--)//应该改成for(j=n;j-1>i;j--,ch--)
{
printf("%c",ch);
}
printf("\n");
}
}
for(j=n,ch='A';j>i-1;j--,ch++)