当前位置: 代码迷 >> C语言 >> 打如下图形
  详细解决方案

打如下图形

热度:355   发布时间:2007-03-27 12:55:12.0
打如下图形

打如下图形:
AA
AB BA
ABC CBA
AB BA
AA
我自己便写了代码,尽管很明显我写的十分的...,但毕竟还是实现了。不过还希望向大家学习更好的方法
#include <stdio.h>

int main()
{
int line ,i ,num,blank_head;
//blank_head变量为每一行开头的空格
char n,ch;

n='C';

num=3;

for (line =1 ;line<=2*3-1;line++) //line变量为行数
{
ch=64;

for (blank_head=1;(blank_head<=10/2-(2*line-1))||(blank_head<=2*line -1-10/2);blank_head++)
printf(" ");

if (line <=3)
{
for(i=1;i<=4*line-2;i++)
{
if (i<=line)
printf("%c",++ch);
else
{
if (4*line-2-i>=line)
printf(" ");
else
printf("%c",ch--);
}
}
}
else
{
for (i=1;i<=4*(5-(line-1))-2;i++)
{
if (i<=(5-(line-1)))
printf("%c",++ch);
else
{
if ((4*(5-(line-1))-i)>=line)
printf(" ");
else
printf("%c",ch--);
}
}
}
printf("\n");
}
getchar();
return 0;

[此贴子已经被作者于2007-3-27 12:55:34编辑过]

搜索更多相关的解决方案: 图形  

----------------解决方案--------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=93142

这个算法应该行....
----------------解决方案--------------------------------------------------------
我写的,输入3就得到你要的图形,
#include<stdio.h>
void main()
{
int i,n,k=0,l=0,ii;/*l控制的是最左边的空格,k控制的是中间的空格*/
scanf("%d",&n);
for(i=0;i<n;i++)/*上半部分*/
{
k=k+2*i;
for(ii=i+1;ii<n;ii++)
l=l+ii+1;
for(ii=0;ii<l;ii++)
printf(" ");
l=0;
for(ii=0;ii<=i;ii++)
printf("%c",ii+'A');
for(ii=0;ii<k;ii++)
printf(" ");
for(ii=i;ii>=0;ii--)
printf("%c",ii+'A');
printf("\n");
}
for(i--;i>=0;i--)/*下半部分*/
{
k=k-2*i;
for(ii=i;ii<n;ii++)
l=l+ii+1;
for(ii=0;ii<l;ii++)
printf(" ");
l=0;
for(ii=0;ii<=i-1;ii++)
printf("%c",ii+'A');
for(ii=0;ii<k;ii++)
printf(" ");
for(ii=i-1;ii>=0;ii--)
printf("%c",ii+'A');
printf("\n");
}
}
----------------解决方案--------------------------------------------------------
  相关解决方案