单选题
1、〖第28题〗400) 下列语句的输出结果是()。 printf(”%d\n”,(int)(2.5+3.0)/3);
A
有语法错误不能通过编译
B
2
C
1
D
0
答案解析
正确答案:C
解析:
这道题考查的是 C 语言中的**类型转换**、**运算符优先级**以及**整数除法**的规则。
### 详细解析步骤:
1. **分析表达式结构**:
需要计算的表达式为 `(int)(2.5+3.0)/3`。
根据运算符优先级,括号 `()` 的优先级最高,其次是强制类型转换 `(int)`,最后是除法 `/`。
2. **第一步:计算括号内的加法**
`2.5 + 3.0`
这两个数都是浮点数(double 或 float),直接相加得到结果 **5.5**。
3. **第二步:执行强制类型转换**
`(int)(5.5)`
将浮点数 `5.5` 强制转换为整型 `int`。在 C 语言中,浮点数转整数时会**直接截断小数部分**(而不是四舍五入)。
因此,`(int)5.5` 的结果是 **5**。
4. **第三步:执行整数除法**
`5 / 3`
此时,被除数 `5` 是整数,除数 `3` 也是整数。在 C 语言中,两个整数相除,结果依然是**整数**,小数部分会被舍去。
$5 \div 3 = 1.666...$
取整数部分,结果为 **1**。
5. **第四步:输出结果**
`printf("%d\n", 1);`
格式化字符串 `%d` 用于输出十进制整数,因此最终输出 **1**。
### 选项分析:
* A. 语法正确,可以通过编译。
* B. 如果误以为会四舍五入或者进行了浮点除法,可能会选错,但这里既不是四舍五入也不是浮点除法。
* **C. 正确。** 经过截断和整数除法后结果为 1。
* D. 如果分子小于分母(如 2/3)才会得 0,这里是 5/3。
### 结论:
正确答案是 **C**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第271题 (1.0分) 题号:588 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()。
单选题
1、第270题 (1.0分) 题号:109 C语言中,double类型数据占()。
单选题
1、第269题 (1.0分) 题号:153 在C语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式()。
单选题
1、第268题 (1.0分) 题号:726 fwrite函数的一般调用形式是()。
单选题
1、第267题 (1.0分) 题号:649 若有说明: int a[3][4]={0};则下面正确的叙述是()。
单选题
1、第266题 (1.0分) 题号:635 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
单选题
1、第265题 (1.0分) 题号:512 while(fabs(t)<1e-5)if(!s/10)break;循环结束的条件是()。
单选题
1、第264题 (1.0分) 题号:110 C语言中,char类型数据占()。
单选题
1、第263题 (1.0分) 题号:741 在C程序中,可把整型数以二进制形式存放到文件中的函数是()。
单选题
1、第262题 (1.0分) 题号:648 以下不能对二维数组a进行正确初始化的语句是()。
