求教~

tair 2005-08-04 08:17:24
#include <stdio.h>
main(int _)
{
while(_!=10){printf("%*s\n",_<=5?4+_:14-_,"*********"+(_<=5?10-2*_:2*_-10));_++;}
}
觉得很cool,但百思不得其解,求那位好心的大虾给点注释
...全文
149 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
newbiestar 2005-08-12
  • 打赏
  • 举报
回复
首先重新排版:

#include <stdio.h>
main(int _)
{
while(_!=10)
{
printf("%*s\n",_<=5?4+_:14-_,"*********"+(_<=5?10-2*_:2*_-10));
_++;
}
}

然后逐步分析,_一开始应该是1,printf被调用9次,%*s这个格式是通过*来控制输出宽度,s么不用说了。printf的第二个参数控制宽度,第三个参数控制星号数量。第二个参数在_<= 5的时候是4+_,否则是14-_,这样用来保证菱形的形状正确。第三个参数么其实就是"123"+1就是"23",这样的话,这个代码的作用应该很明白了吧?
edarw 2005-08-12
  • 打赏
  • 举报
回复
这个还是用到些很基本的知识的。

1._变量的初始值,不带参数执行是为1。
2."*********"+n是移指针操作,用于控制实际输出的字符数。
3.*参数化宽度标识符。
duwan 2005-08-11
  • 打赏
  • 举报
回复
不是吧,没人会!
duwan 2005-08-07
  • 打赏
  • 举报
回复
有没有大牛帮忙解读一下
xiaocai0001 2005-08-06
  • 打赏
  • 举报
回复
这种写法只能用来玩玩,实际编程中,谁也不会这么写的。看看吧,实在不明白也没有什么大不了的
duwan 2005-08-06
  • 打赏
  • 举报
回复
  • 表示可能通过一个int类型的参数限定输出的长度:
    prinf
  • (”%10s”,sValue);

    printf(”%*s”,10,sValue);
    表示一样的意义。也就是说占10位不够10位补空格
duwan 2005-08-06
  • 打赏
  • 举报
回复
int f(int _)
{
return printf("%*s",4+_,"*******\n"+(4-_<<1));}
int main(int _){return f(_)&&_<4&&main(_+1)&&f(_),_<5;}

我又找到一个看不懂的
baliang_huan 2005-08-04
  • 打赏
  • 举报
回复
楼上说的对。。。其实基本格式就是:

printf("%*s\n",输出值的宽度,要输出的值);
_++;

不过从输出的结果来看,就不知道具体应该怎么理解了。。。
哪位大虾可以指点一下,它输出的其实是一个菱形,
jixingzhong 2005-08-04
  • 打赏
  • 举报
回复
采用”*”来占用一个本来需要一


个指定宽度或精度的常数数字的位置,



就是输出后面的 串之前

先占用了一个位置 (一个空格效果一样) ...
snowbirdfly 2005-08-04
  • 打赏
  • 举报
回复
int _开始时,系统默认"_"值为0,然后再处理while语句。
然后%*s就不太理解!
lbing7 2005-08-04
  • 打赏
  • 举报
回复
这就是玩了那个唯一的三元运算符

你慢慢的解开哈!

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧