当前位置: 代码迷 >> C语言 >> [求助]如何打印数字菱形
  详细解决方案

[求助]如何打印数字菱形

热度:437   发布时间:2007-06-16 23:42:48.0

下半菱形可以完整打印.上面的还没找到方法
#include<stdio.h>
#include"math.h"
main()
{ int i,j,n,x;
printf("please input n:");
scanf("%d",&n);
for(i=1;i<=2*n-1;i++)
{
for(j=1;j<=fabs(i-n);j++)
printf(" ");
for(j=1;j<=2*n-1-2*fabs(i-n);j++)
{ x=fabs(i+j-2*n)+i+1-n;
printf("%d",x);
}
printf("\n");
}
}

大家帮忙找下公式


----------------解决方案--------------------------------------------------------
因为上下是对称的.所以想用栈把下面的存起来再出栈.应该可以实现但还是没找到正确方法.大家可以想想看.
----------------解决方案--------------------------------------------------------
请教一下 fabs(i-n);这个语句是什么意思,我只知道abs这个函数是求绝对值的。
----------------解决方案--------------------------------------------------------
回复:(我是菜鸟哦)那个是双嵌套的?:语句,说白了就是...
不好意思啊,这几天我仔细看了一下,还是不明白 printf("%c",(j&lt;n-i||j&gt;n+i)?' ':(j&lt;n+1?--a:++a));这个语句是啥意思,能给我详细的写一下吗?谢谢啦!
----------------解决方案--------------------------------------------------------
以下是引用神雕大侠在2007-6-16 0:39:47的发言:
请问上面的高手一下,printf("%c",(j<n-i||j>n+i)?' ':(j<n+1?--a:++a));这个语句是什么意思啊,我怎么看都看不明白。

他欺负你不懂三目运算符而已


----------------解决方案--------------------------------------------------------

printf("%c",(j<n-i||j>n+i)?' ':(j<n+1?--a:++a));
这句还真的挺复杂的唉


----------------解决方案--------------------------------------------------------
以下是引用ibiancheng在2007-6-19 20:33:04的发言:

printf("%c",(j<n-i||j>n+i)?' ':(j<n+1?--a:++a));
这句还真的挺复杂的唉

程序代码:

if(j<n-i||j>n+i) printf(\" \");
else {
if(j<n+1) --a;
else ++a;
}

----------------解决方案--------------------------------------------------------

#include <stdio.h>
main()
{
int i,j;
for (i=-3;i<=3;i++)
{
for(j=-(3-abs(i));j<=3-abs(i);j++)
{
printf("%d",abs(i)+abs(j)+1);
}
}
}


----------------解决方案--------------------------------------------------------
  相关解决方案