能力值:
( LV2,RANK:10 )
|
-
-
2 楼
程序中忘写注释了,做点补充说明。
程序设定坐标(1,0)在最上面的A位置。其中print(Char[],i,j);表示在坐标(i,j)处输出相应字符
不过我想考虑到图形既是上下对称又是左右对称的,如果利用这一点,是不是能够让程序再简练一点呢?
好像大伙儿对这样的问题不感兴趣啊!我改进的代码贴一下:
char Char[9]={'0','A','B','C','D','E','F','G','*',}
int i,j;
for(i=1;i<10;i+=2)
{
if(i==9)
for(j=0;j<5;j++)
{//绘制A、B、C、D、E
print(Char[j],i,-j);
print(Char[j],i,j);
print(Char[j],-i,j);
print(Char[j],i,-j);
}
else if(i==5)
{//绘制F
print(Char[6],i,-3);
print(Char[6],i,3);
print(Char[6],-i,3);
print(Char[6],-i,-3);
}
else if(i==3)
for(j=0;j<5;j+=2 )
{//绘制G
print(Char[7],i,-j);
print(Char[7],i,j);
print(Char[7],-i,-j);
print(Char[7],-i,j);
}
else
for(j=0;j<5;j++)
{//其他空白(*)
print(Char[8],i,-j);
print(Char[8],i,j);
print(Char[8],-i,-j);
print(Char[8],-i,j);
}
}
这个代码比第一个要规范一点,在前面声明一下print函数,放到上main()应该就可以编译通过了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不给力呀!
我不知道这两种方式哪个效率更高:
1、
for (int i=1;i<4 ;i++ )
{
print(a[i]);
}
2、
for (int i=1;i<2 ;i++ )
{
print(a[i]);
print(a[-i]);
}
其实我感觉第二个程序中当i或者j为0时也要多执行一次。我再改改。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
OK啦!我觉得已经找到自己满意的结果了,程序如下:
char Char[9]={'E','D','C','B','A','B','C','D','E'}
int i,j;
for (i=0;i<10 ;i+=9 )
{//依次绘制E、D、C、B、A、B、C、D、E
for (j=0;j<9 ;j++ )
{
print(Char[j],i,j);
}
}
for (i=2;i<8 ;i+=5 )
{//绘制四个F
for (j=1;j<9 ;j+=7 )
{
print('F',i,j);
}
}
for (i=3;i<8 ;i+=3 )
{//绘制两行G
for (j=0;j<9 ;j+=2 )
{
print('G',i,j);
}
}
因为我给的图中*本来就是站位用的,所以不用画,我定义Char数组,其中有重复,但是这可以减少代码量,典型的以空间换时间。呵呵!自我陶醉一下!
这个程序没有冗余工作,代码也很简洁。不错,我就喜欢这样的编程风格。
如果还有更高明简洁的方式,也请大家指教!不胜感激!
|
能力值:
( LV3,RANK:30 )
|
-
-
5 楼
printf("EDCBABCDE\n");
printf("*********\n");
printf("*F*****F*\n");
printf("G*G*G*G*G\n");
printf("*********\n");
printf("*********\n");
printf("G*G*G*G*G\n");
printf("*F*****F*\n");
printf("*********\n");
printf("EDCBABCDE\n");
这样最高效,哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
This is the truth, although it is funny.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
printf("EDCBABCDE\n*********\n*F*****F*\nG*G*G*G*G\n*********\n");
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
这个真的是很
高效
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
好强大啊呵呵
|