当前课程知识点:C语言程序设计 >  第4章 基本输入输出和顺序程序设计 >  4.1 格式化输出printf >  格式化输出printf

返回《C语言程序设计》慕课在线视频课程列表

格式化输出printf在线视频

下一节:格式化输入scanf及字符数据的非格式化输入输出

返回《C语言程序设计》慕课在线视频列表

格式化输出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函数有一点复杂

要真正熟练掌握和正确应用

需要理解修饰符和格式转换符之间的组合

同学们今天的内容就讲到这

我们下次课再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

格式化输出printf笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。