三.C语言的数据类型及参考重点

1.除号(/)的玄机——浮点数除法和整型除法的注意事项?

(1)在C语言中,除号(/)的使用会根据参与运算的数据类型不同而有不同的行为
(2)当两个操作数都是整数时,执行的是整数除法,结果也是整数,小数部分会被舍弃
例如,6 / 4 的结果是 1,而不是 1.5。如果希望得到浮点数的结果,至少有一个操作数必须是浮点数,这时C语言会执行浮点数除法
例如,6.0 / 4 的结果是 1.5。需要注意的是
(3)如果要执行浮点数除法,则至少有一个操作数是浮点数

2.前置后置自增自减究竟怎么算?

(1)在C语言中,自增(++)和自减(–)运算符可以是前置的也可以是后置的
(2)前置++和前置–会先对变量进行自增或自减操作,然后再返回新的值
(3)后置++和后置–会先返回变量的当前值,然后再进行自增或自减操作
(4)前置++或者前置-- 都是先++,后使用,后置++和后置-- 都是先使用,后++,但是不管是哪一种本身都会自增或者自减

3.强制类型转化是什么?

(1)强制类型转化是将变量从一种类型转换为另一种类型的过程
(2)在C语言中,可以使用强制类型转换运算符 (type_name) expression 来实现

例如,(float) 100 会将 100 从整数转换为浮点数,(int)3.14 会将3.14从浮点数转换为整数

4.详解printf函数!

(1)printf 函数是C语言中用于格式化输出的标准库函数

(2)它接受一个格式字符串和一系列参数,根据格式字符串中的指示,将参数格式化为相应的文本输出。格式字符串中的占位符决定了如何格式化输出的数据

例如,%d 用于输出整数,%f 用于输出浮点数,%s 用于输出字符串。printf 函数还支持宽度、精度、对齐方式等格式化选项。

5.占位符是个啥?多个占位符怎么一起使用?

(1)占位符是 printf 函数中用于指示如何格式化输出的特殊字符

(2)它们告诉 printf 函数如何处理接下来的参数,多个占位符可以一起使用,每个占位符对应一个参数

例如,printf(“%d %f”, a, b); 中,%d 和 %f 分别指示 printf 函数以整数和浮点数的格式输出 a 和 b 的值。

6.如何限定输出最小宽度?

(1)在 printf 函数中,可以使用宽度占位符来限定输出的最小宽度

(2)宽度占位符通常以 %m.n 的形式出现,其中 m 是宽度,n 是小数点位数。如果输出的内容少于指定的宽度,printf 会在左侧填充空格以达到宽度要求

例如,printf(“%10.2f”, value); 会以至少10个字符的宽度输出 value,并且保留两位小数。

7.printf输出还能控制左对齐或者右对齐?

(1)printf 函数可以通过在宽度占位符前加上 - 符号来控制输出的对齐方式

(2)%-m.n 表示左对齐,而 %m.n 表示右对齐

例如,printf(“%-10.2f”, value); 会以至少10个字符的宽度左对齐输出 value,并且保留两位小数

8.%*.*f 是个啥?

*(1)%*.f 是 printf 函数中的一个复杂格式化占位符,用于指定输出的宽度和小数点位数

(2)在这个占位符中,第一个 * 是宽度的最大值,第二个 * 是小数点位数

例如,printf(“%*.*f”, width, precision, value); 会以 width 指定的宽度和 precision 指定的小数点位数输出 value。

9.详解scanf!

(1)scanf 函数是C语言中用于从标准输入读取格式化输入的标准库函数

(2)它接受一个格式字符串和一系列地址,根据格式字符串中的指示,将输入的数据格式化为相应的类型并存储到指定的地址。格式字符串中的占位符决定了如何解析输入的数据

例如,%d 用于输入整数,%f 用于输入浮点数,%s 用于输入字符串。scanf 函数还支持宽度、精度、赋值忽略符等格式化选项。

10.什么?vs里不让用scanf?该怎么办!

(1)在某些集成开发环境(IDE)中,如 Visual Studio,可能会建议避免使用 scanf 函数,因为它不如 fgets 和 sscanf 安全

(2)scanf 函数在处理输入时可能会导致缓冲区溢出,尤其是当输入的数据超出了预定的缓冲区大小时

(3)为了避免这种情况,可以使用 fgets 来读取整个行,然后使用 sscanf 来解析该行中的数据。这样可以更好地控制输入的长度,防止缓冲区溢出。

11.缓冲区是啥?竟和scanf有关系?

(1)缓冲区是内存中用于临时存储数据的区域

(2)在 scanf 函数中,缓冲区通常用于存储从标准输入(如键盘)读取的数据。如果输入的数据超出了缓冲区的大小,可能会导致缓冲区溢出,这是一种安全隐患

(3)为了避免这种情况,应该始终检查输入的长度,并确保它不会超过缓冲区的容量

12.浮点数怎么计算机还不能精确存储?

(1)浮点数在计算机中的存储是基于二进制的,而二进制系统无法完美地表示所有的十进制小数

例如,十进制的 0.1 在二进制中是一个无限循环小数,无法精确地用有限的二进制数位来表示

(2)所以,浮点数在计算机中的存储往往是近似值,而不是精确值

13.scanf返回值表示什么?有什么含义?

(1)scanf 函数的返回值表示成功匹配并赋值的输入项的数量

(2)如果 scanf 成功读取了指定数量的输入项,它将返回那个数量。如果遇到输入错误或到达文件末尾,scanf 将返回 EOF(End Of File)

例如,scanf(“%d %f”, &a, &b); 成功读取两个输入项时,将返回 2。如果只读取了一个输入项,将返回 1。如果没有读取任何输入项,将返回 0

(3) scanf()定义: scanf()处理用户输入的原理是,用户的输入先放入缓存,等到按下回车键后,按照占位符对缓存进行解读
解读用户输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符为止

14.多组数据输入如何用scanf实现?

(1)scanf 函数可以通过在格式字符串中使用逗号来分隔不同的输入项,从而实现多组数据的输入

例如,scanf(“%d %d %d”, &a, &b, &c); 将从标准输入读取三个整数,并分别存储在 a、b 和 c 中。如果输入的数据与格式字符串中的占位符匹配,scanf 将继续读取下一个输入项;如果不匹配,scanf 将停止读取,并留下剩余的输入在输入流中。

(2)scanf除了占位符%c,都会忽略空白字符
在使用 scanf 函数时,如果占位符 %c 用于读取字符,因为空格也是字符,所以%c就不会忽略空格

(3)解决方法:如果希望 %c 读取空白字符,可以在 %c 前面加上一个空白字符

例如,scanf(" %c", &ch); 将读取下一个非空白字符并存储在 ch 中,而 scanf(" %c", &ch); 将读取下一个空白字符并存储在 ch 中。

15.scanf里使用%s,遇到空白字符会停止吗?——存储到变量里后会自动存储’\0’

(1)scanf 函数在使用 %s 占位符时,会读取连续的非空白字符,并在找到空白字符时停止读取

(2)读取的字符串会自动在末尾添加空字符 ‘\0’,以形成一个合法的C字符串

例如,scanf(“%s”, str); 将从输入中读取连续的非空白字符并存储在 str 中,直到遇到空白字符为止。

16.赋值忽略符有什么用?

(1)在 scanf 函数中,赋值忽略符 * 用于指示 scanf 读取输入项但不将其存储在任何变量中。这通常用于跳过不需要的输入

例如,scanf(“%d %*c %f”, &a, &b); 将读取一个整数并存储在 a 中,然后忽略下一个字符(无论它是什么),接着读取一个浮点数并存储在 b 中。

  • 20
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值