【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(六)
🔥个人主页:艾莉丝努力练剑
❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题
🍉学习方向:C/C++方向
⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平
前言: 我们在学习过程中会碰到很多很多问题,本系列文章不会博主不会额外再创建一个新的专栏来收录,因为这一系列文章创作的初心主要是针对回顾知识点(遵循遗忘曲线并且根据自身的实际情况可以做出一些计划,回顾知识点很重要)、缓解学习过程中的可能出现的焦虑等等。主包就不另外开一个专栏了,uu们可以把本系列的文章作为【C语言】专栏的后日谈来看。
主包学习能力比较一般,学起语言、算法无论是花费的时间精力还是取得的成效和大佬们完全无法比。主包起步也比较晚,主包正儿八经开始学C++是从今年的4月24号开始的,主包学习能力真的很一般,C语言这个基础也不扎实,看主包文章的诸位一定是比主包要强的,但主包学习过程中碰到的麻烦、思考、和做的知识点回顾对大家还是有用的。
目录
正文
三、知识点回顾
(九)占位符
1、scanf和printf
2、占位符
3、总结
(1)常见的输出占位符
(2)输入占位符
(3)占位符的修饰符
(4)注意
4、回顾
结尾
正文
三、知识点回顾
(九)占位符
1、scanf和printf
scanf 和 printf ——>表示可以定制输出文本的格式。
这个“f” 是format,格式化的意思。
我们这里也是举个例子:
printf("Hello\n");
printf("World\n");
printf("Hello\nWorld\n");
我们来看一看getchar和putchar——
getchar();
//光标的闪烁
// //读取一个字符
// //输入一个字符,输出
//getchar只针对字符,只能读字符
//putchar只能输出字符
getchar//读取
putchar//输出
#include<stdio.h>int main()
{int ch = getchar();printf("%c\n", ch);putchar(ch);//把ch打印在屏幕上return 0;
}
//占位符的第一个字符一律为百分号%
%s
int main()
{printf("zhansan says it is 10 o'clock\n");printf("%s says it is %d o'clock\n", "zhangsan", 10);return 0;
}
注意:
键盘敲的任何字都会被当成字符,如2会被当成字符2。
2、占位符
%i ≈ %d 整数
下面是博主在单目操作符++、--的前置后置知识点总结,printf函数的一些知识点一文中对占位符的列举,大家可以再回顾一遍,加粗的字重点关注一下——
%a :十六进制浮点数,字母输出为小写。
%A :十六进制浮点数,字母输出为大写。
%c :字符。// char
%d :十进制整数。// int
%e :使用科学计数法的浮点数,指数部分的 e 为小写。
%E :使用科学计数法的浮点数,指数部分的 E 为大写。
%i :整数,基本等同于%d 。
%f :小数(包含 float 类型、double 类型)。//float——%f,double——%lf
%g :6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e为小写。
%G :等同于%g ,唯一的区别是指数部分的E为大写。%hd :十进制 short int 类型。
%ho :八进制 short int 类型。
%hx :十六进制 short int 类型。
%hu :unsigned short int 类型。
%ld :十进制 long int 类型。
%lo :八进制 long int 类型。
%lx :十六进制 long int 类型。
%lu :unsigned long int 类型。
%lld :十进制 long long int 类型。
%llo :八进制 long long int 类型。
%llx :十六进制 long long int 类型。
%llu :unsigned long long int 类型。
%Le :科学计数法表示的 long double 类型浮点数。
%Lf :long double 类型浮点数。
%n :已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
%o :八进制整数。
%p :指针(用来打印地址)。
%s :字符串。
%u :无符号整数(unsigned int)。
%x :十六进制整数。
%zd : size_t 类型。
%% :输出一个百分号。//不是转义
%zu:sizeof、strlen。
注意:
有符号整数——%d打印,
无符号整数——%u打印,
不要交错,要匹配。
3、总结
在C语言中,占位符主要用在 printf 和 scanf 等函数中,用于格式化输入输出。每个占位符都对应一种数据类型,并控制如何将变量转换为字符串进行显示或读取。
(1)常见的输出占位符
以下是一些常用的输出占位符及其用途:
%d
或%i
:用于输出十进制整数。
%u
:用于输出无符号整数。
%f
:用于输出浮点数,默认情况下会显示小数点后六位2。
%c
:用于输出单个字符。
%s
:用于输出字符串。
%p
:用于输出指针地址,通常以十六进制形式表示。
%n
:用于记录已输出的字符数量,并将其存储到对应的整型变量中。
%o
:用于输出八进制整数。
%x
或%X
:用于输出十六进制整数,前者使用小写字母,后者使用大写字母。
%e
或%E
:用于输出科学计数法表示的浮点数,分别使用小写e
和大写E
表示指数部分。
%g
或%G
:根据数值大小自动选择%f
或%e
/%E
格式进行输出。
%l
:用于表示长整型(如%ld
)或双精度浮点数(如%lf
)。
%L
:用于表示长双精度浮点数(如%Lf
)。
%%
:用于输出一个百分号本身。
例如,下面是一个简单的程序展示如何使用这些占位符:
#include <stdio.h>int main()
{int a = 66;float f = 2.4;char c_data = '*';printf("变量a=%d\n", a); // 输出十进制整数printf("十六进制变量a=%x\n", a); // 输出十六进制整数printf("有一个小数点的数据=%.2f\n", f); // 控制小数点后两位printf("输出一个字符=%c\n", c_data); // 输出字符return 0;
}
(2)输入占位符
在 scanf 函数中,占位符用于从标准输入中读取特定类型的值。常见的输入占位符包括:
%d
:读入十进制整数。
%i
:读入十进制、八进制或十六进制整数。
%u
:读入无符号十进制整数。
%f
或%F
、%e
、%E
、%g
、%G
:用于输入实数,可以是小数形式或指数形式。
%c
:读入一个字符。
%s
:读入一个字符串,遇到空格、制表符或换行符时停止。
%p
:读入一个指针。
%o
:读入八进制整数。
%x
或%X
:读入十六进制整数。
%[]
:扫描字符集合,常用于指定允许输入的字符范围。
%%
:读入一个百分号本身。
以下是一个使用 scanf 的示例:
#include <stdio.h>int main()
{int num;float decimal;char ch;printf("请输入一个整数、一个小数和一个字符:");scanf("%d %f %c", &num, &decimal, &ch);printf("你输入的是:%d, %.2f, %c\n", num, decimal, ch);return 0;
}
(3)占位符的修饰符
还可以通过修饰符来进一步控制占位符的行为,例如:
(1)宽度指定:可以在占位符前加上数字,表示最小字段宽度。例如,
%10d
表示至少占用10个字符宽度输出整数。(2)精度指定:对于浮点数,可以通过
.n
指定小数点后的位数,如%.2f
表示保留两位小数。(3)左对齐:默认情况下,输出是右对齐的;如果希望左对齐,可以在宽度前面加
-
,如%-10s
。(4)前缀修饰符:如
%ld
表示长整型,%lf
表示双精度浮点数等。
(4)注意
(1)使用占位符时,必须确保变量类型与占位符匹配,否则可能导致未定义行为;
(2)在 scanf 中,除了 %c 和 %[...]外,其他占位符会自动跳过前导空白字符;
(3)如果需要读取包含空格的字符串,应使用 fgets 而不是 scanf
("%s",……)
。
4、回顾
printf("%10.2f\n", 123.4567);
printf("%*.*f\n", 10, 2, 123.4567);
像这两个代码其实是同理的,我们通过画图理解一下——
%10.2f 表示输出字符串中最小宽度为10,所以输出字符串头部有两个空格。
结尾
下一篇文章的更新应该会隔蛮长一段时间,会回顾scanf、switch语句等知识点,敬请期待!
只要是主动学习,只要你有兴趣,只要你喜欢学,到处是时间。
往期回顾:
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(五)
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(四)
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(三)
【计算机语言选择规划】全是干货!从难度、就业、岗位选择、薪酬待遇、未来发展等方面详解第一门主流语言学习的选择
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(二)
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(一)