文章目录

  • 前言

    一、创建C语言项目

    二、printf函数介绍

    总结


前言

记录暑假期间自学C语言的小问题和总结


一、创建C语言项目

这里使用的是Visual Studio 2019

首先新建一个C++空项目

然后在项目方案资源管理器中新建一个源文件

因为我们新建的是C语言但是创建项目中是C++的模板

所以需要将新建源文件后缀改为.C即可

如图所示:

最后按照C语言的正常格式进行书写头部文件和主函数

如图:

二、printf函数介绍

C语言本身不提供输入输出语句,输入输出操作是由C标准函数库中的函数来实现的

scanf函数和printf函数

printf函数的一般格式:

printf(格式控制,输出序列)

例如:

printf("%d,%c\n",i,c)

“格式控制” 称为格式控制字符串,简称格式字符串。它包括两个信息:

  1. 格式声明:由%和格式字符组成,如%d、%f等。其作用是将输出的数据转换成指定的格式输出。格式声明总是由%字符开始
  2. 普通字符:即需要在输出时原样输出的字符 如上面printf函数中双引号内的逗号、空格和换行符等等。

输出序列:程序需要输出的一些数据,可以是常量、变量或表达式。

接下来介绍格式字符

1.%d 

用来输出一个有符号的十进制整数

可以在格式声明中指定输出数据的域宽

如用“%5d”,指定输出数据占5列,输出的数据显示在此5列数据的右侧

域宽 其官方说法就是所占的列数

下面来举个例子可能会方便理解一些:

输入下面语句:

printf( "%5d\n%5d\n",12,-345 );

效果:

12(12前面有3个空格)

-345(-345前面有1个空格)

关于域宽如果说还是不太理解可以参考一下这位老哥的博客指定printf输出域宽_bufanq-CSDN博客_c语言域宽

若输出 long(长整型)数据,在格式符d前加字母l(代表long),即%ld。

若输出 long long(双长整型)数据 ,在格式符d前加两个字母ll(代表 long long) 即%lld

2.%c 

用来输出一个字符

例如:

 char ch = 'a';printf( "%c\n", ch );

效果:

3.%s

用来输出一个字符串

例如:

printf( "%s\n", "Chinese" );

效果:

4.%f 

用来输出实数(包括单、双精度、长双精度),以小数形式输出

有几种用法:

1.基本型 用%f

float型 单精度浮点型,对应%f。
double型 双精度浮点型,对应%lf

不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。

一般系统处理的方法:

实数中的整数部分全部输出,小数部分输出6位。

例如:

#include<stdio.h>
int main( ) {double a = 1.0;printf( "%f\n",a/3 );return 0;
}

运行结果:

虽然a是双精度型,a/3的结果也是双精度型,但是用%f格式声明只能输出6位小数

2.指定数据宽度和小数位数 用%m.nf

例如:

#include<stdio.h>
int main( ) {double a = 1.0;printf( "%20.15f\n",a/3 );return 0;
}

指定了数据宽度20位和小数位数15位

运行结果:

这里小数点和0各算一位

注意0前面还有3个空格

所以最后是20位

应该注意:

一个双精度数只能保证15位有效数字的精确度,即使指定小数位数位50(如用%55.50f),也不能保证输出的50位都是有效数字。

效果:

可以看到从第15位开始数字就不再准确了

同理

float型数据的存储只能保证6位的有效数字 double型数据只能保证15位的有效数字 根据实际运算可能会有1位的偏差 ,计算机输出的数字不都是绝对精确的。

例如:

#include<stdio.h>
int main( ) {float a;a = 10000 / 3.0;printf( "%f\n", a );return 0;
}

效果:

本来计算的理论值应为333.33333***,但是由于float型数据只能保证6-7位有效数字,虽然程序输出了6位小数,但从左面第7位数字(即第3位小数)以后的数字并不保证绝对正确。

3. 输出的数据向左对齐 用%-m.nf

在m.n前加一个负号,其作用与%m.nf形式作用基本相同,担当数据长度不超过m时,数据向左靠,右端补空格。

如:

#include<stdio.h>
int main( ) {float a;a = 10000 / 3.0;printf( "%-25.15f,%25.15f\n", a, a );return 0;
}

运行效果:

第一次输出a时输出结果向左端靠,右端空5列。

第二次输出a时输出结果向右端靠,左端空5列。

5.%e

指定以指数形式输出实数
如果不指定输出数据所占的宽度和数字部分和小数位数 编译系统会自动给出数字部分的小数位数为6位,指数部分占5列

数值按照标准化指数形式输出(即小数点前必须有且只有一位非零数字)

例如:

#include<stdio.h>
int main( ) {printf( "%e\n", 123.456 );return 0;
}

运行结果:

小数点后面 字母e的前面占6列 e以及往后占5列

其中e也可以写成大写E形式,不过输出的时候也会输出大写的E

6.其他格式符

  • %i 作用与%d格式符相同 按十进制整型数据的实际长度输出 一般习惯用%d而不用%i
  • %o 以八进制整数形式输出。将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制整数的一部分输出。

例如:

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

运行结果:

-1在内存单元中的存放形式(以补码形式存放在4个字节)如下:

11111111 11111111 11111111 11111111

用%d输出a时,得到-1,按%o输出时,按内存单元中实际的二进制数按3位一组构成八进制形式如上面的32个二进制数可以从右至左每3位为一组:

11,111,111,111,111,111,111,111,111,111,111

对应的十进制数就是3 7 7 7 7 7 7 7 7 7 7

即最终输出数

如果说对而原码、补码等和二进制、八进制等相关的知识还不太了解,可以查阅数据结构计算机组成原理等书

  • %x 以十六进制行书输出整数
  • %u 用来输出无符号型数据 以十进制整数形式输出
  • %g 用来输出浮点数 系统自动选f格式或e格式输出 选择里面长度较短的格式 不输出无意义的0

总结

本文前半部分介绍了C的运行环境和新建项目方法

后半段较为详细的介绍了在C语言中printf函数中的各个格式字符作用,往后会对其他函数进行总结

C语言程序设计中用printf函数输出数据相关推荐

  1. c语言之printf函数输出字符数据

    //用printf函数输出字符数据 #include <stdio.h> int main() {//定义两个变量char c = 'a';int i = 97;//输出变量%c以字符形式 ...

  2. C语言学习之编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符

    编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符.思考以下问题: (1)变量cl和c2应定义为字符型,整型还是二者皆可? (2)要求输 ...

  3. c语言可以利用数组处理批量数据库,C语言程序设计 利用数组处理批量数据.ppt...

    C语言程序设计 利用数组处理批量数据.ppt 6. strlen函数----测字符串长度的函数 其一般形式为: strlen (字符数组) 它是测试字符串长度的函数 函数的值为字符串中的实际长度 6. ...

  4. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  5. c语言第八章函数程序设计,C语言程序设计-第八章 函数.ppt

    C语言程序设计-第八章 函数 函数分类(从用户使用角度 ) 1.标准函数(库函数,由系统提供 ): 例如:printf 函数 .sqrt函数. 2.用户自定义函数: 例如,上面程序中的max 函数. ...

  6. c语言中,x-y,'105',ab,7f8那个是正确的,C语言程序设计_第三章 数据.ppt

    C语言程序设计_第三章 数据 * 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型 学习运算符应注意 * 基本算术运算符: + - * / % 结合方向: ...

  7. c语言程序设计 函数说课,《C语言程序设计》之函数说课课件.ppt

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 <C语言程序设计>之函数说课课件.p ...

  8. C语言小知识---printf()函数转换符的意义

      printf()函数大家已经很熟悉了,它的转换符在打印数据的时候也会经常使用,比如%c,%d,%f等.那么为什么打印的时候一定需要转换符呢?系统难道不能自动识别吗?转换符存在的意义又是什么?    ...

  9. c程序设计语言中printf,编程序 用getchar函数读入两个字符c1和c2,然后分别用putchar和printf函数输出这两个字符。请问...

    编程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar和printf函数输出这两个字符.请问: 1. 变量C1,C2应定义为字符型或整型?或二者皆可? 答:在这个题目里,变量C ...

最新文章

  1. Apache端口设置多域名和转发请求(虚拟域名)
  2. 用lemon测交互题
  3. nginx源码分析(2)——http模块的初始化过程
  4. http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=122threadID=9172tstart=0
  5. “管家婆”软件用于维修管理 (转)
  6. 这几天心里颇不宁静,采的不是信号,而是寂寞
  7. Python修改图片像素值(变彩色为黑白)
  8. 小博老师收集Java经典面试题 ——Servlet和JSP常见面试题
  9. 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆
  10. 微信小程序--引用第三方组件
  11. 使用Altium Designer 18绘制stm32最小系统的电路原理图
  12. Linux网络与配置
  13. 核心期刊《法医学杂志》
  14. 第6讲:SQL语句之DQL类型的数据查询语言
  15. 关于synchronized的介绍
  16. uni-app实现二维码以及小程序实现二维码
  17. 华为开放平台错误与异常机制
  18. 四旋翼与固定翼的空中对接降落
  19. C语言实现三子棋(九宫格)的游戏
  20. java datarow_DataTable、DataRow、DataColumn用法

热门文章

  1. 一年级人教版英语教案二-Leo老师
  2. jQuery form插件的使用--ajaxForm()和ajaxSubmit()的可选参数项对象
  3. a标签的使用--发送电子邮件(mailto)
  4. android 设置画布大小设置,设置画布大小 - Android
  5. pycharm 导入python环境
  6. 2021:Improved RAMEN: Towards Domain Generalization for Visual Question Answering
  7. IOS 应用关闭屏幕锁定分析
  8. 蓝桥杯单片机——DAC转换输出电压
  9. html实现点击拨打电话功能
  10. 活动 | 今年绝不是简单的“双11”,APExBIO组学狂热升级