C语言问题总结(一)

发布于:2025-03-23 ⋅ 阅读:(18) ⋅ 点赞:(0)

一.常量问题

1.整型和实型

问题

解析

A选项用8进制表示,D选项用16进制表示。C选项后缀加L表示为长整型常量。则选B。

总结

整型常量除了可以直接用十进制形式表示,还可以通过八进制(前缀为0)和十六进制(前缀为0x)的形式表示。也可以通过添加后缀,如L表示长整型。

区分实型常量和整型常量很简单,一是看有没有出现小数形式的,二是看有没有出现e或E构成的指数形式的。

问题

总结

实型常量有两种形式:1.十进制小数形式。可以省略小数点前或后的数字,但是不能同时省略。所以问题中的B、D选项正确。     2.指数形式,e或E都可以,表示以10为底的指数。必须满足e(E)前有数,后为整数。则A不正确。

2.字符常量

问题

解析

首先排除D选项,因为不是单引号,不满足字符常量定义。A、B看似都是用转义字符表示,并且A选项是八进制转义,但是数字9不属于八进制(一个八进制数只有0~7),所以错误。B选项用了转义符号,但是没有这个转义字符。

总结

字符常量有两种形式:1.普通字符,单引号中只能是一个字符。   

                            2.转义字符,在单引号中使用\,将其后面的字符转换成另外意义。此形式下也支持用八进制和十六进制转义。  判断转义字符可以从两方面入手:(1)字母可以先看字母个数,超过两个就直接确定不是转义字符。字母个数为1个,则除a、b、f、r、t、v之外都不对。(2)数字就看是否属于八进制和十六进制,注意是否满足各自的规则。

二.运算符问题

1. /和%

/除号在运算时会使左右两边数据类型一致,遇到数据类型不一致时,会在运算过程中执行默认转换,将低精度类型转为高精度类型。    而%取余要求操作数只能为整数。

2.逻辑运算符&&和||

即短路与和短路或,特点就是当第一个满足相应的条件后续表达式不会执行。

问题

解析

首先A、B选项是或的关系,不满足题意直接排除,D选项的意思就是当a不为0时,再判断b是否为0,随后得出结果;当a为0时,该表达式直接为假。

C选项中,假设a本来就是0呢?但是C选项的赋值加非直接将&&左边的逻辑值锁定为真,所以C选项也是错误的。 正确答案应该是D

总结

本题除了考察了&&和||的问题之外,还间接地考察了=和==的区别。

三、四舍五入的问题

1.除号/ 

当两个数为整数的时候,使用/运算后结果仍为整数,假如结果位小数,就要直接舍弃小数部分。

 问题

解析 题中的3/2数学运算下来为1.5,根据规则结果应该为1,再加上前面的1,又因为是double型,所以选C。

2.强制类型转换

当遇到强制类型转换的时候,同样是将小数部分直接舍去。

 问题

解析 x为float类型,但是在输出时,x进行了强制转换,则%d十进制形式输出为4。

2.输出的格式字符%m.nf 

m为指定的数据宽度,n为小数位数。对后一位采取四舍五入方法。

  问题

解析 小数位数为2位,第三位为6可四舍五入 ,则输出的x为213.83。 注意:当指定的数据宽度不足时,直接忽略m的限制,按实际宽度输出。如本题中数据宽度为4,但是整数有3位,还要保留小数点后2位,所以直接忽略,输出为213.83。