当前课程知识点:C语言程序设计(上) >  从问题到C语言程序设计 >  1.4 程序中的人机交互 >  1.4.2 scanf的用法

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

1.4.2 scanf的用法在线视频

1.4.2 scanf的用法

下一节:例程

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

1.4.2 scanf的用法课程教案、知识点、字幕

我们讨论完了printf

大家一定关心的是

我们怎么样把数据输入

其实在我们前面的程序里边

已经看见了

scanf

我们在这一块scanf跟printf

相比之下

它的格式要简单得多

但是它输入的时候

大家通常会碰到一些小问题

scanf跟它一样格式串地址表

我们没有叫变量表叫地址表

什么意思

是在printf里边这一块

取变量的地址

把你从键盘上敲进来的数据

数据放在这个地址里

这才叫给变量赋值了

所以就是

按照格式控制参数的要求

从你的终端上

我们现在唯一的输入就是键盘

从键盘上把数据送到

你这个地址参数里边

所指定的内存空间里边去

比如说这句话

什么意思

是取a的地址

取出来a的地址

按%d

把你敲进来的那个数据

按整型数的格式送进去

如果你敲得不是整型数

只取整数部分

送到a里边去

所以

我们看这句话scanf执行完了

内存里的变化是什么

它的结果是把5送到a里边

内存的a里边

把8送在内存的变量b

实现了这样的一个功能

那我们

看一下大家熟悉的这个例子

在这个例子里边

scanf

通过scanf

这个函数实现交互输入

交互输入就是什么

我们总是执行程序时候会看见

光标在那闪闪闪

那是谁的功能 scanf的功能

在闪着等你提示你输入

几个数 几个呢

是看你这要几个要几个变量

我要一个你给一个就够了

你要三个 你的把三个都输入完

输入不完它一直会在哪闪闪闪

我们现在要一个百分号d

为什么 是因为int r

所以这是一个整形数

我们就按整型格式输入

我们在scanf里边

通常有几个要注意的地方

就是大多数情况

跟printf是一样的

这几个要注意的地方是什么

第一个就说

在输入的时候

不允许指定精度

什么叫精度

不如说f格式里面我们平常说

六点二几点几

那个点几是说我小数位要几位

这在输入的时候是不允许的

但是可以指定域

比如说我整型数

我说我要3位

我实型数要8位

这个8位指的是什么

是连小数再小数点再整数

一共是八位

这样的话有什么好处

输入时侯你把数字一串输入

程序是自动的按你说的那个域截取

把第一个部分给了第一个变量

把第二部分给了第二个变量

比如说

3d那我现在说的a里面我取3位

送到a里边

而8.2这就不可以了

谁不可以点二不可以

不允许指定精度

你指定了精度边域就通不过

那你如果你说8

可不可以 可以

说我x里边一共要8位

要八位

到底要的是整型数

还是实型数 那你看你输入

你输入的东西它截取这个8位

所以这个格式是不可以的

上面的域是可以的

这是第一个

第二个大家要注意的是

我输入的这个数据什么时候结束

有这么几种情况都能结束

一个是你连着一串输入

如果也有域

别说我这个没有点二是八

前面是三那我需要输入十一位

它把自动前面取三位给了a

后面的八位给了x

它自动取

那么如果你不是这样子

你可以这样

你输入了一个整型数

你不是三位是一位回车

那它就取一位

第二个不是八位是五位

你回车 回车结束

或者不是回车是空格

也可以结束

还有我们刚才说宽度

自动它按你说的域去截取

还有一个

你随便输入了一个什么数

不符合条件的数

也能够结束

但是通常我们不提倡这样

通常我们是要不就回车

要不就是一个空格

要不就是你按你的宽度截取

我们看一下比如说这个

你现在呢

对这样的一个你取了3d

即输入了123456789

计算机自动截取了一个123给了k

剩下的就扔掉了

我们对这样的一个程序里边

大家看一下

我们int a float b和c

然后我这个scanf给abc取值

我去输出这里边的东西

假如说我的输入现在是这样子

我也没给回车

也没给空格

那它现在

这个abc里边

你要取 取了地址

把你送的scanf

把你从键盘上敲的这些数送进去

取得是多少

我们看

你是两d

那它取了1 2给了a

你下边是3f

那它取了3 4 5给了b

当然说这不成整型了吗

你放心它把这个3 4 5

搁到一个实型变量里

它的小数位

自动给取了

你要输出看的话它自动就是0

你下边4f

它应该取的是6 7 8 9给了c

剩下的就扔掉了

那么这个结果

输出的结果

a里边你看见的是1 2

b里边是3 4 5

是三位整数

后边的自动给你输出六位

小数位是0

后边6 7 8 9点这样子

我们来看一下这个程序

在这里边我们说a b c

a是整型b c是实型

我们分别给的这个域的宽度是

2对着整型

3和4对着两个实型数

然后我们分别把它输出

输出的时候我们都没有指定域

你设定abc里边是什么

你就把那东西原封不动拿出来

我们运行一下看看

我们输入随便敲几个数

看它的自动截取

是怎么截取的给长一点

前面是123456789

看一下

它截取的把1 2给了a

3 4 5给了b

是因为我们要的格式是f型

6 7 8是四位

b是三位

c是四位

a是两位

回去再看一下

两位整型的

三位四位两个实型数

关于动态交互的问题

实际上我们通常

还有一个非常常用的一个需求

就是字符的输入和输出

不是数值是字符

因为它用的频繁

所以c给了几个专门的函数

用来支持单个字符的输入和输出

我们先看

字符输入的函数

有这三个

getchar()

getch()

getche()

getchar()

这三个其实很相像

它起的作用

都是从键盘上输入一个字符

说明这么几点

每一次调用你只能输入一个字符

你可以输入三个但是不起作用

输入一个字符

然后另外一个

这个函数后边你要加上一个分号

它就是单独的一个语句

不加分号

你就可以把这个放在

一个表达式里边

加上一个分号

就可以单独成为一个语句

这是输入函数

接下来我们看一下输出函数

跟它非常像

putchar()

但是唯一不同的是什么

括弧里边有参数

这个参数是什么

可以是一个字符常量

也可以是一个字符变量

那它putchar谁

这个变量里边存着的那个字符

你这个变量里边必须是字符

你不能是一个实型数

搁在实型的变量

是一个字符变量

那它就是说

在你标准的输出设备就是屏幕上

把你指定的这个变量里的内容

显示出来

跟刚才的输入函数是一样的

字符数是一样的

一次只输出一个字符

然后加上分号以后

它就是一个独立的输出

就可以独立使用作为一个语句

我们看一下程序

在这里边我们看一下

char c1 c2 c3

字符型的

然后

我们给这个c1里边是getch()

然后

我们把c1输出

我们把c1输出

后边这个是什么意思

我们给了一个标记说

这是第一次输出

然后我给c2里边

在getche()

这两个区别是什么

都是从键盘上敲一个字符

只是说这个

你看不见你敲的那个字符

而这个是你能看见你敲的字符

这两个都不用回车

然后我把它输出看一下

第二次的那个

我第三次的那个

用的是getchar()

是说你敲的那个字符

也能看见

并且你需要回车

回车以后

你才能够put出它的内容来

我们去运行一下这个程序看一下

这几个get和几个putchar

是什么意思

我输入的第一个字符是a

它的确显示了

大家看这是

getch的作用

还是putchar的作用

应该是那个putchar的作用

我再给一个b

它出来了两个b

瞬间出来我敲了一个键

它出来了两个b

这是getche的作用

第二个是putchar的作用

我再给第三个c

它现在光标在这闪

闪等什么

等我回车

它执行那个putchar

回来看一下这个程序是不是这样

第一个输入它不显示

但是putchar显示

第二个输入它显示

同时显示了putchar(c2)

第三个getchar

它光标就停在那后面闪

等你回车

回车以后它才输出

我们再看一遍

我这下子给的1

这是第一个

其实是putchar的作用

光标现在闪的等着第二个

getche我给2

这同时出来两个2

第一个是getche的2

然后是putchar

putcha(c2)

再给了3

这是第三次了等我回车

它输出那个3

这就是几个输入输出函数

输出都是putchar

输入是分了三个

其实这三个差别不大

大家平常根据需要再去使用

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

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

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

1.4.2 scanf的用法笔记与讨论

也许你还感兴趣的课程:

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