C语言如何认识 printf()函数的格式字符?

一、问题

        printf()函数对输出格式到底该如何控制呢?

二、解答

        对不同类型的数据⽤不同的格式字符串,其中常⽤的有以下⼏种格式字符。

1、格式字符d

格式字符d⽤于输出⼗进制整数。有以下⼏种⽤法:

(1)%d

        按整型数据的实际长度输出。

(2)%md

        m 为指定的输出字段的宽度。如果数据的位数⼩于m,则左端补以空格;若⼤于 m,则按实际位数输出。

(3)%ld

        输出长整型数据。

#include <stdio.h>
int main()
{int i, k;long j;i = 12;j = 34567;k = 789;printf("%d,%d\n", i, k);printf("%4d,%2d\n", i, k);printf("%ld\n", j);return 0;
}

输出结果如下

12,78912,789
34567    

 2、格式字符o

        格式字符o⽤于以⼋进制形式输出整数。有以下⼏种⽤法: 

(1)%o

        按整型数据的实际长度输出。

(2)%mo

        m 为指定的输出字段的宽度。如果数据的位数⼩于m,则左端补以空格;若⼤于 m,则按实际位数输出。 

(3)%lo

        输出长整型数据。

#include <stdio.h>
int main()
{int i = 123;printf("%d,%o\n", i, i);return 0;
}

输出结果如下

123,173

 注意:

        由于⼋进制数不带符号,故将内存单元中各位转换成⼋进制时将符号位也⼀起作为⼋进制数的⼀部分输出。

3、格式字符x

        格式字符x⽤于以⼗六进制形式输出整数。有以下⼏种⽤法:

(1)%x

        按整型数据的实际长度输出。

(2)%mx

        m 为指定的输出字段的宽度。如果数据的位数⼩于 m,则左端补以空格, 若⼤于 m,则按实际位数输出。

(3)%lx

        输出⻓整型数据。

#include <stdio.h>
int main()
{int i = 123;printf("%d,%o,%x\n", i, i, i);return 0;
}

输出结果如下

123,173,7b

4、格式字符u

        格式字符u⽤于以⼗进制形式输出⽆符号型数据。 下⾯举例说明格式字符u的具体应⽤。

#include <stdio.h>
int main()
{int i, j;i = -3, j = 3;printf("%d,%d\n", i, j);printf("%u,%u\n", i, j);return 0;
}

输出结果如下

-3,3
4294967293,3

 5、格式字符c

        格式字符c⽤于输出⼀个字符。

说明:

        0~255范围内的整数,也可以⽤字符形式输出。同样,⼀个字符数据也可以⽤整数形式输出。

#include <stdio.h>
int main()
{int i=98;char ch='a';printf("%c,%d\n", i, ch);return 0;
}

输出结果如下

b,97

6、格式字符s

        格式字符s⽤于输出⼀个字符串。有以下⼏种⽤法:

(1)%s

        将字符串按实际长度输出。

(2)%ms

        输出的字符串占 m 列。如果字符串本⾝长度⼤于m,则突破m 的限制, 将字符串全部输出;若字符串长度⼩于 m,则左补空格。

(3)%-ms

        如果字符串长度⼩于m,则在 m列范围内,字符串向左靠,右补空格。

(4)%m.ns

        输出占 m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

(5)%-m.ns

        输出长整型数据。输出占 m 列,但只取字符串中左端 n个字符。这n个字符输出在 m 列的左侧,右补空格。

#include <stdio.h>
int main()
{char *str = "helloworld";printf("%s\n", str);printf("%10.5s\n", str);printf("%-10.2s\n", str);printf("%.3s\n", str);return 0;
}

输出结果如下 

helloworldhello
he        
hel

7、格式字符f

        格式字符f⽤于以⼩数形式输出实型数据。有以下⼏种⽤法:

(1)%f

        不指定字段宽度,整数部分全部输出,⼩数部分输出6位。

(2)%m.nf

        输出的数据占 m 列,其中有n位⼩数。如果数值⻓度⼩于m,则左端补空格。

(3)%-m.nf

        输出的数据占 m列,其中有n位⼩数。如果数值⻓度⼩于 m,则右端补空格。

注意:

        以%f 形式输出的数据并不全都是准确的,只有前7 位数字是有效数字。双精度数同样可⽤%f输出。

#include <stdio.h>
int main()
{float i = 1234.567898765;double j = 1234.567898765;printf("%f\n", i);printf("%15.2f\n", i);printf("%-10.3f\n", i);printf("%f\n", j);return 0;
}

输出结果如下

1234.5678711234.57
1234.568  
1234.567899

8、格式字符e

        格式字符e⽤于以指数形式输出实型数据。有以下⼏种⽤法:

(1)%e

        不指定输出数据所占的宽度和⼩数位数。

(2)%m.ne

        输出的数据占m 位,其中有n位⼩数。如果数值长度⼩于m,则左端补 空格。

(3)%-m.ne

        输出的数据占 m 位,其中有n 位⼩数。如果数值长度⼩于 m,则右端补空格。

注意:

        输出的指数形式中的指数符号“+”算⼀位。

#include <stdio.h>
int main()
{float i = 1234.567898765;double j = 1234.567898765;printf("%e\n", i);printf("%15.2e\n", i);printf("%-10.3e\n", j);return 0;
}

输出结果如下

1.234568e+031.23e+03
1.235e+03 

9、格式字符g

        格式字符g⽤于以%f%e 中较短的输出宽度输出单、双精度实数, 即根据数字的⼤⼩,⾃动选择f格式或e格式。

表⽰输出类型的格式字符含义

d

以⼗进制形式输出带符号整数(正数不输出符号)

o

以⼋进制形式输出⽆符号整数(不输出前缀o)
x以⼗六进制形式输出⽆符号整数(不输出前缀Ox)
u以⼗进制形式输出⽆符号整数
c输出单个字符
s输出字符串
f以⼩数形式输出单、双精度实数
e以指数形式输出单、双精度实数
g以%f%e中较短的输出宽度输出单、双精度实数
说明:(1)除了格式字符x、e、g在使⽤时可以⼤写外,其余格式字符必须⼩写。 
(2)在进⾏字符“%〞的输出时要注意,必须在格式控制中连写两个%,才能得到预期的效果。例如:printf("%d%%",100);    //输出为:100%。    

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年09月CCF-GESP编程能力等级认证Python编程五级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( ) A:输入 B:输出 C:控制 D:记录 答案:A 第2题 以下关于…

【Django】Cookie和Session的使用

Cookies和Session 1. 会话 从打开浏览器访问一个网站&#xff0c;到关闭浏览器结束此次访问&#xff0c;称之为一次会话。 HTTP协议是无状态的&#xff0c;导致会话状态难以保持。 Cookies和Session就是为了保持会话状态而诞生的两个存储技术。 2. Cookies 2.1 Cookies定…

新产品!可视化试卷搭建平台

hi, 大家好, 我是徐小夕. 之前和大家分享了很多可视化低代码和零代码的技术实现和产品设计思路, 也和大家分享了 H5-Dooring 零代码搭建平台的技术实现和未来规划, 今天继续和大家分享一下我们的新产品——橙子试卷. 橙子试卷 是一款可视化试卷/问卷搭建平台, 我们可以通过拖拽…

HttpRunner自动化测试之实现参数化传递

参数化实现及重复执行 参数化测试&#xff1a;在接口测试中&#xff0c;为了实现不同组数据对同一个功能模块进行测试&#xff0c;需要准备多组测试数据对模块进行测试的过程。 在httprunner中可以通过如下方式实现参数化&#xff1a; 1、在YAML/JSON 中直接指定参数列表 2、…

【HarmonyOS应用开发】ArkUI 开发框架-进阶篇-应用弹窗(十一)

一、应用弹窗 1、概述 在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户…

树状数组复习

基本原理 树状数组的原理简单来说就是利用二进制拆分区间 我们可以对一个数进行二进制分解&#xff0c;最多分解成log(x)个数&#xff0c;同样我们可以对[1,n]这个区间进行分解。也是最多log段&#xff0c;每次修改时我们维护受到影响的区间&#xff0c;然后查询时用这log个区…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--大模型、扩散模型、视觉

专属领域论文订阅 关注{晓理紫|小李子}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 为了答谢各位网友的支持&#xff0c;从今日起…

论文阅读:Learning Lens Blur Fields

这篇文章是对镜头模糊场进行表征学习的研究&#xff0c;镜头的模糊场也就是镜头的 PSF 分布&#xff0c;镜头的 PSF 与物距&#xff0c;焦距&#xff0c;光学系统本身的像差都有关系&#xff0c;实际的 PSF 分布是非常复杂而且数量也很多&#xff0c;这篇文章提出用一个神经网络…

数仓建模维度建模理论知识

0. 思维导图 第 1 章 数据仓库概述 1.1 数据仓库概述 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据&#xff0c;借助数据仓库的分析能力&#xff0c;企业可从数据中获得宝贵的信息进而改进决策。同时&#xff0c;随着时间的…

Xlua分析:C#调用Lua

本篇主题是C#如何调用lua的补充。 xLua交互知识 参考官方文档《programming in lua》的第24章开头&#xff0c;里面很详细地阐述了Lua和C是如何实现交互的&#xff1a;栈操作。Lua API用一个抽象的栈在Lua与C之间交换值。栈中的每一条记录都可以保存任何 Lua 值。如果想要从L…

算法42:天际线问题(力扣218题)---线段树

218. 天际线问题 城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度&#xff0c;请返回 由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 buildings 表示&#xff0c;其中三元组 buildings[i] [lefti, righti, heig…

【Spring连载】使用Spring Data访问Redis(九)----Redis流 Streams

【Spring连载】使用Spring Data访问Redis&#xff08;九&#xff09;----Redis流 Streams 一、追加Appending二、消费Consuming2.1 同步接收Synchronous reception2.2 通过消息监听器容器进行异步接收Asynchronous reception through Message Listener Containers2.2.1 命令式I…

【学网攻】 第(20)节 -- 网络端口地址转换NAPT配置

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

Elasticsearch重建索引-修改索引字段类型

如果不允许修改索引字段类型&#xff0c;只能重建索引 步骤 新建一个索引数据迁移删除旧索引别名引用 目录 1、准备工作1.1、查看版本号1.2、创建旧索引1.3、添加两条数据1.4、查看数据 2、新建一个索引2.1、查看旧索引的mapping2.2、新建索引 3、数据迁移3.1、使用异步任务迁…

C语言应用实例——贪吃蛇

&#xff08;图片由AI生成&#xff09; 0.贪吃蛇游戏背景 贪吃蛇游戏&#xff0c;最早可以追溯到1976年的“Blockade”游戏&#xff0c;是电子游戏历史上的一个经典。在这款游戏中&#xff0c;玩家操作一个不断增长的蛇&#xff0c;目标是吃掉出现在屏幕上的食物&#xff0c…

探究 MySQL 中使用 where 1=1 是否存在性能影响

文章目录 前言聊聊 mybatis 中多条件拼接的两种常规写法where 11使用 <where> 标签 性能影响where 11<where> 标签 总结个人简介 前言 最近在项目中使用 mybatis 写 SQL 使用了 where 11 来简化多条件拼接的写法&#xff0c;案例如下&#xff0c;借此聊聊多条件拼…

CTF(5)

一、[SWPUCTF 2021 新生赛]ez_caesar 1、题目 import base64 def caesar(plaintext):str_list list(plaintext)i 0while i < len(plaintext):if not str_list[i].isalpha():str_list[i] str_list[i]else:a "A" if str_list[i].isupper() else "a"…

C++学习Day01之初识C++ Helloworld

目录 一、程序二、输出三、分析与总结 一、程序 #include <iostream> //标准输入输出流 i - input 输入 o - output 输出 stream 流 相当于 stdio.h using namespace std; //使用 标准 命名空间 //程序入口函数 int main() {// cout 标准输出流对象// <&l…

Java学习-案例-ATM系统

案例ATM系统 大致思路&#xff1a; 实现功能&#xff1a; 案例代码&#xff1a; Account类&#xff1a; packageatmDemo; publicclassAccount{ privateStringcardId; privateStringuserName; privatecharsex; privateStringpassWord; privatedoublemoney; privatedoublelimit; …

ICLR 2024 | MolGen: 化学反馈引导的预训练分子生成

MolGen: 化学反馈引导的预训练分子生成 英文题目&#xff1a;Domain-Agnostic Molecular Generation with Chemical Feedback 发表会议&#xff1a;ICLR 2024 论文链接&#xff1a;https://arxiv.org/abs/2301.11259 代码链接&#xff1a;https://github.com/zjunlp/MolGen 目录…