语言数据输出大汇总以及轻量进阶华尔子博

printf() 是最灵活、最复杂、最常用的输出函数,完全可以替代 puts() 和 putchar(),大家一定要掌握。前面的章节中我们已经介绍了 printf() 的基本用法,本节将重点介绍 printf() 的高级用法。

对于初学者,这一节的内容可能有些繁杂,如果你希望加快学习进度,尽早写出有趣的代码,也可以跳过这节,后面遇到不懂的 printf() 用法再来回顾。

首先汇总一下前面学到的格式控制符:

通过前面的学习,相信你已经熟悉了 printf() 的基本用法,但是这还不足以把它发挥到极致,printf() 可以有更加炫酷、更加个性、更加整齐的输出形式。

运行结果:

矩阵一般在大学的《高等数学》中会讲到,m×n 的数字矩阵可以理解为把 m×n 个数字摆放成 m 行 n 列的样子。

看,这是多么地自虐,要敲那么多空格,还要严格控制空格数,否则输出就会错位。更加恶心的是,如果数字的位数变了,空格的数目也要跟着变。例如,当 a1 的值是 20 时,它后面要敲八个空格;当 a1 的值是 1000 时,它后面就要敲六个空格。每次修改整数的值,都要考虑修改空格的数目,逼死强迫症。

类似的需求随处可见,整齐的格式会更加美观,让人觉得生动有趣。其实,我们大可不必像上面一样,printf() 可以更好的控制输出格式。更改上面的代码:

输出结果:

这样写起来更加方便,即使改变某个数字,也无需修改 printf() 语句,增加或者减少空格数目。

%-9d中,d表示以十进制输出,9表示最少占9个字符的宽度,宽度不足以空格补齐,-表示左对齐。综合起来,%-9d表示以十进制输出,左对齐,宽度最小为9个字符。大家可以亲自试试%9d的输出效果。

printf() 格式控制符的完整形式如下:

1) type 表示输出类型,比如 %d、%f、%c、%lf,type 就分别对应 d、f、c、lf;再如,%-9d中 type 对应 d。

type 这一项必须有,这意味着输出时必须要知道是什么类型。

2) width 表示最小输出宽度,也就是至少占用几个字符的位置;例如,%-9d中 width 对应 9,表示输出结果最少占用 9 个字符的宽度。

当输出结果的宽度不足 width 时,以空格补齐(如果没有指定对齐方式,默认会在左边补齐空格);当输出结果的宽度超过 width 时,width 不再起作用,按照数据本身的宽度来输出。

下面的代码演示了 width 的用法:

运行结果:

对输出结果的说明:

3) .precision 表示输出精度,也就是小数的位数。

另外,.precision 也可以用于整数和字符串,但是功能却是相反的:

请看下面的例子:

运行结果:

对输出结果的说明:

4) flag 是标志字符。例如,%#x中 flag 对应 #,%-9d中 flags 对应-。下表列出了 printf() 可以用的 flag:

请看下面的例子:

运行结果:

对输出结果的说明:

printf() 有一个尴尬的问题,就是有时候不能立即输出,请看下面的代码:

printf(“C语言中文网n”);

其实,这一切都是输出缓冲区(缓存)在作怪!

从本质上讲,printf() 执行结束以后数据并没有直接输出到显示器上,而是放入了缓冲区,直到遇见换行符n才将缓冲区中的数据输出到显示器上。更加深入的内容。

以上测试的是 Linux 和 Mac OS,我们不妨再测试一下 Windows,请看下面的代码:

在 Windows 下,想让程序暂停可以使用 Windows.h 头文件中的 Sleep() 函数(S要大写),它和 Linux 下的 sleep() 功能相同。不过,sleep() 要求的时间单位是秒,而 Sleep() 要求的时间单位是毫秒,1 秒等于 1000 毫秒。这段代码中,我们要求程序暂停 5000 毫秒,也即 5 秒。

在第一个 printf() 的最后添加一个换行符,情况也是一样的,第一个 printf() 从来不会和第二个 printf() 一起输出。

你看,Windows 和 Linux、Mac OS 的情况又不一样。这是因为,Windows 和 Linux、Mac OS 的缓存机制不同。更加深入的内容。

要想破解 printf() 输出的问题,必须要了解缓存,它能使你对输入输出的认识上升到一个更高的层次,以后不管遇到什么疑难杂症,都能迎刃而解。可以说,输入输出的“命门”就在于缓存。

对于初学者来说,上面讲到的 printf() 用法已经比较复杂了,基本满足了实际开发的需求,相信大家也需要一段时间才能熟悉。但是,受到所学知识的限制,本文也未能讲解 printf() 的所有功能,后续我们还会逐步深入。

THE END
0.和一个字符c,输出n行由字符c组成的菱形图案。本文介绍了一种使用C语言编程实现动态输出指定大小菱形图案的方法。文章详细解释了如何通过循环控制输出空格与星号(*)来形成上半部逐渐增大后又逐渐减小的菱形形状。 题目:输入一个奇数n,输出对角线长为n的实心或者空心的菱形图案 如当n=5时,有: * *** jvzquC41dnuh0lxfp0tfv8Iwcnkbm8ftvkimg8igvcomu89887<23
1.如何利用*打印菱形以下是几种不同编程语言利用*打印菱形的实现方法: C语言 #include<stdio.h>intmain(){intn =5;// 菱形的行数for(inti =1; i <= n; i++) {for(intj =1; j <= n - i; j++) {printf(" "); }for(intk =1; k <=2* i -1; k++) {printf("*"); }printf("\n"); }for(inti jvzquC41ygtlw7hufp4og}4cpu}ft87odz€8c>up
2.C++少儿编程轻松学写给中小学生的零基础教程ZZ1513:输出菱形 题目描述 用“*”输出一个对角线长为5个“*”的菱形(如样例中的图形)。 输入 无 输出 样例中的菱形。 样例输入 无 样例输出 * *** *** *** * 2.作业2 ZZ1408:计算重庆解放碑广场的面积 题目描述 重庆解放碑广场中间的圆形半径r= 30米,求解放碑广场圆形的面积(π=3.14)。 输入jvzquC41yy}/gyzdkv4dqv4dqqqEg}fknuEjfFZDd8:12Ai:4ggb
3.17.c程序设计实战指南,从入门到精通,掌握核心开发技巧1992年经典吸血鬼电影 迅雷下载地址 ed2k://|file|Dracula.1992.%E6%83%8A%E6%83%85%E5%9B%9B%E7%99%BE%E5%B9%B4.%E5%8F%8C%E8%AF%AD%E5%AD%97%E5%B9%95.HR-HDTV.AC3.1024X544.x264(ED2000.COM).mkv|2088332959|843C7B94B2DA6F007255644219945DE6|h=7UA4DTWX5EL3KAPQ53NYMRCQY6WWP5MN|jvzq<84ycr4uglm/ykxfnnxuejgsinw0eqs0r{nfg1723>4;57;68960jvs
4.CpythonHume1028:字符菱形时间限制: 1000 ms 内存限制: 65536 KB提交数: 36146 通过数: 25339【题目描述】给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。【输入】输入只有一行, 包含一个字符。【输出】该字符构成的菱形。【输入样例】*【输出样例】\ *\ ***\ ***#include <cstdio>using namespace stdjvzquC41og4dums0pgz0dunpm1Iq{}mqpJ{ng
5.第2章样例输入: 12.3456789 样例输出: 12.345679 12.34568 1.234568e+001 12.3457 【上机练习】 5.字符菱形【1.1编程基础之输入输出09】 给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。 输入: 输入只有一行, 包含一个字符。 输出: 该字符构成的菱形。 样例输入: * 样例输出: * *** *** *** * 第jvzquC41oc~/dxtm33>/exr1jvsm1;53:1622>4369:3:B>70unuo