免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4368 | 回复: 17
打印 上一主题 下一主题

谁帮我看看这道笔试题的printf语句,居然看不懂 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-22 21:08 |只看该作者 |倒序浏览
main()
{
int i;
for(i=0;i<=N;i++)
{
    printf("%*.*s%-*.*s\n",N,i<=N/2?i:N-i,"*******************",N,i<=N/2?i+1:N
-i+1,"*******************");
}

}

论坛徽章:
0
2 [报告]
发表于 2007-09-22 21:12 |只看该作者
看到这样的题目就恶心.

论坛徽章:
0
3 [报告]
发表于 2007-09-22 21:34 |只看该作者
不懂,等高人解读..

论坛徽章:
0
4 [报告]
发表于 2007-09-22 21:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2007-09-22 21:47 |只看该作者
挺有意思,居然打印一个这个:
          *         
         ***        
        *****      
       *******      
      *********     
     ***********   
      *********     
       *******      
        *****      
         ***        
          *

论坛徽章:
0
6 [报告]
发表于 2007-09-22 23:45 |只看该作者
原帖由 sdydding 于 2007-9-22 21:08 发表
main()
{
int i;
for(i=0;i


}

我的理解是%*.*s %-*.*s 共需要6个参数,*表示将参数列表中的下一个参数做为输出精度。所以这里需要4个参数来控制精度。
i<=N/2?i:N-i这条语句是个条件操作符,当i<=N/2为真时取i值,为假时取N-i值。
另外注意在第二个参数中使用了-号,是为了左对齐。
这样解释是否能清楚?

论坛徽章:
0
7 [报告]
发表于 2007-09-23 08:01 |只看该作者

能把我当成傻瓜,解释的再详细点么^-^

比如.是做什么用的%是转义字符? 哪六个符号代表六个参数


先谢了

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
8 [报告]
发表于 2007-09-23 11:06 |只看该作者

回复 #1 sdydding 的帖子

在C.Primer.Plus.5th.Edition这本书上Chapter 4
Character Strings and Formatted Input/Output 的第4节
Exploring and Exploiting printf() and scanf()上可以找到详细的答案
推荐你看看

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2007-09-23 11:49 |只看该作者
原帖由 jamesr 于 2007-9-22 21:42 发表
运行一遍就行了!
这种题目是典型的应试教育型的,故意刁难人的。会编程的对printf的格式就要100%掌握吗?
强烈BS这种公司!

其实也没啥,看着比较花哨而已。

BTW,这种问题确实无聊。

论坛徽章:
0
10 [报告]
发表于 2007-09-23 11:57 |只看该作者
%*.*s 其中2个*号需要2个参数,%s是格式控制符,意思是后面的参数要为字符串。
假设N=10,第一次循环的结果如下:
printf ("%*.*s%-*.*s\n",10,0,"*******************",10,1,"*******************");
%*.*s 取前三个参数,%-*.*s取后面三个参数。
printf ("%10.0s%-10.1s\n","*******************","*******************");

建议找本入门的书看看。
programming in C (the third edition)P349有详细解释.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP