当前课程知识点:C语言程序设计(上) > 从问题到C语言程序设计 > 1.4 程序中的人机交互 > 1.4 printf用法
我们今天接着讨论
程序中的人机交互
什么是人机交互
程序里边
为什么要有这样的人机交互
我们在用电脑
我们用电脑做什么
必然是把我们需要加工的数据
要送给计算机
然后计算机做它
按我们程序给它安排的步骤
它去完成我们要它做的工作
完成的结果必须要输出
不输出我们就让它做的就没有用了
这就是做程序里边
完成它的输入和输出
这就是我们所谓的人机交互
在C里边
通过什么实现这样的人机交互
两个函数一个是printf
提供了输出把结果输出
scanf完成了输入
把我们外部的数据送给计算机
这就是我们这一节
要讨论的两个问题
数据的输出和数据的输入
我们这就讨论printf
这个printf
是C的函数库提供的一个标准函数
它是专门用来
输出就是带格式的输出的
所以这个大家基本上在这里边
除过字符的输出之外
大多数的输出
都是通过printf来实现的
那这里边
我们为什么一再的提到函数函数
如果我把这个写成这个样子
大家看
你是不是感觉到这就是一个函数
这个函数的名字叫print输出
输出函数
我现在后边的这个括弧里边
给了一个固定的格式
这样的一个格式串
而后边
是我们真正要输出的东西
如果我把这个括弧夸大点写
这括弧里边是这样
逗号分开
后面就是我们说的那个变量表
什么叫变量表就是你要输出的东西
比如说咱在那个
计算圆周长的时候我们输出的是C
我们还要输出圆面积S
那就是两个不是一个
而这个格式串里边的东西
一定要跟它对应
是说 你要输出这个C
用什么格式输出这个C
在这来说你的格式
那这个格式对应了你这个C
那下面那个S用什么格式
好了对应你的S
也就说格式串里的东西
要和你要输出的变量表的东西
是一一对应的
那我们刚才看见了
这个pritf()
其实跟我们数学里边用到的函数
样子是非常像的
只不过这里边
我们用红颜色标识的这两块
是非常关键的
前面是格式
后边是你要输出的变量
我们举个例子看一下
这是一段程序
这段程序
大家看上去不是很熟悉
我们只要从这里边找出来
我们现在熟悉的printf就可以了
这个printf里边大家看
蓝颜色标识的这一块
就是我们的格式串
而后边就是它的变量表
我们把这一句话再重新写一下
这是格式串
这是变量表
这个分别表达了一个什么意思
我们在这里边看到了
刚才格式串里边的东西
就是百分号 百分号
我们再看一下
这里边一个百分号 两个百分号
然后
这里边用逗号隔开的
前边里边有两个百分号
后面才是变量表
那我们说这个百分号讨论一下
百分号表达什么意思
格式控制一个标识符
格式控制的标识符
那它在后边百分号的后边
跟着的这个字符
才表达了它要的是什么样的格式
我们刚才看见printf里边
有多个百分号
百分号在这里边表达什么意思
它出现在哪里
出现在格式串
双引号引起来的格式串里边
它表达了什么意图
我们这写了个问号
这个问号该有谁来取代
在这表里边d o x u等等
这么多大家看到
好复杂
该放谁
放谁是说
你后边要输出的变量表里那个变量
到底按什么格式输出
比如说你想按整型把它输出
那你就是百分号后边放d
按十进制整型数的形式
输出变量的值
如果你要输出一个实型数
要带小数
那你要输百分号f
它输出的是
单精度的浮点的变量里边的值
那当然你要告诉人家说
你的变量里边
我们刚才记得
上面那个程序里边是6.2f
6.2表达了什么意思
点2那个2是说你要的小数位
而6是说你数据整个的宽度
这是对f的描述
如果你不是f是别的
是字符百分号C
总之
百分号是个标志
百分号后边这个字符
表达了你要输出的那个变量
它是什么类型
你要看的这个东西
是以什么形式给你呈现出来
我们来看一下这个程序
这是我们刚才看到C块的那个程序
这里边
大家只关注的是这一块
我要输出c s
那我必须在这个格式串里
有两个百分号跟它对应
那两个百分号是什么类型
是f
我就是要的带小数
小数点要几位 要两位
我们看一下
咱现在要输入的是r
r是一个整型数
输入一个r是5
我们看
输出的结果是
周长是31.42
面积是78.54
大家看一下这前面都空了一个格子
其实我们不习惯这样
空一个格子为什么会空一个格子
刚才是格式f的格式是6.2
说你要两位小数
你的整个的数据域要了6个宽度
那咱现在这个连空格123456
两位小数加小数位3位
再加两位整数5位
那必然空一格
我们现在
这样说行不行
我们要三位小数
一个改了一个不改
看一下
我们看前边的这个
要3位小数前边就不空格
而后边还空一格
那就说
你的数据域正好跟实际的数据相符
那你要数据域很宽
前面空的格子就多
大家说
我这样行不行
我就不要c等于了
那我这前面不就不空了
看不上了 那当然是这样子
那还有一个说
我给这样的格式行不行
我一共只有6位
但是我要5位小数
大家看结果
凡是r给5
大家看我把c等于删了
那就删了什么都不影响
因为那是照原样子印的东西
那这个后边实际的位数是5位
加小数点6位
再加两位整数7位8位
一共有8位
比你那个域你给的域是6
超出了超出了计算机
为什么没告诉我错了
C里边不认为这是错
它默认为按你的实际位数输出
实际位数输出
我们大家
还做一点点讨论说
我这一块要把我这个r
这是哪个半径对应的这个
我要输入
也就说
我给一个百分号
给这百分号干嘛
是因为我这还有一个数想输出
我想看一下我刚才给的r是多少
没问题
你给了一个想输出的变量
你必须给一个百分号
说这个变量是整型的
那么我们为了清楚起见
我还是跟你说我这要的是r
我这块
要的是我这块是那个C
好了我这就分开来了
r还给5
现在说你的半径是5
什么型整型
所以就没有小数位s c s
这就是我们这个r百分号d
对的这个整型
后边给了两个实型
我们刚才说到
内存实际上怎么存的
存了一个r是整型
存了c和s是实型
但是我们要看的时候
我们可不可以这样看
我r存的是整型
我现在却看的时候为了一致
你也给我一个6.2的格式
这样可以吗
你尽管存的是整型
我现在想把你按实型的输出
可以吗
我们看一下可以还是不可以
还给输入我就给了整型5
它现在出现了什么情况
不仅r不对了
c也不对了 s也不对了
这怎么会出现这种情况
其实我c和s什么都没变
刚才没有变
那对于整型和实型来说
你存的是整型
你输出的就是整型
你存的是实型输出的就是实型
但是
有一种情况是例外的
什么呢字符
比如说
整型和字符是混着用
那我们现在要输出的是字符的话
我把r当字符输出可不可以
我们看到
r是5
我们把r里边的内容当字符输出
也是可以的
那r等于5对着是谁
我们查一下Σ表里边
5对着的就是梅花这个字符
所以整型和字符是可以混着
但是整型和实型在输出的时候
不能混淆的
格式串里边的
后边的说明的那个字符不能混淆的
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html











