hdu 2091 输出技巧 空心三角形
2015-08-04 18:04
281 查看
hdu 原题链接
转:很多人可能不知道'*'在格式化输入输出中的作用。
在scanf()中,用%*#,就代表读入一个#的数据,但不处理。比如:
scanf("%c%*c%c", &a, &b);
输入ABC,此时,变量a='A', c='C'。而中间的'B',只是读入,没有做任何处理。
在printf()中,%*#用来设定场宽。
我们平时用%2d一类的转义字符来代表输出整形d时场宽为2个字符,但这种方法设置场宽只能是常数,不能在程序运行时其变化。
而用'*',就做到了可变场宽的作用。比如:
printf("%*d", 4, a);
表示输出整形数据a,场宽为4个字符。
code:
转:很多人可能不知道'*'在格式化输入输出中的作用。
在scanf()中,用%*#,就代表读入一个#的数据,但不处理。比如:
scanf("%c%*c%c", &a, &b);
输入ABC,此时,变量a='A', c='C'。而中间的'B',只是读入,没有做任何处理。
在printf()中,%*#用来设定场宽。
我们平时用%2d一类的转义字符来代表输出整形d时场宽为2个字符,但这种方法设置场宽只能是常数,不能在程序运行时其变化。
而用'*',就做到了可变场宽的作用。比如:
printf("%*d", 4, a);
表示输出整形数据a,场宽为4个字符。
code:
#include <stdio.h> int main( ) { char c; int i = 0, n; while ((c = getchar()) != '@') { scanf("%d%*c", &n); printf(i ? "\n%*c\n" : "%*c\n", n, c); if (n == 1) { i = 1; continue; } for (i = 1; i + 1 < n; i++) printf("%*c%*c\n", n - i, c, i * 2, c); for (i = 0; i < 2 * n - 1; i++) putchar(c); putchar('\n'); } return 0; }
相关文章推荐
- 使用SoftReference打造自己的Cache
- 损失函数(Loss Function)
- 数据库中CHAR,VARCHAR,TEXT等字段的区别
- 递归和无参数列表
- XSS 与 CSRF 两种跨站攻击
- 有监督学习流程图
- 百度地图不显的问题
- C++对象模型——Data Member的存取(第三章)
- 【Mybatis3学习入门】【二】Mybatis快速入门
- ZOJ Seeding 2100【简单深搜】
- 在刚接触TI-DM8127-ipnc框架时注意的问题
- Maven+SpringMVC+MyBatis 上传图片
- js与php传递参数
- Android 插件化之动态加载jar
- MD5算法【计算文件和字符串的MD5值】
- 【暑假】[基本数据结构]基本的数据结构知识点总结梳理
- 黑马程序员----IO基础知识1
- 【微信支付】开发遇到的一些问题一些弯路
- Hdu 1029 Ignatius and the Princess IV
- 【微信支付】开发遇到的一些问题一些弯路