Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2857239
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: C/C++

2012-08-08 10:42:32

#include

int line = 1;
int main()
{
        printf("%*s\n",7-(line>4? line-4: 4-line),"*******"+2*(line>4? line-4:4-line));
        if(++line != 8)
                main();
        return 0;
}

/*
首先说一下”%*s”的用法,论坛里前几天可可余香童鞋已经写过了一篇总结:
即*是用一个int参数来代替,比如:
printf(“%*s\n”, 5, “def”);
就相当于printf(“%5s\n”, “def”);
指定了字符串输出的宽度。
这个用法平时见得不多,可以了解下。
另外:
有人对这一行
“*******”+2*(line>4? line-4:4-line)
感到疑惑,其实认真看一下,就是一个字符串指针加上一个int整数,也就是指针的平移了。
比如line=1第一行时,2*(line>4? line-4:4-line)即为6,也就是7个星号的字符串指针平移6个,所以输出一个星号了。
最后这个程序用到了main函数的递归调用,注意一定要写上退出条件,否则就无限循环了。
*/
阅读(1129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~