当前位置: 代码迷 >> C语言 >> 两个小时写的两行代码(打印菱形问题)
  详细解决方案

两个小时写的两行代码(打印菱形问题)

热度:108   发布时间:2008-04-20 16:28:39.0
补充一下,,主要不知道这个("%*s%*s    是什么意思?
----------------解决方案--------------------------------------------------------
我在1楼写了一些说明
*是printf函数的一个修饰符,用于用变量控制输出宽度
例如
printf("%*s",10,"string");
表示输出字符串占用长度为10,好处是你可以用变量i来替代10,
这样你的输出长度可以变化了
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]yaozidm124[/un] 在 2008-4-20 16:26 的发言:[/bo]

算法m=i-(i/4)×(i mod 4)×2
里面的(i/4)可以不要吗?

对于函数m=f(i);做映射
你依次带入i=0,i=1,...,i=7看看m=?就明白了
----------------解决方案--------------------------------------------------------
回复 13# 的帖子
哦,知道了,只看i大于4的情况去了,没有看到i<4的时候,这个映射写得好啊
----------------解决方案--------------------------------------------------------
回复 12# 的帖子
%*s   中的s是格式控制字符吗?这个我在书上没有看到,只看到%d   %4d  %c
----------------解决方案--------------------------------------------------------
%s是输出字符串,你可以去看看我那个整理的帖子,
第五个解法对字符串做了一些改进
----------------解决方案--------------------------------------------------------
回复 16# 的帖子
继续问个SB问题
\0  代表什么?
----------------解决方案--------------------------------------------------------
这个是为了让字符串终止的,不然会一直把所有的字符都输出
----------------解决方案--------------------------------------------------------
刚看了你的第5个解法,看起来很简洁,唯一不懂的就是
("%s%*s\n",p+m,2*m-2,p-2*m+8)
能解释一下括号内用逗号隔开的4段起什么作用?
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]yaozidm124[/un] 在 2008-4-20 17:30 的发言:[/bo]

刚看了你的第5个解法,看起来很简洁,唯一不懂的就是
("%s%*s\n",p+m,2*m-2,p-2*m+8)
能解释一下括号内用逗号隔开的4段起什么作用?

三个参数
param1:对应%s,是常量字符串指针加偏移
param2: 对应%*s中的*,指定param3输出的位数
param3: 对应%*s中的s,类同param1
其实每行也是用两个字符串拼的,你改成下面这样看看
printf("%s\n",p+m);
----------------解决方案--------------------------------------------------------
  相关解决方案