瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 有1道C语言的编程题不会
gloomsword - 2007-2-11 21:24:00
main()
{int i,j;
for(i=1;i<=3;i++)
{for(j=1;j<=2*i-1;j++){printf("*");if(j==2*i-1) printf("\n");}}
for(i=2;i>=1;i--)
{for(j=2*i-1;j>=1;j--){printf("*");if(j==1) printf("\n");}}}
蓝00雨 - 2007-2-13 11:13:00
不错
又学了个东西了!
呵呵
就是30楼的是C语言写的
读的懂
网络骑士HKC - 2007-2-13 11:48:00
既然出这样的问题,当然是想叫你一次完成了
断成两截虽然也不算错,但总是美中不足吧
我用一次循环就搞定了,
分析过程是这样的:
每行的个数分别是
1  3  5  3  1
发现没有,非常具有对称性,5刚好就是中间数
在整数里,绝对值也有对称性,取5个数的话0可以做中间数

所以借用了一个取绝对值的函数abs(),循环数用的就是-2到2这5个数
具体代码如下:
#include "math.h"
#include "stdio.h"
int main()
{
int hang,ge,geshu;
for(hang=-2 ; hang<3;hang++)
{
geshu =5-abs(hang)*2;
for( ge=0; ge< geshu;ge++)
{
printf("*");
}
printf("\n");
}
}
蓝00雨 - 2007-2-13 12:01:00
哇,楼上的佩服
编程小学生 - 2007-2-13 16:49:00
【回复“网络骑士HKC”的帖子】
厉害!
好想学电脑 - 2007-2-14 10:00:00
呵呵。看来要好好学学了
小BIN仔 - 2007-2-14 22:23:00
你应该说明要用循环语句写出来,不然别人当你是笨蛋
szkill - 2007-6-9 17:25:00
有些东西还是简单些好
!不用什么循环加循环……能简单实现何乐而不为?
12
查看完整版本: 有1道C语言的编程题不会