黑马程序员之---C学习笔记之printf与scanf使用及注意事项

2023-11-07

------Java培训、Android培训、iOS培训、.Net培训--------
 

一、printf函数介绍

printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果


1.格式字符串

是由格式字符(包括:转换说明符,标志,域宽,精度)和普通字符组成,转换说明符和百分号一起使用,用来说明输出数据的数据类型,标志,长度和精度


2.输出项列表

可以是常量,变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上严格一致,否则结果将不可预测,当有多个输出项时,各个输出项之间用逗号分隔


3.格式控制说明符使用说明
a. % :表示格式说明的起始符号,不可缺少
b. - :有-表示左对齐输出(右侧补空格),如省略则表示右对齐输出(左侧补空格)
c. 0 :有0表示指定空位填0,如省略表示指定空位补填
d. m,n: m指域宽,即对应的输出项在输出设备上所占的字符数,N指精度,用于说明输出的实型数的小数位数,对数值型的来说,未指定n时,隐含的精度位n=6

e. l或h : l对整型指long型,对实型指double型; h用于将整型的格式字符修正位short型


4.例子
float a = 123.322;
1) printf("a = %f",a); //默认小数位显示6位,因此打印结果位a = 123.322000
2) printf("a = %.2f",a); //指定显示小数点后两位,因此打印结果位 a = 123.32




5.部分用法
%d 输出一个十进制的整数
%f 输出一个实数类型的数据(不能输出整型数据)
%m.nf 表示总的位数,n表示小数点后的位数
%c 输出一个字符
%s 输出一个字符串
%o 把一个数以八进制的形式输出
%x 把一个数以十六进制的形式输出

%p 输出某一个变量的地址


6.注意:
printf(”%-5.2fhh“,23.2);//打印结果为23.2  hh 




7.%f输出精度的问题
float pi = 3.1415926f;
//默认输出6位小数
printf("a = %f\n");//结果四舍五入了:a = 3.141593
//打印7位小数
printf("a = %.7f",a); // a = 3.1415925
注意:%f打印出来后,精度小数点后6位,有效数字是7位




二、printf使用注意事项

1. %md问题

printf("a=%3d",12);//结果a= 12,而不是a=12,用空格补齐
注意:

1) m>0 从左侧补齐,m<0从右侧补齐


2) 如果数字的位数大于位宽,则按照实际的位数输出
如printf("%3d",1234);//结果1234



2. %0md使用时注意
1)%0md表示不足位数用0补齐

如printf("%04d",12);//0012


3. printf("\\");//打印一个\


4. printf("%%");//打印一个%




三、scanf函数的介绍及使用
scanf函数是阻塞式函数,包含在标准输入输出头文件”stdio.h“中,用于接收键盘输入的内容

格式:scanf("格式控制字符串",输入项地址列表)


1.格式控制字符串

由格式控制符和普通字符组成,格式控制符和百分号一起使用,用来说明输入数据的数据类型(格式字符)


2.输入项地址列表
c语言中,一个变量的地址可以通过地址运算符&得到 




3.常见的格式字符
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
i 输入有符号或者无符号十进制、八进制、十六进制整数
u 输入无符号十进制整数
f、e或E、g或G 输入小数形式或指数形式的浮点数
c 输入字符
s 输入字符串

d 输入十进制整数


四、scanf使用注意事项
1.scanf中不能用%m.nf这种控制格式

scanf("%3.2f",&a);//报错


2.scanf中可以用%mf
scanf("%3f",&a);//输入1233
printf("%.0f",a);//输出结果位123,指接受了前三位




3. 如果在输入单个值时,输入了多个空格、回车、Tab都会被系统忽略。例如在输入值23前输入多个空格、Tab、回车时都会被忽略,最终输入23后再回车才结束输入


4. scanf函数遇到回车的时候,会结束执行


5. scanf("%d%d",&a,&b);//要求在键盘输入时用空格或者回车、Tab隔开


6. scanf("%d%d",&a,&b);//如果此时通过键盘输入了23,34

name打印时printf("%d%d",a,b);结果是23,0(假设b之前的值是0)

正确的做法scanf("%d,%d",&a,&b);这样就可以输入23,34了


7.混合输入scanf("%d%c%d",&a,&ch,&b);//如果此时通过键盘输入了23 b 34

printf("%d%c%d",a,b);结果是23 0(假设b之前的值是0)


8. * 号的使用:忽略一个输入

scanf("%d%*d%d",&a,&b);//此时输入项只有两个也不会有警告,输入1 2 3后,printf打印结果是:1 3


9.scanf中不要使用\n,如果一不小心使用了,可以在输入值后,随意输入内容再按空格键,或者输入值后直接输入\n再按空格键




五、.scanf函数运行原理

当用户输入内容后,用户输入的内容会被放入输入缓存区,然后scanf函数会根据格式控制字符串从输入缓冲区依次读取想要的内容

1)如果从缓冲区中取到的内容和我们要求的格式一致,则把值存放到变量中,


2)如果不一致,则不修改变量的值




3) 如果输入缓存区中还有内容,则scanf不会提示再次输入
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

黑马程序员之---C学习笔记之printf与scanf使用及注意事项 的相关文章

  • java环境的配置,下载jdK安装及安装

    1 java环境的配置下载jdK安装 2 jdk exe会解析两个文件jdk文件 jre文件 安装步骤 1 JDK jdk1 7 0 75 windows x64 exe 下载 选择 Accept License Agreement 根据系
  • RN开发系列<8>--Redux(1)入门篇

    1 Redux的基本用法 前言 说明 本文只针对移动端的Redux的基本用法进行描述 希望这一篇文章 就能帮助你搞定redux的基本用法 甚至不用再去查阅其他文档 因为我个人脑子比较笨 查阅了很多文档 看了不少视频资料才理解了 2 原理阐述
  • Python 使用函数作为返回值

    视频版教程 Python3零基础7天入门实战视频教程 Python还支持使用函数作为其他函数的返回值 def test bol if bol return add else return sub def add x y return x y

随机推荐

  • 基于Proteus的四位数码管显示

    1实验原理 P0口接断码线 P2口低四位接位选线 第一位数码管的位选线由P2 0来控制 第二位数码管的位选线由P2 1来控制 依次类推 由此可知可以控制P2 0到p2 3引脚 从而控制这个数码管哪一位来显示字符 而通过控制P0口输出断码值来
  • 单片机延时函数实现

    在编写单片机程序时 我们经常要用到延时函数 记得我们在学51单片机时 第一个延时是通过软件延时来实现的 代码如下 void delay volatile uint32 t cnt volatile uint32 t i 0 volatile
  • azkban设置重试不起作用,且有的任务一直running,无日志

    job脚本 foo job type command command su olc pro c bash app script python common file pymain sh coupon user active py retri
  • Python提取整数各个位的数字

    个位 XXX 1 10 十位 XXX 10 10 百位 XXX 100 10 千位 XXX 1000 10 万位 XXX 10000 10 1399 统计最大组的数目 LeetCode https leetcode cn com probl
  • 蓝桥杯Python-2n皇后问题(和别人的想法有点不一样)

    首先附上问题链接 蓝桥杯基础练习VIP 2n皇后问题 C语言网 dotcpp com 问题描述 给定一个n n的棋盘 棋盘中有一些位置不能放皇后 现在要向棋盘中放入n个黑皇后和n个白皇后 使任意的两个黑皇后都不在同一行 同一列或同一条对角线
  • 1034:计算三角形面积

    1034 计算三角形面积 时间限制 1000 ms 内存限制 65536 KB 提交数 52442 通过数 16079 题目描述 平面上有一个三角形 它的三个顶点坐标分别为 x1 y1 x2 y2 x3 y3 那么请问这个三角形的面积是多少
  • VMware Workstation 安装Vmware tools 是 出现vmware tools unavailable

    这个问题是因为虚拟机安装的时候操作系统选择的不对 在Virtual Machine Settings中选择Options 在General中选择正确的操作系统类型 例如Guest operating system 选择Linux Versi
  • vue-cli3使用百度富文本编辑器

    一 安装依赖 npm i vue ueditor wrap 或者 yarn add vue ueditor wrap 二 下载ueditor并将其复制到Static目录下 如图所示 三 引入VueUeditorWrap组件 import V
  • 【C++ STL学习之四】容器list深入学习

    一 list基础 List使用一个双向链表来管理元素 图一显示了list的结构 图一 list的结构 任何型别只要具备赋值和可拷贝两种性质 就可以作为list的元素 二 list的功能 list的内部结构和vector和deque截然不同
  • 【学习笔记】阮一峰的ES6入门

    let const 块作用域 ES6引入块作用域 考虑到环境导致的行为差异太大 应该避免在块级作用域内声明函数 如果确实需要 也应该写成函数表达式 而不是函数声明语句 let let声明的变量只在它所在的代码块有效 let不允许在相同作用域
  • 蓝桥杯经验贴(第十四届蓝桥杯C++B组)

    个人背景 在参加第十四届蓝桥杯前 系统学过基础算法和简单数据结构 能熟练使用C 编写程序 参加过CCPC河北省赛 力扣通过题数1300 省赛和国赛的准备阶段 在https www dotcpp com https dasai lanqiao
  • 计算机网络:TCP 流量控制

    目录 操作系统缓冲区与滑动窗口的关系 窗口关闭 糊涂窗口综合症 参考资料 发送方在发数据给接收方时 要考虑接收方处理能力 如果一直无脑的发数据给对方 但对方处理不过来 那么就会导致触发重发机制 从而导致网络流量的无端的浪费 为了解决这种现象
  • Kafka集群搭建配置与eagle监控界面

    kafka集群环境搭建 首先在多台机器上搭建配置Kafka环境 可以参考Kafak环境搭建 Kafka kafka环境配置以及参数分析 集群搭建配置 对于kafka来说 一个单独的broker意味着kafka集群中只有一个节点 要想增加ka
  • IPFS环境搭建和用ipfs-api访问ipfs网络

    ipfs是去中心化星际文件系统 本文介绍节点软件ipfs环境搭建和使用方法 学习ipfs api在nodejs代码中访问ipfs网络 一 ipfs节点安装与使用 1 1下载节点软件 到官网下载windows版的ipfs节点软件 32位 64
  • Python 过滤次新股、停牌、涨跌停

    过滤次新股 是否涨跌停 是否停牌等条件 def filcon context bar dict tar list def zdt trade stock context bar dict yesterday history 2 1d clo
  • 【表的完整性约束&外键约束】

    外键约束 今天跟大家聊聊这个外键约束 简单来说呢 就是 嗯 关于两个表的操作 对 就是这样的 来跟我一起看看叭 1 什么是外键约束 外键约束 FOREIGN KEY 缩写FK 是用来实现数据库表的参照完整性的 外键约束可以使两张表紧密的结合
  • 绕坐标轴以及任意轴的旋转矩阵的推导

    概述 本文主要是针对 3D数学基础 图形与游戏开发 这本书的读书笔记 这本书前面部分还是讲得挺好的 有时间还是建议读一下 旋转矩阵的推导 旋转矩阵怎么来的我倒一直都没有概念 这本书里面对旋转矩阵的来历倒是给了我一些启发 首先从二维的旋转矩阵
  • 清华教授熬夜写出来的一套Python学习路线图,真的是yyds!

    首先 我是从零开始学Python的 以前也去过 现在看来我当初走了很多弯路 就把我的经验分享给大家吧 首先也是最重要的 你为什么要学Python 你是想做一个网站 写一个得心应手的工具 还是仅仅通过学校的考试 这极大地影响了你如何学习Pyt
  • xml中xsd/xsi/xsl/xmlns的区别和联系

    2023 01 13Fri才明白 具体解析xml文件的不是xml文件本身 xsi也不是在解析xml文件 只是检验xml文件是否符合标准 xsd是在限制xml文件的内容 而具体解析某个element究竟是什么样式 起到什么作用 是需要接收端自
  • 黑马程序员之---C学习笔记之printf与scanf使用及注意事项

    Java培训 Android培训 iOS培训 Net培训 一 printf函数介绍 printf函数是一个标准库函数 能够以精确的格式输出程序运算的结果 1 格式字符串 是由格式字符 包括 转换说明符 标志 域宽 精度 和普通字符组成 转换