C语言各种类型数据的输出显示
之前我们使用 puts 来输出字符串。puts 是 output string 的缩写,只能用来输出字符串,不能输出整数、小数、字符等,我们需要用另外一个函数,那就是 printf。
printf 比 puts 更加强大,不仅可以输出字符串,还可以输出整数、小数、单个字符等,并且输出格式也可以自己定义,例如:
以十进制、八进制、十六进制形式输出;要求输出的数字占 n 个字符的位置;控制小数的位数。
**printf 是 print format 的缩写,意思是“格式化打印”。**这里所谓的“打印”就是在屏幕上显示内容,与“输出”的含义相同,所以我们一般称 printf 是用来格式化输出的。
示例
printf("今天天气晴朗");
这个语句可以在屏幕上显示“今天天气晴朗”,与puts(“今天天气晴朗”);的效果类似。
输出变量 abc 的值:
int abc=333;
printf("%d", abc);
这里就比较有趣了。先来看%d,d 是 decimal 的缩写,意思是十进制数,%d 表示以十进制整数的形式输出。输出什么呢?输出变量 abc 的值。%d 与 abc 是对应的,也就是说,会用 abc 的值来替换 %d。
下面我们来看个复杂点的:
int abc=999;
printf("The value of abc is %d !", abc);
会在屏幕上显示:
The value of abc is 999 !
字符串 “The value of abc is %d !” 中的 %d 被替换成了 abc 的值,其他字符没有改变。这说明 %d 比较特殊,不会原样输出,会被替换成对应的变量的值。
再来看:
int a=100;
int b=200;
int c=300;
printf("a=%d, b=%d, c=%d", a, b, c);
会在屏幕上显示:
a=100, b=200, c=300
再次证明了 %d 与后面的变量是一一对应的,第一个 %d 对应第一个变量,第二个 %d 对应第二个变量……
%d称为格式控制符,它指明了以何种形式输出数据。格式控制符均以%开头,后跟其他字符。%d 表示以十进制形式输出一个整数。除了 %d,printf 支持更多的格式控制,例如:
%c:输出一个字符。c 是 character 的简写。%s:输出一个字符串。s 是 string 的简写。%f:输出一个小数。f 是 float 的简写。
printf 支持更加复杂和优美的输出格式。
我们的完整程序
#include <stdio.h>
int main()
{int n = 100;char c = '@'; //字符用单引号包围,字符串用双引号包围float money = 93.96;printf("n=%d, c=%c, money=%f\n", n, c, money);return 0;
}
输出结果:
n=100, c=@, money=93.959999
程序解析
1 . \n是一个整体,组合在一起表示一个换行字符。换行符是 ASCII 编码中的一个控制字符,无法在键盘上直接输入,只能用这种特殊的方法表示,被称为转义字符。
所谓换行,就是让文本从下一行的开头输出,相当于在编辑 Word 或者 TXT 文档时按下回车键。
puts 输出完成后会自动换行,而 printf 不会,要自己添加换行符,这是 puts 和 printf 在输出字符串时的一个区别。
2 . //后面的为注释。注释用来说明代码是什么意思,起到提示的作用,可以帮助我们理解代码。注释虽然也是代码的一部分,但是它并不会给程序带来任何影响,编译器在编译阶段会忽略注释的内容,或者说删除注释的内容。
3 . money 的输出值并不是 93.96,而是一个非常接近的值,这与小数本身的存储机制有关,这种机制导致很多小数不能被精确地表示,即使像 93.96 这种简单的小数也不行。
我们不用变量,将数据直接输出:
#include <stdio.h>
int main()
{float money = 93.96;printf("n=%d, c=%c, money=%f\n", 100, '@', money);return 0;
}
输出结果与上面相同。
编程中,我们会经常使用 printf,说它是C语言中使用频率最高的一个函数一点也不为过。
%ds输出什么
%d 输出整数,%s 输出字符串,那么 %ds 输出什么呢?
示例
#include <stdio.h>
int main()
{int a=5555;printf("a=%ds\n", a);return 0;
}
运行结果:
a=5555s
从输出结果可以发现,%d被替换成了变量 a 的值,而s没有变,原样输出了。这是因为, %d才是格式控制符,%ds在一起没有意义,s仅仅是跟在%d后面的一个普通字符,所以会原样输出。
那么如何在字符串中书写长文本
假设现在我们要输出一段比较长的文本,它的内容为:
我们说的是汉语,是“中国语言”,只要把我们的需求告诉父母,父母就会满足,我们用“中国语言”来控制父母,让父母做我们喜欢的事情。
如果将这段文本放在一个字符串中,会显得比较臃肿,格式也不好看,就像下面这样:
当文本超出编辑窗口的宽度时,可以选择将文本换行,也可以选择将文本隐藏(可以在编辑器里面自行设置),但是不管哪种形式,在一个字符串里书写长文本总是不太美观。
当然,你可以多写几个 puts 函数,就像下面这样:
我不否认这种写法也比较美观,但是这里我要讲的是另外一种写法:
#include <stdio.h>
int main()
{
puts(
“我们说的是汉语,是“中国语言”,只要把我们的需求告诉父母,”
“父母就会满足,我们用“中国语言”来控制父母,”
“让父母做我们喜欢的事情。”
);
return 0;
}
在 puts 函数中,可以将一个较长的字符串分割成几个较短的字符串,这样会使得长文本的格式更加整齐。
注意,这只是形式上的分割,编译器在编译阶段会将它们合并为一个字符串,它们放在一块连续的内存中。
多个字符串并不一定非得换行,也可以将它们写在一行中,例如:
#include <stdio.h>
int main()
{
puts(“今天” “明天” “后天”);
return 0;
}
我们所说的 puts、printf,以及 fprintf、fputs 等与字符串输出有关的函数,都支持这种写法。
如果感觉不错请点赞哟!!!
C语言各种类型数据的输出显示相关推荐
- c 语言bool 类型数据_C ++中的bool数据类型
c 语言bool 类型数据 In C++ programming language, to deal with the Boolean values – C++ added the feature o ...
- c语言中数据精度发生错误,C语言Double类型数据保证精度有关问题
C语言Double类型数据保证精度问题 我用手算算出的数据为-1.35323517,但是在C语言里面为了保证数据精度,VC++运行的结果为-1.35323517024517 ,按说应该在-1.3532 ...
- 用C语言解“混合类型数据格式化输出”题
7-6 混合类型数据格式化输入 本题要求编写程序,顺序读入浮点数1.整数.字符.浮点数2,再按照字符.整数.浮点数1.浮点数2的顺序输出. 输入格式: 输入在一行中顺序给出浮点数1.整数.字符.浮点数 ...
- R语言学习笔记--数据框输出和查看
(1)将数据框C输出为.csv文件 write.table(C,file="ABC.csv",sep = ",",row.names=FALSE) #A ...
- c语言之数组数据倒序输出的快速方法和scanf的一种不常用用法的笔记
1.异或符^可以用于两个值的互换 互换公式: a=a∧b; b=b∧a; a=a∧b; 原理在于二进制数的互换,例如a=3,b=4时,二进制a=0x0011,b=0x0100; a=a^b=0x011 ...
- c语言double类型数据四舍五入
借助math库的round函数 #include <math.h> double ext_round(double data, int precision) {double base = ...
- python Django 学习笔记 2020-11-6(input不显示提示信息,日历,datetime类型数据的显示,使用装饰器实现登录限制,文字下划线)
1.input不显示提示信息 添加属性autocomplete="off".如: <input type="text" class="input ...
- c语言使用double时 %,c语言double类型的输入
c语言double类型数据四舍五入 借助math库的round函数 #include double ext_round(double data, int precision) { , precisio ...
- R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字、并为类型数据添加图像符号标签
R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字.并为类型数据添加图像符号标签 目 ...
最新文章
- 李宏毅机器学习自己的笔记(一)----------Introduction of MachineLearning
- IO消耗和处理器消耗
- Java规范请求中的数字
- ASP.NET操作简单的xml,增删改查
- 比豆二机器人好的机器人_扫地机器人和吸尘器哪个好
- 面向对象举例(一) —— 顶点(vertex)、边(edge)与图(graph)
- 在场景中添加光线——在反光表面添加镜面高光
- Kotlin 1.0 正式版发布啦
- MFC DoDataExchange()绑定技术
- 哲学家进餐问题的模拟【操作系统】
- 计算机老是不断重启是什么原因,电脑一直自动重启是什么原因?(盘点电脑老是自动重启的原因!)...
- Gensim介绍以及实践
- (c++)五分制成绩(函数实现)
- Windows无法访问网络共享解决办法
- java火焰评测_JAVA性能分析之使用火焰图
- 音视频开发学习(三) -- RGB YUV HSV 颜色空间
- matlab pls分析,求助确定PLS的最佳潜变量的代码
- 在java中有以下代码_集成电路引脚排列应该是______。
- 软件案例分析:商业音乐软件还是开源音乐软件?
- 数据库MySQL总结(一)SQL语句
热门文章
- oracle 随机排列,oracle的随机排序
- 内网python 仓库_GitHub - xanarry/LanTrans-desktop: 这是一个用python写的局域网传文件工具, 跨平台, 仓库中还有安卓版的工程...
- 主板后置音频接口图解_颜值出众、用料靠谱——华擎(ASRock)Z490 Extreme4极限玩家主板 简析...
- Win11锁屏快捷键是什么 Win11锁屏的方法
- SpringBoot默认日志logback配置解析
- python标准库os的方法listdir_使用python标准库快速修改文件名字
- java失败javac成功_JAVA SE JDK-10安装、配置(解决java成功,javac失败问题)
- 的mvc_简述PHP网站开发的MVC模式
- 如何设置oracle_home变量,oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?
- linux命令提示符不同,Linux命令提示符如何按照自己的习惯修改?