wordpress 显示文章,应用商店aso优化,延安市城乡建设局网站,wordpress jquery cdn目录
一、printf()输出函数介绍
二、scanf读取标准输入
#xff08;一#xff09;scanf函数的原理 #xff08;二#xff09;多种数据类型混合输入
三、练习题 今天我们学习printf和scanf读取标准输入。下面我们开始正式的学习吧。 C语言中有很多内置函数#xff0c;今…目录
一、printf()输出函数介绍
二、scanf读取标准输入
一scanf函数的原理 二多种数据类型混合输入
三、练习题 今天我们学习printf和scanf读取标准输入。下面我们开始正式的学习吧。 C语言中有很多内置函数今天我们主要了解printf()函数和scanf()函数C语言常用函数我也列在下图了大家参考学习
一、printf()输出函数介绍
printf函数可以输出各种类型的数据包括整型、浮点型、字符型、字符串型等实际原理是printf函数将这些类型的数据格式化为字符串后放入标准输出缓冲区然后将结果显示到屏幕上。
语法如下: #include stdio.h int printf(const char*format,...) printf函数根据format给出的格式打印输出到stdout标准输出和其他参数中。
字符串格式format 由两部分组成显示到屏幕上的字符和定义printf函数显示的其他参数。我们可以指定一个包含文本在内的format字符串也可以是映射到printf的其他参数和“特殊”字符如下列代码所示 int count 27; printf(Hello %sIve missed you %d times today\n ,HHY,count); 代码的输出如下 Hello HHY Ive missed you 27 times today 其中%s表示在该位置插入首个参数 一个字符串%d表示第二个参数一个整数应该放在哪里。不同的%codes白哦是不同的变量类型也可以限制变量的长度。printf函数的具体代码格式如下表所示
printf函数的具体代码格式 代码格式 %c 字符%d带符号整数 %f 浮点数%s一串字符%u无符号整数%x无符号十六进制数用小写字母%X无符号十六进制数用大写字母%p一个指针%%一个%符号
位于%和格式化命令之间的一个整数被称为最小字段宽度说明符通常会加上空格来控制格式。
用%f精度修饰符指定想要的小数位数。例如%5.2f 会至少显示5位数字并带有 2位小数的浮点数。用%s精度修饰符简单地表示一个最大的长度以补充句点前的最小字段长度。
printf 函数的所有输出都是右对齐的除非在%符号后放置了负号例如%-3.4f 会显示3位字符、4位小数位的浮点数并且左对齐。
下面来看一个例子如下面例子所示。
【例】printf 函数输出对齐
#include stdio.hint main() {int i 42;float f 13.14;printf(Student number %3d grade %3.4f\n,i,f);printf(Student number %-3d grade %3.4f\n,i,f);printf(%12s\n,qualified);return 0;
}执行结果如下图所示可以看到整型数 42 在不加负号时靠右对齐加负号时靠左对齐 %12s 代表字符串共占用12个字符的位置。因为 printf 函数默认靠右对齐所以qualified字符串相对于左边的起始位置有 5个空格的距离。掌握这些内容后在做编程作业时就会很容易掌握打印格式的控制。 二、scanf读取标准输入 如下图所示程序员可以给程序输入数据程序处理后会返回一个输出C语言通过函数库读取标准输入然后通过对应函数处理将结果打印到屏幕上。前面我们学习了printf函数理解了通过printf函数可以将结果输出到屏幕上下面详细讲解标准输入函数scanf 。 一scanf函数的原理
C语言未提供输入/输出-关键字其输入和输出是通过标准函数库来实现的。C语言通过scanf函数读取键盘输入键盘输入又被称为标准输入当scanf函数读取标准输入时如果还没有输入任何内容那么scanf函数会被卡住(专业用语为阻塞) .下面来看一个例子。 【例】
#include stdio.hint main() {int x 10;char c;scanf(%d,x);//注意一定要取地址‘’printf(x %d\n,x);//fflush(stdin);//清空标准输入缓冲区scanf(%c,c);printf(c %c\n,c);return 0;
}执行时输入23然后回车显示运行结果如下图所示。为什么第二个scanf 的数不会被阻塞呢?其实是因为第二个 scanf函数读取了缓冲区中的\n即scanf(%c,c)实现了读取打印其实输出了换行所以不会阻塞。 但是如果我们将上面例子中注释的fflush(stdin)打开就会发现第二个 scanf(%c, c)会阻塞这是什么原因呢?下面介绍缓冲区原理:
行缓冲在这种情况下当在输人和输出中遇到换行符时将执行真正的 I/O 处理操作。这时我们输入的字符先存放到缓冲区中等按下回车键换行时才进行实际的 I/O 操作典型代表是标准输人缓冲区 (stdin) 和标准输出缓冲区 (stdout) , printf 使用的是stdout。
如上面的例子所示我们向标准输人缓冲区中放人的字符为23\n 输入\n 回车 后, scanf 函数才开始匹配scanf 丽数中的%d 匹配整型数23然后放入变量 x 中接着进行打印输出这时 \n 仍然在标准输人缓冲区(stdin) 内如果第二个scanf 的数为 scanf(%d, x)那么依然会发生阻塞因为 scanf 函数在读取整型数、浮点数、字符串后面介绍数组时讲解字符串时会忽略\n 回车符、空格符等字符 忽略是指 scanf 的数执行时会首先删除这些字符然后再阻塞。scanf 函数匹配一个字符时会在缓冲区删除对应的字符。因为在执行 scanf(%c, c)语句时不会忽略任何字符所以 scanf(%c, c)读取了还在缓冲区中残留的\n。 二多种数据类型混合输入
当我们让 scanf 函数一次读取多种类型的数据时对于字符型数据要格外小心因为当一行数据中存在字符型数据读取时读取的字符并不会忽略空格和\n回车符所以使用方法如下例所示编写代码时我们需要在%d与%c 之间加入一个空格输人格式和输出效果如下图所示scanf 函数匹配成功了4个成员所以返回值为4 我们可以通过返回值来判断 scanf 函数匹配成功了几个成员中间任何有一个成员匹配出错后面的成员都会匹配出错。
【例】一次读入多种类型的数据
#include stdio.hint main() {int x,result;char c;float f;result scanf(%d %c%f,x,c,f);//要在%c之前加一个空格printf(x %d,c %c,f %f\n,x,c,f);return 0;
}运行结果如下: 三、练习题 下一期
【C语言】C语言期末突击/考研--整型进制转换