当前课程知识点:C语言程序设计 > 第4章 基本输入输出和顺序程序设计 > 4.1 格式化输出printf > 格式化输出printf
同学们 大家好
在前面的课程中我们学习了常量
变量、运算符、表达式等内容
从这节课开始
我们学习数据的基本输入输出
程序的主要功能就是对数据的处理
在C语言中如何获取数据
以及处理后的数据
通过什么样的形式表现出来
这就要涉及到数据的输入和输出
我们编程模拟超市购物结账的过程
假定今天购买的物品是苹果
西红柿、鸡蛋
物品单价已初始化
我们来看下面的程序
程序的第3、4、5行定义变量
分别表示所购买物品的单价
数量以及应付款的总额
第六行从键盘接收三种物品的数量
第7行计算购买物品应付的钱数
第八行按要求输出应付款
到此程序结束
整个流程主要包括数据的输入
数据的处理
数据的输出
在C语言中没有提供专门的输入输出语句
输入输出操作是
通过调用C的标准库函数来实现的
如函数scanf、printf
putchar
getchar等
在这里要明确的一点是scanf
printf不是C语言的关键字
而只是库函数的名字
这节课我们将重点学习printf函数的用法
printf的作用是
向系统隐含指定的输出设备
输出若干个任意类型的数据
一般格式
其功能是按照
格式控制字符串
的要求
将表达式1至表达式n的值
显示在计算机屏幕上
一个格式控制字符串中
可以有多转换说明
每个表达式逐个对应
格式控制字符串中的每个转换说明
表达式之间用逗号分隔
格式控制字符串包含两类字符
1是常规字符包括用于
显示的字符和用转义字符表示的字符
2格式转换符
每个格式转换说明都以一个%开头
以一个格式字符作为结束
以说明输出数据的类型
形式
长度
小数位数等
其格式为
下表列出了各种数据类型
对应的格式转换符
除了格式转换字符
格式的修饰符还可以规定输出数据的域宽
精度
对齐方式等
各种数据类型对应的格式的修饰符
如下表所示
我们来看下面的程序段
在输出语句中a=
b=在屏幕上原样输出
%d、%f为格式转换字符
分别表示以十进制形式
输出整型数据和浮点型数据
5.2是修饰符
表示输出的数据总长度为5
小数位数保留2位
右对齐
是转义字符
代表换行
变量a、b分别按
从左到右顺序一一对应每个格式转换符
编译运行后输出结果如图所示
在使用printf函数时还需注意以下几点
(1)格式控制字符串
可以不包含任何格式控制符
如完成的是字符串原样照应
(2) 如果格式控制字符串中
格式控制符的个数多于表达式的个数
则余下的格式控制符的值将是不确定的
如语句三个格式控制符
表达式个数只有2个
所以2*3对应的是随机数
(3) 不同类型的表达式要使用不同的格式转换符
如果用错了格式转换符
其结果是错的
printf函数不会进行
不同数据类型之间的自动转换
如下图
下面我们依据不同的数据类型
描述数据的输出方式
整型的输出
来看下面的程序
程序第4行按照指定的域宽
输出a的值右对齐左空一格
b变量的数值超出给定的域宽
原样输出
第5行a变量要求总宽度
为6数据按照5个宽度输出123
缺省默认右对齐
因此在左边补2个0
还要补个空格
第六行b变量要求按照6个宽度输出123
缺省默认左对齐
因此在右边补1个空格
第7行以无符号八进制形式输出
右对齐由于修饰符0的缘故左补3个0
第8行以无符号十六进制数形式
右对齐左补4个空格
实数的输出
前面我们介绍的是
关于整数的格式转换符的应用
实数输出的格式转换符有哪些呢
我们给出一般形式
下面我们来看这个程序
f1按照缺省默认的形式输出6位小数
f2输出共10位
有#修饰符输出小数点
小数的位数为0
右对齐左补5个空格
f3输出共10位
小数部分占2位
并且是右对齐
左边补三个空格
f4没有规定输出的位数
按实际长度输出
小数部分占2位
左对齐
f5输出共10位
小数部分占2位
左对齐
f6按指数形式输出
数据共10列
小数部分占2列
右对齐
左补空格
f7根据数值的大小
自动选f格式或e格式中输出宽度较小的
且不输出无意义的零
除了数值有格式输出
对字符和字符串也有对应的格式转换符
小写c格式符
用来输出一个字符
如该程序段输出字符a s格式符
用来输出字符串
如输出语句
输出不包括双引号的字符串
CHINA
下面我们以示例来看字符串的输出形式
c1因字符串长大于
格式控制符缺省默认全部输出
c2只取字符串中左端2个字符左补5个空格
c3只取字符串中左端3个字符右补空格
到这里
有关格式化输出的内容就暂告一段落
通过前面的讲解
同学们可能会感到调用printf函数有一点复杂
要真正熟练掌握和正确应用
需要理解修饰符和格式转换符之间的组合
同学们今天的内容就讲到这
我们下次课再见
-计算思维与计算机
--计算思维与计算机
--计算思维与计算机
--计算思维和计算机
-2.1 程序设计语言的发展及其特点和应用
--程序设计语言的特点及发展
- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤
--C语言程序的结构和编制步骤
-3.1 C语言的数据类型
--C语言的数据类型
--C语言的数据类型
-3.2 常量
--常量
--常量
-3.3 什么是变量
--什么是变量
--什么是变量
-3.4 如何进行算术运算
--如何进行算术运算
--如何进行算术运算
-3.5 赋值运算符和逗号运算符
--赋值运算符和逗号运算符
-3.6 数据类型转换
--数据类型转换
--数据类型转换
-4.1 格式化输出printf
--格式化输出
-4.2 格式化输入scanf及字符数据的非格式化输入输出
--格式化输入
-5.1 关系运算符和关系表达式
--关系运算符和关系表达式
-5.2 逻辑运算符和逻辑表达式
--逻辑运算符和逻辑表达式
-5.3 条件运算符和条件表达式
--条件运算符和条件表达式
-5.4 if语句
--if语句
--if语句
-5.5 switch语句
--switch语句
--switch语句
-6.1 while语句
--while语句
--while语句
--do-while语句
-6.2 for语句
--for语句
--for语句
-6.3 循环的嵌套
--循环的嵌套
--循环的嵌套
-6.4 break语句和continue语句
--break和continue语句
-7.1 一维数组的定义和引用
--一维数组的定义和引用
-7.2 一维数组的赋值
--一维数组的赋值
--一维数组的赋值
-7.3 二维数组的定义和引用
--二维数组的定义和引用
-7.4 二维数组的赋值
--二维数组的赋值
--二维数组的赋值
-7.5 字符串的本质
--字符串的本质
--字符串的本质
-7.6 字符串操作的常用函数
--字符串常用函数
-7.7 字符串数组
--字符串数组
--字符串数组
-8.1 函数概述
--函数概述
--函数概述
-8.2 有参函数
--有参函数
--有参函数
-8.3 函数参数的传递方式
--函数参数的传递方式
-8.4 变量的作用域和生存期
--变量的作用域和生存期
-8.5 变量的存储类型
--变量的存储类型
--变量的存储类型
-8.6 函数的嵌套和递归调用
--函数的嵌套和递归调用
-8.7 函数的作用域与封装
--函数的作用域与封装
-9.1 指针变量的概念(上)
--指针变量的概念(上)
-9.2 指针变量的概念(下)
--指针变量的概念(下)
-9.3 指向一维数组的指针变量
--指向一维数组的指针变量
-9.4 指向二维数组的指针变量(上)
--指向二维数组的指针变量(上)
-9.5 指向二维数组的指针变量(下)
--指向二维数组的指针变量(下)
-9.6 动态内存分配
--动态内存分配
--动态内存分配
-10.1 编译预处理
--编译预处理
-11.1 用户自己建立数据类型
--用户自己建立数据类型
-11.2 定义结构体类型变量
--定义结构体类型变量
-11.3 结构体变量的引用与初始化
-11.4 结构体数组
--结构体数组
--结构体数组
-11.5 指向结构体类型数据的指针
--指向结构体类型数据的指针
-12.1 文件的基本概念和文件指针
--文件的基本概念和文件指针
-12,2 文件的打开和关闭
--文件的打开和关闭
--文件的打开和关闭
-12.3 文本文件读写
--文本文件读写
--文本文件读写
-12.4 二进制文件读写
--二进制文件读写
--二进制文件读写